Lleva n8n a producción con un despliegue robusto en queue mode usando Redis como sistema de colas y Postgres como base de datos externa. Siguiendo estos pasos prácticos, configurarás servicios separados de main y worker, activarás la encriptación de credenciales y validarás la cola con un flujo de prueba. Todo con Docker Compose.
¿Cómo instalar n8n en queue mode con Docker, Redis y Postgres?
Prepara el entorno reutilizando los ficheros .env y docker-compose previos. El objetivo es que main orqueste y worker ejecute las tareas, descargando la carga de procesos y manteniendo la interfaz estable.
Genera una “n8n encryption key” larga para encriptar credenciales. Puedes usar un generador como randomkeygen.com o un comando con openssl. Añádela al .env.
Renombra el servicio n8n a n8n main en docker-compose. Mantén Postgres como base externa.
Agrega Redis como sistema de colas con imagen 6, reinicio always, puerto 6379 mapeado y volumen persistente para datos.
¿Cómo verificar que los servicios se levantan y que la cola funciona?
Inicia los servicios y revisa logs para confirmar URL de acceso, registro del worker y estado de Redis y Postgres. La verificación temprana evita errores de configuración.
¿Cómo lanzar y depurar con Docker Compose?
Arranca todo con: docker compose up.
Si aparece error por “container name n8n”, cambia los nombres a n8n-main y n8n-worker.
Recuerda: el worker no debe exponer el puerto 5678; bórralo si lo copiaste.
Usa Docker Desktop o la command line para ver logs de cada servicio.
Arranque
docker compose up
¿Qué señales confirman que todo está ok?
En n8n main: aparece la URL de acceso para registro.
En n8n worker: se registra un “JavaScript task runner”; verás que toma nuevas tareas.
En Redis: mensaje “ready to accept connections”.
En Postgres: listo para aceptar conexiones.
¿Cómo probar el encolado con un workflow de cron y espera?
buen curso temas que no sabia o que me llevarian buentiempo organizarlo y aplicarlo
Cómo no se explicó en clase me surgen un par de dudas.
¿tiene sentido tener múltiples instancias de n8n en el mismo servidor? Realmente, cargar el mismo equipo con más instancias carga la memoria y el procesador con otro programa, pero la cantidad de workflows que se pueden ejecutar en paralelo en un mismo equipo no depende de la cantidad de instancias, sino de la capacidad del servidor. Tiene más sentido hacerlo en Kubernetes, con varios nodos.
¿Usar el mismo volumen para varias instancias no podría ocasionar conflictos entre el main y los workers? creo que la workers no deberían tener un volumen asignado, ya que dependen de la base de datos del nodo principal. No requieren almacenamiento permanente.
Tanto el n8n main como los workers deben tener acceso a la bbdd y a Redis, de lo contrario no pueden funcionar. Y si deben tener acceso a la misma BBDD, para que puedan trabajar con los mismos datos, logicamente.
Quizá me expresé mal. Sí, todos deben conectarse al redis y a la relacional. Me refiero a que tengan un volumen permanente para nodejs, no es requerido en los workers. Solo tiene sentido tenerlo en el nodo principal o en una configuración multi-main con balanceo de carga.
Hola, agradeceria ayuda con las siguientes preguntas:
Seria una buena idea generar un password para redis?
Cual es la cantidad maxima de concurrency por worker?
veo un ejemplo que usan qdrant en el YML es de alguna manera necesario para n8n? cual es su funcion?
gracias de antemano por la atencion.
Siempre es buena idea segurizar las cosas, así que pienso que si, Redis debe tener password
No hay una cantidad máxima que te pueda decir tipo 30 concurrencias o así, depende de la cantidad de memoria y procesadores del servidor. Por lo general, monitoreando el rendimiento del servidor sabrás si necesitas otro worker o no.
QDrant es una base de datos vectorial. Tiene otro propósito que PostgreSQL y Redis. Sirve para guardar vectores y construir una arquitectura RAG
En la práctica real, yo no guardaría los datos de redis y sobre todo de PostgreSQL en un volumen local. Preferiría usar RDS de AWS y algún provider de Redis y sacar esas partes de la infraestructura del servidor principal de la aplicación.
Comparto repo con postgres, redis, n8n y ngrok para que se pueda usar en internet:
10 workers:
Como se podria crear una instalacion personalizada para EasyPanel de este modo Queue Mode, incluso adaptando la cantidad de workers?... tengo entendido permite instalaciones personalizadas
Para instalar n8n en tu laptop como si fuera un servidor y tener un dominio propio, sigue estos pasos:
Instala Docker: Asegúrate de tener Docker instalado en tu laptop.
Crea un archivo Docker Compose: En un directorio nuevo, crea un archivo docker-compose.yml con la configuración necesaria para n8n, PostgreSQL y Redis. Puedes basarte en el ejemplo del transcript.
Configura el dominio: Para tener un dominio propio, necesitarás un servicio de DNS que apunte a tu dirección IP. Configura tu router para redirigir el puerto 5678 (usualmente usado por n8n) a tu laptop.
Ejecuta Docker Compose: Ejecuta el comando docker-compose up -d en tu terminal para iniciar los servicios.
Recuerda que necesitarás una clave de encriptación y otras variables de entorno definidas en tu archivo .env. Así, n8n estará disponible en tu dominio.
docker compose up --scale n8n-worker=3
Por que usar redis?
Redis se usa como sistema de colas.
La instancia main almacena el execution id a la espera de que los workers lo consuman.
En este caso, hacer un scale de worker, por ejemplo a 3 es igual que poner en el docker compose worker --concurrency=3 ??
No, escalar los workers a 3 en Docker Compose no es lo mismo que ejecutar un solo worker con --concurrency=3. Si escalas el servicio a 3 workers, tendrás 3 procesos independientes, cada uno ejecutando trabajos en paralelo según su propia configuración, mientras que --concurrency=3 permite que un solo proceso worker ejecute hasta 3 trabajos simultáneamente.
Buenos dias comunidad de platzi, les tengo una duda alguien sabe por que al cambiar la version de n8n self hosted ya no funciona los MFA (doble authenticacion) en los usuarios que la tienen.
actualmente al registrar con una version y actualizarla a otra version superior se pierde la configuracion de MFA y toca borrar de cada cuenta la configuracion de las llaves para que se vuelve a registrar, gracias por la ayuda.