- Use Postgres em produção; SQLite é só para testes rápidos
- Persistência é obrigatória: volume do /home/node/.n8n e do /var/lib/postgresql/data
- HTTPS muda tudo: configure WEBHOOK_URL e N8N_HOST para evitar links errados
- Se webhooks falham, quase sempre é DNS/porta/URL externa ou header do proxy
- Backups simples (dump do Postgres + volume do n8n) já evitam tragédia
1) Prepare domínio, DNS e portas
Aponte um subdomínio (ex.: n8n.seudominio.com.br) para o IP do seu servidor. Garanta que as portas 80 e 443 estejam liberadas (firewall e provedor). Se você não puder expor 443, webhooks vão virar loteria — dá para contornar com túnel, mas aí foge do “padrão robusto”.
2) Escolha o modelo de HTTPS (Traefik ou Nginx)
Traefik é prático em Docker (descobre containers por labels e emite TLS automaticamente). Nginx funciona muito bem também, mas exige mais arquivo de configuração. O importante: o n8n deve receber os headers corretos (X-Forwarded-Proto/Host) para gerar URLs externas certinhas.
3) Crie um docker-compose.yml com n8n + Postgres
Suba dois serviços: postgres e n8n. Configure POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB, a string de conexão do n8n e volumes persistentes. Em produção, fixe versões de imagem (não use “latest” sem teste).
4) Configure variáveis que impactam webhooks e links
Defina N8N_HOST como seu domínio, N8N_PORT como a porta interna (normalmente 5678), N8N_PROTOCOL como https e WEBHOOK_URL como a URL pública completa (https://...). Isso evita que o n8n gere webhook com http, hostname interno ou porta errada.
5) Suba, valide e só então conecte integrações
Rode docker compose up -d, verifique logs e acesse a interface via HTTPS. Antes de sair criando automações, valide um webhook simples (um workflow com Webhook Trigger e resposta). Se falhar, corrija rede/URL/proxy primeiro — depois tudo flui.
6) Faça backup e ajuste retenção de logs
Combine dump do Postgres (diário) com backup do volume do n8n (onde ficam chaves, credenciais criptografadas e configs). Sobre logs: mantenha o suficiente para depurar (dias/semanas, depende do seu volume), mas sem explodir disco.
Estrutura recomendada (o que precisa existir para dar certo)
O n8n self-hosted “funciona” de muitos jeitos, mas só fica confiável quando você fecha quatro pontos: banco decente (Postgres), persistência real (volumes), URL externa coerente (WEBHOOK_URL/N8N_HOST) e um proxy reverso bem configurado.
Se você já sofreu com webhook que “às vezes chega, às vezes não”, a causa costuma ser uma combinação de URL externa errada, SSL mal resolvido ou portas bloqueadas.
- Domínio apontando para o servidor (DNS A/AAAA).
- Portas 80/443 acessíveis de fora (ou alternativa equivalente).
- Proxy reverso com certificado TLS válido.
- Postgres com volume persistente.
- n8n com volume persistente e variáveis de URL ajustadas.
Tabela rápida: variáveis que mais derrubam webhooks
Você pode ter o Compose “em pé” e mesmo assim quebrar a parte mais importante: receber eventos. A tabela abaixo cobre o que eu mais vejo dar errado quando a URL pública não bate com o que o n8n anuncia para o mundo.
| Variável/Config | Para quê serve | Sinal clássico de erro |
|---|---|---|
| WEBHOOK_URL | URL pública base usada nos webhooks | Integração reclama de callback inválido ou aponta para http/porta estranha |
| N8N_HOST / N8N_PROTOCOL | Host/protocolo usados em links e callbacks | Links internos gerados com domínio interno do container ou sem https |
| Proxy headers (X-Forwarded-Proto/Host) | Faz o app entender que está atrás de HTTPS | Loop de redirect, mistura de http/https, sessão instável |
| Persistência do volume do n8n | Mantém chaves, configs e credenciais | A cada restart “some” configuração, login, credenciais ou tokens |
| Persistência do Postgres | Mantém dados do banco | Workflows/execuções desaparecem após recriar containers |
Traefik vs Nginx: como escolher sem brigar com o futuro
Se seu n8n vai conviver com outros serviços em Docker (ex.: um banco, um app interno, um painel), Traefik costuma encaixar melhor pelo modelo de discovery por labels.
Nginx é ótimo quando você quer controle manual e já tem um padrão de configuração na empresa. O “melhor” é o que sua operação consegue manter: renovação de certificado, mudanças de rota e debug de header.
- Escolha Traefik se: você quer menos arquivo e mais automação no proxy, e vai hospedar vários containers.
- Escolha Nginx se: sua equipe já padronizou Nginx e prefere configurar tudo explicitamente.
- Independentemente do proxy: confirme que o n8n está enxergando https na ponta (via headers).
Checklist de produção (antes de declarar vitória)
O n8n é fácil de subir e fácil de quebrar com pequenos detalhes. Eu costumo validar com este checklist — porque depois que você liga integrações (pagamento, CRM, WhatsApp, e-commerce), retrabalho custa caro.
- Acesso por HTTPS sem aviso de certificado.
- Workflow de Webhook Trigger responde 200 para uma requisição externa.
- Reiniciar containers NÃO apaga credenciais e configs (teste na prática).
- Disco com folga (logs e execuções crescem; o quanto depende do seu uso).
- Backup testado: você consegue restaurar em outro servidor (ensaio rápido).
Perguntas frequentes
Preciso mesmo de Postgres ou dá para usar SQLite?
Por que meus webhooks do n8n ficam com URL errada (http ou hostname interno)?
Posso colocar o n8n atrás de Cloudflare?
O que eu devo backup: banco, volume do n8n ou os dois?
Leia também
Como instalar n8n em VPS no Brasil (guia completo com custos reais)
Guia passo a passo para instalar n8n self-hosted em VPS no Brasil. Inclui custos reais em reais, comparativo de providers, configuração com Docker e HTTPS.
Ler →
Como fazer backup do n8n self-hosted e restaurar sem perder workflows
Guia prático de backup e restauração do n8n self-hosted: exportar workflows e credenciais via CLI, dump do PostgreSQL, a chave de criptografia que não pode faltar e como automatizar tudo.
Ler →
n8n self-hosted vs n8n cloud: qual vale mais a pena para o seu caso?
Compare n8n self-hosted e n8n cloud em 2026: preços, limites, facilidade de uso e quando cada opção faz sentido para iniciantes, agências e empresas.
Ler →
Como monitorar automações (n8n, Make e Zapier): alertas, logs e erros sem virar refém do “falhou e ninguém viu”
Guia prático para monitorar automações em n8n, Make e Zapier: quais alertas criar, como registrar logs, tratar erros, retries e evitar falhas silenciosas.
Ler →