n8n Producción: Configuración Seguridad y Escalado
Tabla de contenidos
Despliegue de n8n: Guía de Configuración en Producción
Parte 3 de 3. Parte 1: Configuración con Docker Compose | Parte 2: Guía de Manifiestos Kubernetes
Configuración en profundidad
Estos son los parámetros que siempre cambio desde sus valores predeterminados.
| Parámetro | Predeterminado | Mi valor en producción | Impacto |
|---|---|---|---|
EXECUTIONS_MODE | regular | queue | Habilita escalamiento horizontal |
QUEUE_BULL_REDIS_DB | 0 | 1 | Aísla n8n de otros usuarios de Redis |
N8N_CONCURRENCY_PRODUCTION_LIMIT | -1 | 50 | Previene agotamiento de recursos |
EXECUTIONS_TIMEOUT | 3600 | 300 | Mata flujos descontrolados |
N8N_DEFAULT_BINARY_DATA_MODE | default | filesystem | Maneja archivos grandes sin inflación de memoria |
Verificación y pruebas
Después del despliegue, ejecuta estas verificaciones.
Verificación de salud
# Dockercurl -s http://localhost:5678/healthz | jq .# Esperado: {"status":"ok"}
# Kuberneteskubectl exec -n n8n deployment/n8n-main -- wget -qO- localhost:5678/healthzPrueba de humo: Crear un flujo simple
- Inicia sesión en el editor.
- Crea un flujo con un Schedule Trigger (cada minuto) y un nodo Code que devuelva
{ "status": "ok" }. - Actívalo.
- Verifica Executions: deberías ver marcas de verificación verdes cada minuto.
Prueba de carga
Usa la CLI de n8n o un bucle simple de shell para disparar webhooks:
for i in {1..100}; do curl -X POST https://hooks.tudominio.com/webhook/test \ -H "Content-Type: application/json" \ -d '{"payload":"test"}' &donewaitMonitorea la CPU de los workers y la memoria de Redis durante la prueba.
Consideraciones de producción
Alta disponibilidad
- Ejecuta 2+ réplicas de n8n-main detrás de un balanceador de carga con reconocimiento de sesión si necesitas HA para la UI. Ten en cuenta que n8n usa memoria local para algún estado, así que las sesiones persistentes o una sola réplica es más simple.
- Ejecuta mínimo 3+ workers. Escala basado en la profundidad de la cola.
- Usa PostgreSQL con respaldo. Ejecuto
pg_dumpnocturno a almacenamiento compatible con S3.
Monitoreo
Monitoreo estas métricas:
| Métrica | Fuente | Umbral de alerta |
|---|---|---|
| Profundidad de cola | Redis LLEN bull:jobs | > 100 por 5 minutos |
| CPU de worker | Métricas de Kubernetes | > 80% por 10 minutos |
| Ejecuciones fallidas | n8n API /executions | > 5% en 10 minutos |
| Conexiones de base de datos | PostgreSQL pg_stat_activity | > 80% del máximo |
Estrategia de actualización
Fija la etiqueta de imagen de n8n a una versión específica, nunca latest. Mi flujo de actualización:
- Prueba la nueva versión en un namespace de staging.
- Actualiza la etiqueta de imagen en Git.
- Despliega con
kubectl rollout restart. - Observa las ejecuciones por 30 minutos.
- Haz rollback con
kubectl rollout undosi las tasas de error se disparan.
Solución de problemas
| Mensaje de error | Causa | Solución |
|---|---|---|
ECONNREFUSED 127.0.0.1:5432 | n8n no puede alcanzar PostgreSQL | Verifica el nombre del servicio y la conectividad de red |
Queue is not enabled | Worker iniciado sin variables de entorno de cola | Establece EXECUTIONS_MODE=queue en main y QUEUE_BULL_REDIS_HOST en workers |
Encryption key not set | Falta N8N_ENCRYPTION_KEY | Agrégalo a los secretos y reinicia |
Webhook 404 | Flujo no activo o URL incorrecta | Activa el flujo y verifica la ruta del webhook |
Out of memory | Workers excediendo límites | Aumenta el límite de memoria o agrega más workers |
Preguntas frecuentes
¿Qué es n8n y en qué se diferencia de Zapier?
n8n es una plataforma de automatización de flujos de trabajo de código abierto. A diferencia de Zapier, tú lo autohospedas, lo que significa que posees tus datos, tus credenciales nunca salen de tu infraestructura y no estás limitado por niveles de uso o límites de tasa.
¿Necesito una GPU para ejecutar n8n?
No. n8n se ejecuta solo en CPU. Solo necesitas una GPU si conectas el nodo AI Agent de n8n a un LLM autohospedado como Ollama o vLLM ejecutándose en el mismo cluster.
¿Qué es el queue mode y cuándo lo necesito?
El queue mode separa la UI web de los workers de ejecución de flujos usando Redis como cola de trabajos. Lo necesitas tan pronto ejecutes más de un puñado de flujos concurrentes o requieras escalamiento horizontal.
¿Puedo ejecutar n8n sin PostgreSQL?
Sí, n8n viene con SQLite por defecto. Sin embargo, SQLite no maneja bien las escrituras concurrentes y se corromperá bajo carga. Usa PostgreSQL para cualquier despliegue serio.
¿Cómo hago un respaldo de mi instancia de n8n?
Respaldar dos cosas: la base de datos PostgreSQL (pg_dump) y el directorio ~/.n8n (o el volumen montado) que contiene las claves de encriptación y datos binarios locales. Sin la clave de encriptación, tus credenciales son irrecuperables.
¿Está listo para producción el nodo AI Agent de n8n?
Está listo para herramientas internas y triaje de alertas. Yo no confiaría en él todavía para remediación autónoma en producción sin compuertas de aprobación humana. Siempre mantén a un humano en el bucle para acciones destructivas.
¿Cómo aseguro los webhooks expuestos a internet?
Usa un subdominio dedicado, habilita TLS, agrega autenticación basada en encabezados y lista blanca de IPs donde sea posible. Considera poner los webhooks detrás de un proxy inverso con límite de tasa.
¿Puedo usar n8n con vLLM en lugar de Ollama?
Absolutamente. Ambos exponen una API compatible con OpenAI. Apunta el nodo HTTP Request o el nodo OpenAI Chat Model a la URL de tu servicio vLLM y establece el nombre del modelo en consecuencia.
Próximos pasos
Ahora tienes un despliegue de n8n listo para producción con queue mode, credenciales encriptadas y capacidades de AI Agent. Aquí es donde explorar a continuación:
- Lee la comparación n8n vs Temporal para entender cuándo usar orquestación de flujos versus automatización basada en eventos.
- Profundiza en patrones de automatización con n8n incluyendo manejo de errores, idempotencia y aislamiento de credenciales multi-tenant.
- Conecta tu instancia de n8n a un despliegue autohospedado de Ollama para automatización totalmente privada potenciada por LLM.
Si te encuentras con problemas no cubiertos aquí, deja un comentario con los detalles de tu configuración y te ayudaré a depurarlo.
Partes en esta serie: Parte 1: Configuración con Docker Compose ← | Parte 2: Guía de Manifiestos Kubernetes ←