n8n não inicia: erros comuns e soluções
Se o n8n não inicia depois de um restart, na maioria dos casos o container do PostgreSQL sobe antes do n8n estar pronto — ajuste o depends_on para usar condition: service_healthy. Outros candidatos comuns são a porta 5678 ocupada por outro processo, uma variável de ambiente ausente ou o volume com permissão incorreta.
Diagnóstico rápido: veja os logs primeiro
Antes de tentar qualquer correção, verifique o que o container está reportando. Os logs revelam a causa em quase todos os casos:
# Últimas 50 linhas de log do container n8n
docker compose logs n8n --tail=50
# Status de todos os containers do stack
docker compose psCausa 1: PostgreSQL sobe depois do n8n (o mais comum)
O n8n tenta se conectar ao banco logo ao iniciar. Se o PostgreSQL ainda não terminou o startup, o n8n recebe ECONNREFUSED e encerra. A solução é usar depends_on com condition: service_healthy, que força o Docker a aguardar o healthcheck do postgres passar antes de iniciar o n8n:
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: sua_senha
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 5s
timeout: 5s
retries: 5
volumes:
- postgres_data:/var/lib/postgresql/data
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
depends_on:
postgres:
condition: service_healthy # aguarda o healthcheck passar
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=sua_senha
volumes:
postgres_data:Causa 2: porta 5678 já está em uso
Se outro processo já ocupa a porta 5678, o n8n falha ao tentar fazer bind. O log mostrará address already in use ou EADDRINUSE.
# Verificar qual processo está usando a porta 5678
ss -tlnp | grep 5678
# Alternativa com lsof
lsof -i :5678Causa 3: variável de ambiente ausente ou inválida
Variáveis incorretas são silenciosas — o n8n tenta iniciar, não consegue conectar ao banco e encerra sem mensagem clara. Inspecione a configuração resolvida antes de subir:
# Mostrar a configuração final com variáveis expandidas
docker compose configCausa 4: permissão incorreta no volume
O n8n roda internamente como UID 1000. Se o diretório de bind mount pertence a root, o processo não consegue gravar e para na inicialização.
# Corrigir permissões no diretório local (bind mount)
chown -R 1000:1000 ./n8n_data
# Se usar volume nomeado, recrie o container
docker compose down
docker compose up -dCausa 5: memória insuficiente
O n8n precisa de pelo menos 512 MB de RAM livre para iniciar. Com workflows ativos, use 1 GB ou mais. Verifique o consumo atual:
# Memória disponível no sistema
free -h
# Consumo por container
docker stats --no-streamComo reiniciar o n8n com segurança
Após corrigir a causa raiz, use o comando adequado para reiniciar sem impactar o banco:
# Reiniciar apenas o n8n (mantém postgres e Redis rodando)
docker compose restart n8n
# Reiniciar tudo — necessário após editar o docker-compose.yml
docker compose down
docker compose up -d
# Confirmar que o container está saudável
docker compose ps$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o n8n em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.