N8N

Share this post on:
Estos comandos de Docker sirven para desplegar n8n con su entorno de ejecución seguro (AI Sandbox), permitiendo ejecutar código de Python o JavaScript en contenedores aislados de forma segura, conectado a una base de datos PostgreSQL externa.
A continuación, encontrarás la documentación detallada y la explicación de cada componente.

1. n8n Sandbox API (n8n-sandbox-api)
Este contenedor expone la API que n8n utiliza para orquestar y solicitar la ejecución de código dentro del sandbox.
docker run -d \
  --name n8n-sandbox-api \
  --network mired \
  -p 5679:5679 \
  --restart unless-stopped \
  -e SANDBOX_API_KEYS="bi5C3yqY6TAQKn4HvpNQFa1wtU8OXAS6t4YhoJOlfuo" \
  n8nio/n8n-sandbox-service-api:latest

    • --name n8n-sandbox-api: Asigna un nombre fijo al contenedor para que otros servicios lo localicen en la red.
    • --network mired: Lo conecta a una red personalizada de Docker llamada mired.
    • -p 5679:5679: Expone el puerto 5679 para la comunicación de la API.
    • -e SANDBOX_API_KEYS="...": Define la clave secreta de autenticación que n8n requerirá para comunicarse con este servicio.


2. n8n Sandbox Runner (n8n-sandbox-runner)
Este contenedor es el encargado de ejecutar físicamente el código de los nodos de n8n. Utiliza la tecnología Docker-in-Docker (DinD) para levantar micro-contenedores aislados cada vez que se procesa código.
docker run -d \
  --name n8n-sandbox-runner \
  --network mired \
  --privileged \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e SANDBOX_API_URL="http://n8n-sandbox-api:5679" \
  -e SANDBOX_API_KEY="bi5C3yqY6TAQKn4HvpNQFa1wtU8OXAS6t4YhoJOlfuo" \
  n8nio/n8n-sandbox-service-runner-dind:latest

    • --privileged: Concede permisos extendidos al contenedor, necesarios para que DinD pueda gestionar contenedores internos.
    • -v /var/run/docker.sock:/var/run/docker.sock: Comunica el socket de Docker del host con el contenedor.
    • -e SANDBOX_API_URL="...": Apunta a la API del sandbox explicada en el paso anterior usando DNS interno de Docker.
    • -e SANDBOX_API_KEY="...": Clave para autenticarse contra la API.


3. Servidor Principal n8n (n8n)
Este es el motor principal de n8n configurado para producción. Integra la base de datos externa y delega la ejecución de código al Sandbox configurado previamente.
docker run \
  --name n8n \
  -p 5678:5678 \
  --network mired -d --restart unless-stopped \
  -e GENERIC_TIMEZONE="America/Bogota" \
  -e TZ="America/Bogota" \
  -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
  -e DB_TYPE=postgresdb \
  -e N8N_SECURE_COOKIE=false \
  -e DB_POSTGRESDB_DATABASE=n8n \
  -e DB_POSTGRESDB_HOST=pg16 \
  -e DB_POSTGRESDB_PORT=5432 \
  -e DB_POSTGRESDB_USER=n8n \
  -e DB_POSTGRESDB_SCHEMA=n8n \
  -e DB_POSTGRESDB_PASSWORD=n8n \
  -e N8N_INSTANCE_AI_SANDBOX_ENABLED=true \
  -e N8N_INSTANCE_AI_SANDBOX_PROVIDER=n8n-sandbox \
  -e N8N_SANDBOX_SERVICE_URL=http://n8n-sandbox-api:5679 \
  -e N8N_SANDBOX_SERVICE_API_KEY=bi5C3yqY6TAQKn4HvpNQFa1wtU8OXAS6t4YhoJOlfuo \
  -e N8N_INSTANCE_AI_MODEL_API_KEY="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" \
  -v ./n8n_data:/home/node/.n8n \
  n8nio/n8n:2.38.7
Desglose de variables clave:
    • Zona Horaria: GENERIC_TIMEZONE y TZ configuran la hora local de América/Bogotá.
    • Base de Datos: Las variables DB_* conectan n8n a una base de datos PostgreSQL alojada en un contenedor o servidor llamado pg16 dentro de la misma red.
    • Integración Sandbox:
        • N8N_INSTANCE_AI_SANDBOX_ENABLED=true activa el entorno aislado.
        • N8N_SANDBOX_SERVICE_URL y _API_KEY vinculan n8n al contenedor n8n-sandbox-api.

    • IA e Inferencia: N8N_INSTANCE_AI_MODEL_API_KEY contiene una clave de API (OpenRouter en este caso) utilizada para los nodos avanzados de Inteligencia Artificial de n8n.
    • Persistencia: -v ./n8n_data:/home/node/.n8n guarda localmente en el host las configuraciones, llaves de cifrado y archivos binarios de n8n.

Share this post on:

Leave a Reply

Your email address will not be published. Required fields are marked *