n8n
Automatización y Flujo de Trabajo
n8n es una herramienta de automatización de flujos de trabajo que soporta una configuración de alta disponibilidad con arquitectura separada: un frontend para la interfaz de usuario, workers para ejecutar tareas distribuidas, y un webhook processor para gestionar eventos en tiempo real, todos conectados mediante una cola de mensajes como Redis para escalabilidad y rendimiento.
Vista Previa
version: "3.7"
# Definición de Servicios
services:
# Definición del Servicio Editor
n8n_editor:
# imagen de docker
image: n8nio/n8n:latest
# comando predeterminado para iniciar el servidor web
volumes:
- n8n:/home/node/.n8n/nodes
# acceda al servidor general a través de SSH y entre en la carpeta: /var/lib/docker/volumes/n8n/_data#
# para poder instalar los nodos de la comunidad con el comando: sudo npm i <repositorio>
command: start
# configura la red del servicio
networks:
- network_public
# configura las variables de ambiente
environment:
# Define el tipo de base de datos para Postgres
- DB_TYPE=postgresdb
# Configura el nombre de la base de datos
- DB_POSTGRESDB_DATABASE=n8ndb
# Configura el host de la base de datos
- DB_POSTGRESDB_HOST=postgres
# Configura el puerto de la base de datos
- DB_POSTGRESDB_PORT=5432
# Configura el usuario de la base de datos
- DB_POSTGRESDB_USER=postgres
# Configura la contraseña de la base de datos
- DB_POSTGRESDB_PASSWORD=hXLkvWWs4gzLdJidUwM
# Crea una clave de cifrado para N8N
# Genera una nueva aquí https://www.allkeysgenerator.com/Random/Security-Encryption-Key-Generator.aspx
# elige la opción GUID
- N8N_ENCRYPTION_KEY=r3djGX2vPoeL9zKL
# Configura el host del Editor N8N
- N8N_HOST=n8n.hiveagile.dev
# Configura la dirección completa del Editor
- N8N_EDITOR_BASE_URL=https://n8n.hiveagile.dev/
# Fuerza el uso de SSL
- N8N_PROTOCOL=https
# Configura el ambiente de ejecución
- NODE_ENV=production
# Configura la dirección del Webhook
- WEBHOOK_URL=https://webhook.hiveagile.dev/
# Configura el modo de ejecución para cola
- EXECUTIONS_MODE=queue
# Configura el host de Redis
- QUEUE_BULL_REDIS_HOST=redis
# Configura el puerto de Redis
- QUEUE_BULL_REDIS_PORT=6379
# Configura el índice de la base de datos Redis
- QUEUE_BULL_REDIS_DB=2
# Configura las bibliotecas externas que serán utilizadas
- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales
# Configura la limpieza de los datos de ejecución
- EXECUTIONS_DATA_PRUNE=true
# Configura el tiempo máximo de almacenamiento de los datos de ejecución
- EXECUTIONS_DATA_MAX_AGE=336 # 2 semanas
# Zona horaria
- GENERIC_TIMEZONE=Europe/Madrid
- TZ=Europe/Madrid
# Configura el Modo de Despliegue de la Aplicación
deploy:
# El editor se ejecutará en modo replicación
mode: replicated
# Tendremos solo una instancia del editor
replicas: 1
# Configura el lugar de ejecución
placement:
constraints:
# Puedes ejecutar el Editor en el Manager ya que usa pocos recursos
- node.role == manager
#- node.hostname == worker1
# - node.labels.app == http # nombre del label: app, valor del label: http
# Limitación
resources:
# Definición de los Límites de Recursos de este Servicio
limits:
# Define la cantidad de CPU para el CodeChat para evitar bloqueos del Host
cpus: "0.5"
# Define la cantidad de RAM para el CodeChat para evitar bloqueos del Host
memory: 1024M
labels:
# Configura el Enrutamiento de Traefik
- traefik.enable=true
- traefik.http.routers.n8n_editor.rule=Host(`n8n.hiveagile.dev`)
- traefik.http.routers.n8n_editor.entrypoints=websecure
- traefik.http.routers.n8n_editor.priority=1
- traefik.http.routers.n8n_editor.tls.certresolver=letsencryptresolver
- traefik.http.routers.n8n_editor.service=n8n_editor
- traefik.http.services.n8n_editor.loadbalancer.server.port=5678
- traefik.http.services.n8n_editor.loadbalancer.passHostHeader=1
n8n_webhook:
# imagen de docker
image: n8nio/n8n:latest
# comando predeterminado para iniciar el servidor web
command: webhook
# configura la red del servicio
networks:
- network_public
# configura las variables de ambiente
environment:
# Define el tipo de base de datos para Postgres
- DB_TYPE=postgresdb
# Configura el nombre de la base de datos
- DB_POSTGRESDB_DATABASE=n8ndb
# Configura el host de la base de datos
- DB_POSTGRESDB_HOST=postgres
# Configura el puerto de la base de datos
- DB_POSTGRESDB_PORT=5432
# Configura el usuario de la base de datos
- DB_POSTGRESDB_USER=postgres
# Configura la contraseña de la base de datos
- DB_POSTGRESDB_PASSWORD=hXLkvWWs4gzLdJidUwM
# usa la misma clave creada en el editor
- N8N_ENCRYPTION_KEY=r3djGX2vPoeL9zKL
# Configura el host del Editor N8N
- N8N_HOST=n8n.hiveagile.dev
# Configura la dirección completa del Editor
- N8N_EDITOR_BASE_URL=https://n8n.hiveagile.dev/
# Fuerza el uso de SSL
- N8N_PROTOCOL=https
# Configura el ambiente de ejecución
- NODE_ENV=production
# Configura la dirección del Webhook
- WEBHOOK_URL=https://webhook.hiveagile.dev/
# Configura el modo de ejecución para cola
- EXECUTIONS_MODE=queue
# Configura el host de Redis
- QUEUE_BULL_REDIS_HOST=redis
# Configura el puerto de Redis
- QUEUE_BULL_REDIS_PORT=6379
# Configura el índice de la base de datos Redis
- QUEUE_BULL_REDIS_DB=2
# Configura las bibliotecas externas que serán utilizadas
- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales
# Configura la limpieza de los datos de ejecución
- EXECUTIONS_DATA_PRUNE=true
# Configura el tiempo máximo de almacenamiento de los datos de ejecución
- EXECUTIONS_DATA_MAX_AGE=336 # 2 semanas
# Zona horaria
- GENERIC_TIMEZONE=Europe/Madrid
- TZ=Europe/Madrid
# Configura el Modo de Despliegue de la Aplicación
deploy:
# El editor se ejecutará en modo replicación
mode: replicated
# Tendremos solo dos instancias del editor
replicas: 2
# Configura el lugar de ejecución
placement:
# Puedes ejecutar el Editor en el Manager ya que usa pocos recursos
constraints:
- node.role == manager
# - node.hostname == worker1
# - node.labels.app == workers # nombre del label: app, valor del label: workers
resources:
# Definición de los Límites de Recursos de este Servicio
limits:
# Define la cantidad de CPU para el CodeChat para evitar bloqueos del Host
cpus: "0.5"
# Define la cantidad de RAM para el CodeChat para evitar bloqueos del Host
memory: 1024M
labels:
# Configura el Enrutamiento de Traefik
- traefik.enable=true
- traefik.http.routers.n8n_webhook.rule=(Host(`webhook.hiveagile.dev`))
- traefik.http.routers.n8n_webhook.entrypoints=websecure
- traefik.http.routers.n8n_webhook.priority=1
- traefik.http.routers.n8n_webhook.tls.certresolver=letsencryptresolver
- traefik.http.routers.n8n_webhook.service=n8n_webhook
- traefik.http.services.n8n_webhook.loadbalancer.server.port=5678
- traefik.http.services.n8n_webhook.loadbalancer.passHostHeader=1
n8n_worker:
# imagen de docker
image: n8nio/n8n:latest
# comando predeterminado para iniciar el servidor web
command: worker --concurrency=10
# configura la red del servicio
networks:
- network_public
# configura las variables de ambiente
environment:
# Define el tipo de base de datos para Postgres
- DB_TYPE=postgresdb
# Configura el nombre de la base de datos
- DB_POSTGRESDB_DATABASE=n8ndb
# Configura el host de la base de datos
- DB_POSTGRESDB_HOST=postgres
# Configura el puerto de la base de datos
- DB_POSTGRESDB_PORT=5432
# Configura el usuario de la base de datos
- DB_POSTGRESDB_USER=postgres
# Configura la contraseña de la base de datos
- DB_POSTGRESDB_PASSWORD=hXLkvWWs4gzLdJidUwM
# usa la misma clave creada en el editor
- N8N_ENCRYPTION_KEY=r3djGX2vPoeL9zKL
# Configura el host del Editor N8N
- N8N_HOST=n8n.hiveagile.dev
# Configura la dirección completa del Editor
- N8N_EDITOR_BASE_URL=https://n8n.hiveagile.dev/
# Fuerza el uso de SSL
- N8N_PROTOCOL=https
# Configura el ambiente de ejecución
- NODE_ENV=production
# Configura la dirección del Webhook
- WEBHOOK_URL=https://webhook.hiveagile.dev/
# Configura el modo de ejecución para cola
- EXECUTIONS_MODE=queue
# Configura el host de Redis
- QUEUE_BULL_REDIS_HOST=redis
# Configura el puerto de Redis
- QUEUE_BULL_REDIS_PORT=6379
# Configura el índice de la base de datos Redis
- QUEUE_BULL_REDIS_DB=2
# Configura las bibliotecas externas que serán utilizadas
- NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash,moment-with-locales
# Configura la limpieza de los datos de ejecución
- EXECUTIONS_DATA_PRUNE=true
# Configura el tiempo máximo de almacenamiento de los datos de ejecución
- EXECUTIONS_DATA_MAX_AGE=336 # 2 semanas
# Zona horaria
- GENERIC_TIMEZONE=Europe/Madrid
- TZ=Europe/Madrid
# Configura el Modo de Despliegue de la Aplicación
deploy:
# El editor se ejecutará en modo replicación
mode: replicated
# Tendremos solo una instancia del editor
replicas: 1
# Configura el lugar de ejecución
placement:
# Puedes ejecutar el Editor en el Manager ya que usa pocos recursos
constraints:
- node.role == manager
# - node.hostname == worker1
# - node.labels.app == webhooks # nombre del label: app, valor del label: webhooks
resources:
# Definición de los Límites de Recursos de este Servicio
limits:
# Define la cantidad de CPU para el CodeChat para evitar bloqueos del Host
cpus: "0.5"
# Define la cantidad de RAM para el CodeChat para evitar bloqueos del Host
memory: 1024M
networks:
network_public:
name: proxy
external: true
volumes:
n8n:
external: true
name: n8n