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 llamadamired.-p 5679:5679: Expone el puerto5679para 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_TIMEZONEyTZconfiguran 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 llamadopg16dentro de la misma red. - Integración Sandbox:
-
N8N_INSTANCE_AI_SANDBOX_ENABLED=trueactiva el entorno aislado.N8N_SANDBOX_SERVICE_URLy_API_KEYvinculan n8n al contenedorn8n-sandbox-api.
-
- IA e Inferencia:
N8N_INSTANCE_AI_MODEL_API_KEYcontiene una clave de API (OpenRouter en este caso) utilizada para los nodos avanzados de Inteligencia Artificial de n8n. - Persistencia:
-v ./n8n_data:/home/node/.n8nguarda localmente en el host las configuraciones, llaves de cifrado y archivos binarios de n8n.
- Zona Horaria: