docker-compose.yml
Rama main · réplica de lectura del repositorio original.
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=America/Sao_Paulo
- TZ=America/Sao_Paulo
# Permite require('fs') e require('js-yaml') no Code node (ler o config.yaml).
- NODE_FUNCTION_ALLOW_BUILTIN=fs
- NODE_FUNCTION_ALLOW_EXTERNAL=js-yaml
# Execução clássica em processo: garante que fs/js-yaml/this.helpers
# funcionem como descrito nos Code nodes.
- N8N_RUNNERS_ENABLED=false
# O Code node "Classificar" chama o Ollama (modelo LOCAL, ~24s/email na CPU).
# O task runner do n8n mata Code nodes que passam de 300s por padrão; com lote
# grande no backfill isso estoura. Sobe o limite p/ 30min (1800s).
- N8N_RUNNERS_TASK_TIMEOUT=1800
# O histórico de execuções cresce sem limite (o database.sqlite já passou de 250 MB,
# e o watchdog copia esse arquivo inteiro a cada checagem). 14 dias é folga de sobra
# para diagnóstico — a janela do watchdog é de horas.
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=336
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=500
# Teto de segurança: em operação o n8n fica em ~280 MB. Se passar disso é vazamento,
# e é melhor o container morrer e reiniciar do que competir por RAM com o Ollama.
mem_limit: 1g
# Permite o container alcançar o Ollama rodando no host (Linux).
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ~/.n8n:/home/node/.n8n
# config.yaml versionado no repo, montado read-only dentro do container.
- ./config.yaml:/home/node/.n8n/config.yaml:ro