Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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