Conteúdo
Hospedagem própria do n8n: Docker Compose + PostgreSQL + HTTPS
Depois de testar os fluxos de trabalho no seu computador, você precisa implantá-los em um servidor com endereço fixo para que funcionem 24 horas por dia e serviços externos, como Webhooks e Telegram, consigam se conectar.
O que você precisa
- Um servidor Linux na nuvem (VPS). Para uso leve, 1–2 núcleos e 2 GB de memória são suficientes; para muitos fluxos de trabalho ou modelos locais de IA, você precisará de mais recursos.
- Um domínio, com o registro DNS A de um subdomínio (por exemplo,
n8n.example.com) apontando para o IP do servidor. - Docker e Docker Compose instalados no servidor (consulte Tutorial de Docker: instalação).
- As portas 80 e 443 liberadas no firewall.
Arquitetura
Internet ──HTTPS──▶ Caddy (certificado automático) ──▶ n8n:5678 ──▶ PostgreSQL
- Caddy: proxy reverso que obtém e renova automaticamente certificados Let's Encrypt
- PostgreSQL: banco de dados recomendado para produção (o SQLite padrão é adequado para uso pessoal ou testes)
- O n8n e o banco de dados não ficam diretamente expostos à internet
A partir do n8n 2.x, MySQL / MariaDB não são mais compatíveis como banco de dados do n8n. Use PostgreSQL ou SQLite.
Arquivos
Crie a pasta /opt/n8n no servidor:
/opt/n8n/
├── compose.yaml
├── .env
└── Caddyfile
.env
DOMAIN=n8n.example.com
POSTGRES_PASSWORD=substitua por uma senha aleatória bem longa
N8N_ENCRYPTION_KEY=substitua por outra sequência aleatória bem longa
Gere uma sequência aleatória:
openssl rand -hex 32
N8N_ENCRYPTION_KEYé usada para criptografar todas as credenciais. Faça também um backup seguro dessa chave; se ela for perdida, nenhuma credencial poderá ser usada.
Caddyfile
{$DOMAIN} {
reverse_proxy n8n:5678
}
compose.yaml
services:
caddy:
image: caddy:2
ports:
- "80:80"
- "443:443"
environment:
DOMAIN: ${DOMAIN}
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
restart: unless-stopped
postgres:
image: postgres:17
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: n8n
volumes:
- pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n -d n8n"]
interval: 5s
retries: 10
restart: unless-stopped
n8n:
image: n8nio/n8n:2.42.7 # Altere para a versão fixa que você quer usar
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_HOST: ${DOMAIN}
N8N_PORT: 5678
N8N_PROTOCOL: https
N8N_WEBHOOK_URL: https://${DOMAIN}/
N8N_PROXY_HOPS: 1
NODE_ENV: production
GENERIC_TIMEZONE: Asia/Taipei
TZ: Asia/Taipei
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
EXECUTIONS_DATA_PRUNE: "true"
EXECUTIONS_DATA_MAX_AGE: 336
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
volumes:
caddy_data:
pg_data:
n8n_data:
Explicação das principais variáveis de ambiente
| Variável | Descrição |
|---|---|
N8N_HOST, N8N_PROTOCOL | Domínio e protocolo externos, que afetam, por exemplo, os URLs de retorno do OAuth |
N8N_WEBHOOK_URL | URL externa dos Webhooks. Sem essa configuração, o nó Webhook mostrará http://localhost:5678/.... Em versões anteriores à 2.30 do n8n, use WEBHOOK_URL |
N8N_PROXY_HOPS | Defina como 1 quando estiver atrás de um proxy reverso, para que o n8n consiga obter o IP real do usuário |
N8N_ENCRYPTION_KEY | Chave de criptografia das credenciais |
GENERIC_TIMEZONE | Fuso horário usado pelos agendamentos |
EXECUTIONS_DATA_PRUNE, EXECUTIONS_DATA_MAX_AGE | Exclui automaticamente registros de execução mais antigos que o número de horas definido (336 horas = 14 dias), evitando que o banco de dados cresça sem limite |
Inicialização
cd /opt/n8n
docker compose up -d
docker compose logs -f n8n
Em alguns minutos, o Caddy obterá o certificado automaticamente. Acesse https://n8n.example.com e crie a conta de proprietário.
Crie a conta imediatamente. Antes que a conta de proprietário seja configurada, qualquer pessoa que acessar esse endereço poderá criar uma conta primeiro.
Recomendações de segurança
- Use uma tag de imagem com versão fixa, não use
lateste leia as notas da versão antes de atualizar. - Deixe abertas no servidor somente as portas 22, 80 e 443; permita acesso SSH apenas com chave.
- Ative a verificação em duas etapas para a conta (nas configurações pessoais).
- Os nós perigosos desnecessários (por exemplo, os que executam comandos do sistema) já vêm desativados por padrão na versão 2.x; não os habilite sem necessidade.
- Faça backups regularmente (consulte Backup e atualização).
Uso com modelos locais de IA
Para usar modelos locais do Ollama no n8n, adicione o serviço ollama ao mesmo arquivo compose.yaml; consulte Integração do n8n com Ollama. Modelos de IA precisam de bastante memória e capacidade de processamento, e um VPS pequeno geralmente não dá conta deles.
Muitas execuções: Queue mode
Quando houver muitos fluxos de trabalho ou execuções frequentes, você poderá ativar o queue mode: o processo principal recebe os gatilhos e os distribui para vários workers, que os executam em paralelo por meio de uma fila Redis. Essa é uma implantação avançada; consulte a documentação oficial sobre queue mode.
Atualizado 12 de outubro de 2026