Pular para conteúdo

n8n

O n8n é a plataforma de automação de workflows da VPS.

Nesta instalação, ele utiliza PostgreSQL para persistência e Redis como serviço auxiliar.

Informações desta VPS

Item Valor
Stack /opt/stacks/n8n/compose.yml
Container do n8n n8n-n8n-1
Container do PostgreSQL n8n-postgres-1
Container do Redis n8n-redis-1
Domínio https://n8n.cloud.hometecseg.com
Rede externa proxy

Status

Ver todos os serviços da stack

docker compose -f /opt/stacks/n8n/compose.yml ps

Ver somente o container do n8n

docker ps --filter name=n8n-n8n-1

Ver a imagem configurada

grep -n "image:" /opt/stacks/n8n/compose.yml

Ver a imagem utilizada pelo container

docker inspect n8n-n8n-1 --format '{{.Config.Image}}'

Ver a versão instalada

docker exec n8n-n8n-1 n8n --version

Logs

Ver os últimos 100 registros

docker logs n8n-n8n-1 --tail 100

Acompanhar logs em tempo real

docker logs -f n8n-n8n-1

Procurar erros

docker logs n8n-n8n-1 2>&1 | grep -i error

Procurar avisos

docker logs n8n-n8n-1 2>&1 | grep -i warning

Ver logs de toda a stack

docker compose -f /opt/stacks/n8n/compose.yml logs --tail 100

Acompanhar logs de toda a stack

docker compose -f /opt/stacks/n8n/compose.yml logs -f

Operação

Validar o Compose

docker compose -f /opt/stacks/n8n/compose.yml config

Listar os serviços definidos

docker compose -f /opt/stacks/n8n/compose.yml config --services

Subir toda a stack

docker compose -f /opt/stacks/n8n/compose.yml up -d

Parar toda a stack sem remover os containers

docker compose -f /opt/stacks/n8n/compose.yml stop

Interrupção do n8n

Parar essa stack também interrompe o PostgreSQL e o Redis utilizados pelo n8n.

Iniciar a stack parada

docker compose -f /opt/stacks/n8n/compose.yml start

Reiniciar toda a stack

docker compose -f /opt/stacks/n8n/compose.yml restart

Reiniciar somente o n8n

docker compose -f /opt/stacks/n8n/compose.yml restart n8n

Parar somente o n8n

docker compose -f /opt/stacks/n8n/compose.yml stop n8n

Iniciar somente o n8n

docker compose -f /opt/stacks/n8n/compose.yml start n8n

Remover os containers da stack

docker compose -f /opt/stacks/n8n/compose.yml down

Volumes persistentes

O comando down remove os containers e a rede interna criada pela stack, mas normalmente preserva os volumes. Não utilize down -v sem confirmar os backups.

Atualização

Criar backup do Compose

cp /opt/stacks/n8n/compose.yml \
   /opt/stacks/n8n/compose.yml.bak-$(date +%Y%m%d-%H%M%S)

Criar backup do arquivo de variáveis

cp /opt/stacks/n8n/.env \
   /opt/stacks/n8n/.env.bak-$(date +%Y%m%d-%H%M%S)

Ver os backups existentes

