De desarrollo local a producción estable
Ejecutar n8n en local con docker run es trivial, pero desplegarlo en producción requiere considerar persistencia de datos, seguridad, rendimiento y alta disponibilidad. En esta guía detallamos cómo montar un entorno n8n robusto usando Docker y PostgreSQL, listo para manejar cientos de workflows en paralelo.
Arquitectura recomendada
El stack mínimo para producción consta de tres componentes: el contenedor n8n (aplicación principal), una base de datos PostgreSQL para persistir workflows y ejecuciones, y un reverse proxy (Nginx o Traefik) para SSL y routing. Opcionalmente, puedes añadir Redis para queue mode si necesitas escalar workers horizontalmente.
La configuración se gestiona mediante variables de entorno en un archivo docker-compose.yml. Las más importantes son: DB_TYPE=postgresdb, las credenciales de conexión a PostgreSQL, N8N_ENCRYPTION_KEY (crítico para cifrar credenciales almacenadas), y WEBHOOK_URL con la URL pública de tu instancia.
Docker Compose para n8n + PostgreSQL
Un archivo docker-compose.yml típico define dos servicios: el contenedor de PostgreSQL con un volumen persistente, y el contenedor de n8n que depende de PostgreSQL. El volumen de n8n almacena archivos subidos y configuraciones locales, mientras que los workflows y credenciales van a la base de datos.
Es fundamental configurar GENERIC_TIMEZONE y TZ a tu zona horaria (por ejemplo, Europe/Madrid) para que los triggers basados en cron se ejecuten correctamente. También recomendamos establecer EXECUTIONS_DATA_PRUNE=true con EXECUTIONS_DATA_MAX_AGE=168 (7 días) para evitar que la base de datos crezca indefinidamente.
Configuración de seguridad
En producción, n8n debe estar protegido. Activa la autenticación básica con N8N_BASIC_AUTH_ACTIVE=true o, mejor aún, configura autenticación por JWT. Coloca n8n detrás de un reverse proxy con certificado SSL de Let’s Encrypt. Nunca expongas el puerto 5678 directamente a internet.
Para equipos que gestionan múltiples proyectos de plataformas a medida, recomendamos aislar cada instancia de n8n por proyecto o cliente, usando redes Docker separadas y bases de datos dedicadas. Esto previene que un workflow mal configurado afecte a otros.
Monitorización y backups
Configura health checks en Docker para reiniciar n8n automáticamente si deja de responder. Programa backups diarios de PostgreSQL con pg_dump. Si usas Kubernetes, puedes configurar liveness/readiness probes y CronJobs para backups automatizados.
Para monitorización avanzada, n8n expone métricas compatibles con Prometheus en el endpoint /metrics. Puedes visualizarlas con dashboards de Grafana para tener visibilidad en tiempo real del rendimiento de tus automatizaciones.
Actualización y mantenimiento
Actualizar n8n es tan simple como cambiar la etiqueta de imagen en docker-compose.yml y hacer docker-compose pull && docker-compose up -d. Sin embargo, siempre haz backup antes de actualizar — las migraciones de base de datos son automáticas pero irreversibles. Revisa el changelog de cada versión para detectar breaking changes en nodos que uses.