Hospedar o Listmonk em um VPS gerenciado é guardar suas listas de assinantes e suas campanhas em uma máquina própria, que nossas equipes mantêm atualizada e supervisionam dia e noite. O Listmonk é um software livre sob a licença AGPL-3.0. Este guia segue a documentação oficial dele: a versão a escolher, Docker Compose, PostgreSQL, HTTPS, o envio por SMTP, os bounces, o consentimento, os backups e as atualizações.
Por Simon Vasconcelos Lee
Publicado em 12 de novembro de 2026Leitura: 13 minutos
pg_dump antes de cada atualização.O Listmonk gerencia suas listas de distribuição e suas newsletters a partir de uma interface web. É um programa único, escrito em Go, cuja única dependência é o PostgreSQL. As listas dele são de mão única: você escreve a seus assinantes, e não se trata de uma lista de discussão entre eles.
O Listmonk é publicado sob a licença GNU AGPL versão 3. Você pode usá-lo, inclusive em uma empresa, e enviar suas campanhas e as de seus clientes, sem licença a comprar. Resta o custo do servidor e o de seu serviço de envio.
O artigo 13 acrescenta uma condição própria da AGPL: se você modificar o programa, sua versão deve propor claramente a todos que a usam à distância, pela rede, obter o código-fonte dela, gratuitamente. Se você distribuir cópias, as obrigações de compartilhamento de código da licença também se aplicam. Rodar o Listmonk sem modificá-lo não aciona esse artigo.
Um ponto a conhecer antes de começar. No GitHub, a etiqueta “Latest” designa neste momento a v7.0.0-beta.2, de 10 de novembro de 2026, que o próprio projeto apresenta como uma beta. A última versão estável é a v6.2.0, que traz correções de segurança nas permissões. Em 11 de novembro de 2026, a imagem Docker latest designa essa v6.2.0.
| Versão | Imagem Docker | Estado |
|---|---|---|
| v6.2.0 | listmonk/listmonk:v6.2.0 | Estável: a deste guia |
| v7.0.0-beta.2 | listmonk/listmonk:beta | Beta: a experimentar em uma cópia, com um backup |
| nightly | listmonk/listmonk:nightly | Não testada, segundo o projeto: por sua conta e risco |
A versão 7 substitui toda a interface de administração, muda alguns endereços dela, transforma a configuração app.from_email em uma lista de endereços e modifica chaves de tradução, o que afeta os modelos personalizados. Leia as notas de versão dela antes de passar para ela.
O arquivo Compose do projeto executa --upgrade --yes a cada inicialização: uma nova imagem migra o banco sem perguntar. Ora, um banco migrado não pode ser relido por uma versão mais antiga, e voltar atrás obriga a restaurar um backup. Com uma tag fixa, como v6.2.0, a mudança de versão continua sendo decisão sua.
O projeto recomenda o Docker Compose: o arquivo dele inicia o Listmonk e o PostgreSQL juntos. Em um servidor com o Docker instalado, crie uma pasta e baixe esse arquivo:
mkdir listmonk
cd listmonk
curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml
O projeto pede para adaptar esse arquivo a seu ambiente. Estas são as únicas linhas a mudar, o restante não se mexe:
x-db-credentials: &db-credentials
POSTGRES_USER: &db-user listmonk
POSTGRES_PASSWORD: &db-password un-mot-de-passe-long
POSTGRES_DB: &db-name listmonk
services:
app:
image: listmonk/listmonk:v6.2.0
ports:
- "127.0.0.1:9000:9000"
hostname: listmonk.example.com
listmonk como valor inicial. Mude-a antes da primeira execução, pois a imagem PostgreSQL só lê essa variável em uma pasta de dados vazia.latest, pela razão vista acima.127.0.0.1: é uma adaptação nossa. O arquivo do projeto publica a porta 9000 sem limite de endereço e já limita o PostgreSQL ao endereço local. Tratado da mesma forma, o Listmonk só é acessado pelo proxy reverso.Inicie em seguida os serviços, criando de antemão a conta Super Admin. Essas duas variáveis só servem na primeira execução, e sem elas a conta é criada na primeira visita à interface: melhor que ela exista antes de abrir seu domínio.
LISTMONK_ADMIN_USER=votre-identifiant LISTMONK_ADMIN_PASSWORD=votre-mot-de-passe docker compose up -d
O Listmonk também roda como programa isolado, ao lado de seu próprio servidor PostgreSQL, na versão 12 ou mais recente, com o banco já criado.
listmonk_6.2.0_linux_amd64.tar.gz, evitando a beta exibida no topo, e extraia o binário.config.toml../listmonk --new-config
./listmonk --install
./listmonk
Por padrão, o config.toml escuta em localhost:9000, o que serve atrás de um proxy reverso. O repositório fornece um arquivo de serviço listmonk@.service para o systemd.
O site do projeto cita uma instância de produção que envia uma campanha de mais de 7 milhões de e-mails com uma fração de um núcleo de processador e um pico de 57 MB de memória. Ele não publica mínimo nem número para o PostgreSQL, cujo volume cresce com seus assinantes, suas aberturas e seus cliques. Em um VPS gerenciado, descreva-nos o uso e recomendamos o tamanho adequado.
Seus assinantes clicam em links que apontam para sua instância: descadastro, confirmação, rastreamento de cliques. Ela é servida, portanto, em HTTPS e em um nome de domínio próprio. Crie os registros A e AAAA desse nome apontando para seu servidor, onde os visitantes chegam pelas portas 80 e 443. A documentação do Listmonk deixa a escolha do proxy; estas são duas configurações comuns.
O Caddy obtém e renova sozinho o certificado:
listmonk.example.com {
reverse_proxy 127.0.0.1:9000
}
Por padrão, o Nginx recusa requisições com mais de 1 MB, com um erro 413. Para importar um arquivo de assinantes ou imagens, aumente esse limite conforme o tamanho de seus arquivos:
server {
listen 80;
listen [::]:80;
server_name listmonk.example.com;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Em seguida, o Certbot instala o certificado Let's Encrypt e o redirecionamento para HTTPS, e depois renova o certificado por conta própria:
sudo certbot --nginx -d listmonk.example.com
Conecte-se em https://listmonk.example.com/admin e abra “Settings”:
https://listmonk.example.com. O Listmonk tira dele os links de descadastro, de confirmação e de rastreamento de seus e-mails. O valor inicial, http://localhost:9000, não funcionaria para seus assinantes./listmonk/uploads, a pasta que o arquivo Compose monta no servidor.Para filtrar o acesso, por endereço IP ou por um proxy de autenticação, a documentação divide assim as rotas:
| Rotas | Função | Acesso |
|---|---|---|
/admin/*, /api/*, /webhooks/bounce | A administração, a API dela e o webhook de bounces interno | Privado |
/subscription/*, /public/* | As páginas de inscrição e os arquivos delas | Público |
/link/*, /campaign/* | O rastreamento de links e o pixel de rastreamento | Público |
/webhooks/service/* | Os bounces enviados por seu serviço de envio | Público |
/uploads/* | As imagens de seus e-mails | Público |
O Listmonk prepara e cadencia seus e-mails e depois os entrega aos servidores SMTP que você declarar em “Settings”, “SMTP”. Ele não os entrega por conta própria às caixas de seus assinantes: a qualidade da entrega depende, portanto, desse servidor, de seu domínio e de suas listas.
Para um envio em volume, escolha um serviço de envio especializado: ele carrega a reputação de seus envios e as assinaturas de seu domínio, e sabe devolver os bounces. A partir de um VPS Simafri, o envio passa por um relay SMTP autenticado, na porta 587: aqui, o desse serviço.
Para se orientar, a documentação do Listmonk descreve os bounces do Amazon SES, do Azure Communication Services, do SendGrid, do Postmark, do Forward Email e do Lettermint. Compare-os conforme seu volume e seus destinatários.
| Configuração | Valor | O que você verifica |
|---|---|---|
| Host | O endereço SMTP de seu serviço | Substitui o valor de exemplo fornecido |
| Port | 587 | As predefinições da tela costumam propor outra porta: volte para a 587 |
| TLS | STARTTLS | Combina com a porta 587 |
| Auth protocol | O de seu serviço, muitas vezes LOGIN | Com o usuário e a senha SMTP do serviço |
Clique então em “Test connection”: o Listmonk envia uma mensagem de teste e mostra o erro do servidor se o envio falhar. Você pode declarar vários servidores, escolher um deles por campanha ou direcionar os envios conforme o endereço ou o domínio do remetente.
Ajuste-a em “Settings”, “Performance”, abaixo do limite de seu serviço:
Uma mensagem que falha é repetida conforme a configuração “Retries”, em outras conexões do servidor. Se falhar de novo, o Listmonk a registra como erro e passa à seguinte: acompanhe esses erros durante uma campanha grande.
Hospedar a aplicação deixa esses assuntos em suas mãos, e são eles que decidem se seus e-mails chegam.
Envie a partir de um endereço de seu domínio e publique na zona DNS dele os registros SPF e DKIM que seu serviço de envio fornecer, com um registro DMARC. O Google exige os três de quem envia mais de 5.000 mensagens por dia para contas Gmail, com um domínio de envio alinhado ao SPF ou ao DKIM, o descadastro com um clique para as mensagens de marketing e uma taxa de denúncias de spam abaixo de 0,30%, idealmente abaixo de 0,10%.
{{ UnsubscribeURL }} no rodapé de seu modelo. Esse link leva ao gerenciamento de preferências e ao descadastro.O Listmonk aplica o tipo de lista que você escolher. Em uma lista em simple opt-in, um assinante adicionado sem confirmação recebe suas campanhas mesmo assim. Em uma lista em double opt-in, ele recebe primeiro um e-mail de confirmação, e só os assinantes confirmados recebem suas campanhas. É a escolha que melhor protege sua reputação de envio e que mantém um registro claro do consentimento.
As regras dependem do país de seus destinatários. Na França, por exemplo, a CNIL exige o consentimento prévio das pessoas físicas, por uma ação positiva, como uma caixa não pré-marcada, com uma exceção para seus clientes sobre produtos ou serviços semelhantes. Entre empresas, a prospecção pode se basear no interesse legítimo se disser respeito à atividade profissional delas. Em todos os casos, cada mensagem identifica o remetente e oferece um meio simples de recusar as seguintes.
Escreva somente a pessoas que esperam suas mensagens. Uma lista comprada ou antiga faz subir os bounces e as denúncias de spam, e é seu domínio que arca com as consequências.
O pixel de rastreamento e o rastreamento de cliques tocam a privacidade, e a documentação pede para usá-los respeitando regras como o GDPR. Por padrão, esse rastreamento não é vinculado a cada assinante: a opção “Individual subscriber tracking” o vincula, e “Disable tracking” o desliga por completo, em “Settings”, “Privacy”.
Continuar escrevendo a um endereço que rejeita suas mensagens prejudica sua reputação de envio. O tratamento dos bounces vem desativado: ative-o em “Settings”, “Bounces” e escolha um destes dois caminhos.
https://listmonk.example.com/webhooks/service/ses, com a última palavra mudando conforme o serviço. Esse endereço deve continuar público.Para uma caixa dedicada, declare-a como endereço de retorno em “Settings”, “SMTP”, “Custom headers”:
[
{"Return-Path": "your-bounce-inbox@example.com"}
]
As configurações iniciais são as que a documentação dá para o SES, e formam uma boa base:
| Tipo de bounce | Número | Ação |
|---|---|---|
| Soft (leve) | 2 | None: nenhuma |
| Hard (definitivo) | 1 | Blocklist: o endereço é bloqueado |
| Complaint (denúncia de spam) | 1 | Blocklist: o endereço é bloqueado |
O Listmonk exige PostgreSQL 12 ou mais recente. O arquivo Compose traz o postgres:17-alpine, com os dados no volume Docker listmonk-data. Assinantes, campanhas, modelos, estatísticas e a maioria das configurações vivem nele; só os acessos ao banco e o endereço de escuta ficam na configuração.
Para apontar para um servidor PostgreSQL existente, modifique as variáveis LISTMONK_db__host, LISTMONK_db__port, LISTMONK_db__user, LISTMONK_db__password e LISTMONK_db__database do serviço app.
O Listmonk foi concebido para listas grandes. À medida que o banco cresce, é ele que pode deixar a interface lenta: com milhões de assinantes, o painel e os contadores podem levar dezenas de segundos para aparecer. O projeto aconselha então dois gestos:
VACUUM ANALYZE em um banco grande, por exemplo toda semana. O comando bloqueia as consultas durante a execução, em geral alguns segundos.docker compose exec db psql -U listmonk -d listmonk -c 'VACUUM ANALYZE;'
Dois elementos formam sua instância: o banco PostgreSQL e a pasta uploads, se suas imagens ficam no disco. O pg_dump produz uma exportação consistente sem parar o Listmonk nem bloquear os outros acessos ao banco:
docker compose exec -T db pg_dump -U listmonk listmonk > listmonk-$(date +%F).sql
tar -czf listmonk-uploads-$(date +%F).tar.gz uploads
Para restaurar, pare o Listmonk, esvazie o banco e recarregue a exportação. Como a documentação esclarece, esse gesto apaga o banco existente:
docker compose stop app
docker compose exec db psql -U listmonk -d listmonk -c 'DROP SCHEMA public CASCADE; CREATE SCHEMA public;'
docker compose exec -T db psql -U listmonk -d listmonk < listmonk-2026-11-01.sql
docker compose start app
docker-compose.yml.docker compose down app
docker compose pull
docker compose up app -d
Com o binário, pare o Listmonk, substitua o binário, execute ./listmonk --upgrade e reinicie-o. Para voltar a uma versão anterior, restaure a exportação feita antes da atualização e recoloque a tag antiga.
A auto-hospedagem exige cuidar do servidor além da aplicação. Em um VPS gerenciado, nossas equipes assumem o servidor e acompanham sua instância de forma proativa; o Listmonk continua sendo seu software, com as configurações dele, suas listas e suas campanhas.
| Assunto | Nossas equipes | Você |
|---|---|---|
| O servidor | Atualizações do sistema e de segurança, com intervenções no servidor incluídas | O momento que convém a sua atividade |
| A supervisão | Servidor acompanhado 24 horas por dia, 7 dias por semana, com intervenção sem esperar sua ligação | O acompanhamento de suas campanhas e de seus bounces |
| Listmonk | Acompanhamento proativo: erros, lentidões e espaço em disco identificados, correção recomendada | A instalação, as atualizações e as configurações dele, que você aplica, por conta própria ou com seu assistente de IA |
| O envio | Um servidor que alcança seu relay SMTP na porta 587 | Seu serviço de envio, seus registros DNS, suas listas e o consentimento de seus destinatários |
| Os backups | Toda noite, criptografados e guardados fora da máquina; restauração incluída | O pedido de restauração e sua exportação antes de cada atualização |
| A migração | Seu servidor atual migrado, grátis | O momento da virada |
Se você preferir que nossas equipes intervenham na própria aplicação, esse serviço é cobrado por hora ou por valor fechado, com o orçamento informado antes da intervenção.
Com um VPS gerenciado Simafri, nossas equipes mantêm atualizado o servidor de sua instância Listmonk, monitoram-no dia e noite e intervêm sem esperar sua ligação; elas também acompanham sua instância de forma proativa e recomendam as correções úteis, que você aplica por conta própria ou com seu assistente de IA. Os backups são criptografados todas as noites e guardados fora da máquina, a restauração está incluída, e a migração de seu servidor atual é grátis.
Sim. O Listmonk está sob a licença AGPL-3.0: você pode usá-lo em uma empresa sem licença a comprar. Se o modificar, seus usuários à distância devem poder obter o código-fonte de sua versão. Restam o custo do servidor e o de seu serviço de envio.
A v6.2.0, última versão estável em 11 de novembro de 2026. A v7.0.0-beta.2, exibida no topo do GitHub, é uma beta. No Docker Compose, fixe a imagem em listmonk/listmonk:v6.2.0: a mudança de versão continua então sendo decisão sua, pois um banco migrado não pode ser relido por uma versão mais antiga.
Baixe o arquivo docker-compose.yml do projeto, mude a senha do banco e a tag da imagem e execute docker compose up -d. A interface responde na porta 9000, com o PostgreSQL ao lado. Sirva-a em HTTPS atrás de um proxy reverso e preencha a Root URL dela.
O Listmonk envia pelos servidores SMTP que você configurar. Para um envio em volume, use um serviço de envio especializado, em STARTTLS na porta 587, e publique SPF, DKIM e DMARC em seu domínio. A documentação do Listmonk descreve, por exemplo, os bounces do Amazon SES, do SendGrid e do Postmark.
Ative o tratamento em Settings, Bounces e conecte o webhook de seu serviço de envio ou uma caixa POP3 dedicada. As configurações iniciais bloqueiam um endereço a partir de um bounce definitivo ou de uma denúncia de spam.
Exporte o banco com pg_dump, sem parar o serviço, e guarde a pasta uploads se suas imagens estão no disco. O projeto pede essa exportação antes de cada atualização, pois uma versão anterior não relê um banco já migrado.
Ele dá as ferramentas: listas em double opt-in, link de descadastro nos modelos, cabeçalho List-Unsubscribe, exportação e apagamento dos dados pelo assinante. O consentimento em si continua sendo coletado por você, conforme as regras do país de seus destinatários.
Um VPS gerenciado cobre o servidor: sistema, segurança, supervisão e backups. Nossas equipes também acompanham sua instância de forma proativa e recomendam as correções úteis, que você aplica. Uma intervenção na aplicação é cobrada por hora ou por valor fechado.
Simafri
Vamos falar de seu site
Conte para a gente sobre seu projeto em poucas palavras: responderemos rapidamente.
Obrigado! O seu pedido foi enviado. Responderemos em breve.
Prefere o e-mail? Escreva para a gente em support@simafri.com.