Imagem: n8nio/n8n:latest Pasta: /opt/server/infra/n8n/ Container name: n8n URL pública: https://n8n.example.com Endereço interno: n8n:5678

Para que serve

n8n é um automatizador de workflows (alternativa self-hosted ao Zapier/Make). Conecta APIs, dispara webhooks, agenda tarefas, manipula dados.

Variáveis

infra/n8n/.env (parte gerada pelo bootstrap, parte preenchida manualmente após criar o DB):
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
N8N_PORT=5678
WEBHOOK_URL=https://n8n.example.com/
GENERIC_TIMEZONE=America/Sao_Paulo
N8N_ENCRYPTION_KEY=<gerado pelo bootstrap>

DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n
DB_POSTGRESDB_PASSWORD=<vem do create-db.sh n8n>

N8N_ENCRYPTION_KEY

Chave que o n8n usa para criptografar credenciais (tokens de APIs, etc.) salvas dentro dele. Se você perder essa chave, perde acesso a todas as credenciais salvas. Backup junto com o data/.

Backend Postgres

Em vez do SQLite default, usamos o Postgres compartilhado. Antes do primeiro up, é necessário criar o DB:
cd /opt/server/infra/postgres
./create-db.sh n8n
Depois copiar DB_USER e DB_PASSWORD de secrets/n8n.env para n8n/.env (campos DB_POSTGRESDB_USER e DB_POSTGRESDB_PASSWORD).

Volume

./data → /home/node/.n8n
Contém workflows, configurações, e o estado interno do n8n. Faça backup junto com o Postgres.
Permissão obrigatória: o n8n roda como user node (UID 1000) e não faz self-chown do volume no startup (diferente do postgres e redis). A pasta ./data precisa ser de UID 1000:1000 antes do primeiro up, senão o container faz crash loop com EACCES: permission denied, open '/home/node/.n8n/config'.O bootstrap.sh cuida disso automaticamente. Se subir o n8n sem rodar o bootstrap antes, conserte com:
docker run --rm -v /opt/server/infra/n8n/data:/data alpine chown -R 1000:1000 /data
(Não precisa de sudo — basta estar no grupo docker.)

Sem porta exposta

n8n não publica porta no host — é acessado via NPM. Veja Nginx Proxy Manager para configurar o Proxy Host de n8n.example.com → n8n:5678.

Subir

cd /opt/server/infra/n8n
docker compose up -d
Primeiro acesso em https://n8n.example.com abre o wizard para criar o owner account (admin do n8n).

Atualizar versão

cd /opt/server/infra/n8n
docker compose pull
docker compose up -d
n8n migra o schema do banco automaticamente no startup quando necessário.