ls -lh /opt/stacks/n8n/*.bak-*

Validar antes da atualização

docker compose -f /opt/stacks/n8n/compose.yml config

Ver a versão atual

docker exec n8n-n8n-1 n8n --version

Baixar as imagens configuradas

docker compose -f /opt/stacks/n8n/compose.yml pull

Recriar os containers

docker compose -f /opt/stacks/n8n/compose.yml up -d

Verificar o status após a atualização

docker compose -f /opt/stacks/n8n/compose.yml ps

Confirmar a nova versão

docker exec n8n-n8n-1 n8n --version

Verificar os logs após a atualização

docker logs n8n-n8n-1 --tail 100

Variáveis de ambiente

Ver o arquivo .env

cat /opt/stacks/n8n/.env

Dados sensíveis

O arquivo .env pode conter senhas, chaves, tokens e dados SMTP. Não compartilhe seu conteúdo completo em mensagens, prints ou repositórios públicos.

Ver variáveis definidas no container

docker inspect n8n-n8n-1 \
  --format '{{range .Config.Env}}{{println .}}{{end}}'

Procurar uma variável específica

docker inspect n8n-n8n-1 \
  --format '{{range .Config.Env}}{{println .}}{{end}}' \
  | grep NOME_DA_VARIAVEL

Exemplo:

docker inspect n8n-n8n-1 \
  --format '{{range .Config.Env}}{{println .}}{{end}}' \
  | grep N8N_TRUST_PROXY

Rede

Verificar se o n8n está na rede proxy

docker network inspect proxy

Ver as redes do container

docker inspect n8n-n8n-1 \
  --format '{{json .NetworkSettings.Networks}}'

Ver o IP interno do container

docker inspect n8n-n8n-1 \
  --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

Testes de acesso

Testar o domínio

curl -I https://n8n.cloud.hometecseg.com

Ver detalhes da conexão

curl -v https://n8n.cloud.hometecseg.com

Verificar o DNS

getent hosts n8n.cloud.hometecseg.com

Banco de dados

Ver o status do PostgreSQL

docker ps --filter name=n8n-postgres-1

Ver os logs do PostgreSQL

docker logs n8n-postgres-1 --tail 100

Verificar se o PostgreSQL está aceitando conexões

docker exec n8n-postgres-1 pg_isready

Entrar no PostgreSQL

docker exec -it n8n-postgres-1 psql -U NOME_DO_USUARIO -d NOME_DO_BANCO

Os nomes corretos do usuário e do banco devem ser consultados no arquivo .env ou no compose.yml.

Redis

Ver o status do Redis

docker ps --filter name=n8n-redis-1

Ver os logs do Redis

docker logs n8n-redis-1 --tail 100

Testar o Redis

docker exec n8n-redis-1 redis-cli ping

Resultado esperado:

PONG

Troubleshooting

O domínio abre, mas a interface não carrega corretamente

Verificar os logs:

docker logs n8n-n8n-1 --tail 100

Verificar as variáveis relacionadas ao domínio:

docker inspect n8n-n8n-1 \
  --format '{{range .Config.Env}}{{println .}}{{end}}' \
  | grep -E "N8N_HOST|N8N_PROTOCOL|WEBHOOK_URL|N8N_EDITOR_BASE_URL"

Verificar a rota do Traefik:

docker inspect n8n-n8n-1 \
  --format '{{json .Config.Labels}}'

Erro X-Forwarded-For

Sintoma:

The 'X-Forwarded-For' header is set but the Express
'trust proxy' setting is false

Verificar a variável:

docker inspect n8n-n8n-1 \
  --format '{{range .Config.Env}}{{println .}}{{end}}' \
  | grep N8N_TRUST_PROXY

A configuração deve estar coerente com o uso do Traefik como proxy reverso.

Depois de alterar o compose.yml ou .env, recrie o container:

docker compose -f /opt/stacks/n8n/compose.yml up -d

Erro de conexão com PostgreSQL

Verificar:

docker logs n8n-postgres-1 --tail 100
docker exec n8n-postgres-1 pg_isready
docker logs n8n-n8n-1 --tail 100
docker compose -f /opt/stacks/n8n/compose.yml ps

Erro de conexão com Redis

Verificar:

docker exec n8n-redis-1 redis-cli ping
docker logs n8n-redis-1 --tail 100
docker logs n8n-n8n-1 --tail 100

Gateway Timeout

Verificar se o n8n está ativo:

docker ps --filter name=n8n-n8n-1

Verificar a rede:

docker network inspect proxy

Verificar as labels:

docker inspect n8n-n8n-1 \
  --format '{{json .Config.Labels}}'

Verificar os logs do Traefik:

docker logs reverse-proxy-traefik-1 --tail 100

Erro 502 Bad Gateway

Normalmente indica que o Traefik encontrou a rota, mas não conseguiu alcançar a aplicação.

Verificar:

docker compose -f /opt/stacks/n8n/compose.yml ps
docker network inspect proxy
docker logs n8n-n8n-1 --tail 100
docker logs reverse-proxy-traefik-1 --tail 100

Verificar a porta interna configurada no Traefik

docker inspect n8n-n8n-1 \
  --format '{{json .Config.Labels}}' \
  | grep loadbalancer

Arquivos importantes

Arquivo ou pasta Função
/opt/stacks/n8n/compose.yml Configuração da stack
/opt/stacks/n8n/.env Variáveis e credenciais
Volumes Docker Dados persistentes do n8n, PostgreSQL e Redis

Boas práticas

  • Validar o Compose antes de qualquer alteração.
  • Fazer backup do banco antes de atualizações importantes.
  • Fixar versões de imagens em vez de utilizar latest.
  • Confirmar logs após toda atualização.
  • Não expor diretamente PostgreSQL ou Redis à internet.
  • Não publicar o arquivo .env.
  • Não utilizar docker compose down -v sem backup.