n8n

n8n en modo cola sobre Docker, con workers, task runners, PostgreSQL y Redis propios, HTTPS y actualizaciones con respaldo.

  • Categoría: Servidores e infraestructura
  • Estado: Disponible
  • Requisitos: Un VPS activo con al menos 4 GB de RAM libre real (no la nominal del plan); Docker posible en el VPS (los VPS nuevos ya traen los permisos); Ningún n8n instalado por npm en ese VPS
  • Herramientas MCP (Solo leen): ver_preflight_app, ver_app, ver_operacion_app
  • Herramientas MCP (Escriben o modifican): instalar_app, controlar_app, reintentar_operacion_app
  • Herramientas MCP (Destructivas): desinstalar_app

Markdown

¿Qué permite hacer?

ArduMaker instala n8n como un stack de Docker listo para producción: un proceso principal, workers en modo cola, un task runner por proceso, su propio PostgreSQL y su propio Redis. Es una instalación por VPS.

  • Instalar sin preguntas: las credenciales internas se generan solas.
  • Publicar el editor con HTTPS; la URL de webhooks y del editor se configura sola.
  • Reiniciar, actualizar de versión (con copia de la base antes) y escalar workers.
  • Editar variables de entorno desde el panel, con las críticas protegidas.
  • Desinstalar conservando los datos, o borrándolos con confirmación.

¿Cuándo conviene usarlo?

  • Automatizaciones y webhooks propios, sin límites de ejecuciones de un servicio alojado.
  • Flujos con nodos Code que necesitan aislamiento real (task runners externos).
  • Mucho volumen de ejecuciones que conviene repartir entre workers.

¿Cómo funciona en ArduMaker?

  1. Validar: VPS activo, función n8n del sistema, Docker posible y RAM libre real (MemAvailable) de al menos 4 GB. Si ya hay un n8n (Docker o npm), se adopta tal cual, sin reinstalar ni migrar.
  2. Preparar credenciales (o reutilizar las del .env de un intento anterior: un PostgreSQL ya inicializado no acepta otra contraseña).
  3. Generar el Compose desde código según la RAM libre, bajar las imágenes como paso largo y levantar el stack.
  4. Publicar el editor (puerto 5678) con HTTPS y escribir en el .env WEBHOOK_URL y N8N_EDITOR_BASE_URL con la dirección publicada, y N8N_PROXY_HOPS=1.
  5. Verificar: running solo con el proceso principal activo, /healthz y /healthz/readiness en 200 y todos los workers activos.

Si un worker se cae a mitad, quien retoma la operación espera la misma instalación: nunca lanza un segundo stack.

¿Qué cambia realmente?

Archivo o recursoContenido
/opt/n8n/docker-compose.ymlCompose generado por la plataforma (644 root)
/opt/n8n/.envVariables de todos los contenedores (600 root)
/opt/n8n/stack.jsonVersión, topología, límites y volúmenes (600 root)
/opt/n8n/backups/Volcados diarios de la base con 7 días de retención (timer n8n-db-backup)
n8n-stack.serviceUnidad que controla el stack con docker compose
Volúmenesn8n_data, n8n_pg_data, n8n_redis_data

RAM, workers y topología

La cantidad de workers sale de la RAM libre real, no del plan. Además se reservan 896 MB fijos para PostgreSQL y Redis y 512 MB de holgura antes de conceder workers extra; el máximo es 8.

RAM libreWorkersRunner del principal
Menos de 4 GBSe rechaza—
4 – 5,9 GB2No
6 – 7,9 GB3No
8 GB o más4 o más (hasta 8)Sí

Cada contenedor lleva su límite de memoria y n8n recibe --max-old-space-size en torno al 75 % de ese límite, para que el recolector trabaje antes de que el sistema mate el proceso. Los logs rotan (10 MB, 3 archivos) y el historial de ejecuciones se poda a los 14 días.

Variables de entorno

  • Protegidas (no se editan): N8N_ENCRYPTION_KEY, N8N_RUNNERS_AUTH_TOKEN, DB_POSTGRESDB_*, POSTGRES_*, REDIS_PASSWORD, QUEUE_BULL_REDIS_*.
  • Gestionadas por la plataforma: N8N_WORKERS (escalado), WEBHOOK_URL y N8N_EDITOR_BASE_URL (dominio), EXECUTIONS_MODE, N8N_RUNNERS_MODE, N8N_PORT.
  • Secretas (se muestran enmascaradas): las protegidas y cualquiera que termine en PASSWORD, SECRET, TOKEN, KEY o _PWD. Revelarlas exige admin y queda registrado.
  • Los valores no pueden tener comillas, #, $, acento grave, barra invertida ni saltos de línea: un valor así no falla, vale otra cosa.

Actualizar, escalar y respaldar

  • Actualizar baja las imágenes de n8n y de los runners (mismo tag), hace un volcado de la base, regenera el Compose y levanta; si la verificación falla, vuelve a la versión anterior.
  • Subir workers no corta nada; bajarlos detiene primero los de índice alto con un tiempo de gracia para terminar las ejecuciones en curso.
  • La copia semanal del VPS incluye los volúmenes, pero se toma en caliente; el volcado diario de /opt/n8n/backups/ es la copia consistente de la base.

Esquema

  1. Internet: HTTPS en la dirección publicada
  2. nginx del VPS: reparte a 127.0.0.1:5678
  3. `n8n-main`: editor y webhooks; encola ejecuciones
  4. `n8n-redis`: cola de ejecuciones
  5. `n8n-worker-N`: ejecuta, cada uno con su runner
  6. `n8n-postgres`: base de workflows, credenciales y ejecuciones
Stack de n8n en el VPS — PostgreSQL y Redis del stack nunca se publican: viven en la red interna del proyecto Compose.

Resultado esperado

La app n8n figura en Apps como una sola app (sus contenedores son componentes) con la URL HTTPS del editor cuando el enlace está verificado.

docker compose -p n8n ps
docker logs n8n-main --tail 50

Errores y resolución

Error o síntomaCausa y qué hacer
recursos_insuficientesMenos de 4 GB de RAM libre real. Liberar memoria o subir de plan.
requiere_reinicio_vpsVPS viejo sin permisos de Docker: hay que reiniciarlo.
n8n_npm_instaladoHay un n8n por npm: no se instala Docker encima.
app_ya_existe / limite_de_tipoYa hay un n8n en ese VPS (o una instalación en curso).
n8n_instalandose / n8n_instalacion_fallidaSigue instalándose o terminó con error. Reintentable: relanza con las credenciales del .env.
n8n_webhook_no_configuradoQuedó publicado pero el .env no tomó la URL. Reintentable, sin reinstalar.
Ejecuciones con nodo Code encoladas para siempreUn runner no encontró su worker o tiene otra versión de imagen.
Se cambió una variable y no pasó nadacompose restart no relee el .env: hay que reiniciar recreando los contenedores.

Relación con MCP

n8n se instala y opera por MCP con las herramientas de Apps (/mcp/docs, /mcp/servicios).

  • Lectura: ver_preflight_app (con app_type: n8n dice si entra por RAM y Docker), ver_app, ver_operacion_app.
  • Modifican: instalar_app con app_type: n8n y config opcional workers (1–8), concurrency (1–50) y version; controlar_app con restart o update; reintentar_operacion_app.
  • Destructiva: desinstalar_app (solo admin). Conserva volúmenes salvo delete_data=true con confirm_delete_data=true, que borra la base de n8n.

Cualquier otro campo en config (usuarios, contraseñas) responde config_invalida. Las variables de entorno y el escalado se manejan desde el panel; las acciones solo existen para el runtime Docker (un n8n por npm responde runtime_no_soportado).

Funciones relacionadas