n8n en producción: instalación con Docker y Traefik
- n8n
- docker
- traefik
- automatización
- self-hosted
- infraestructura
Montar n8n en producción con Docker y Traefik te da control total sobre tus flujos de automatización. No dependes de un tercero para la ejecución ni para la gestión de tus datos. Además, puedes escalar recursos a tu medida y pagar solo por el servidor que usas, no por cada paso de tus workflows.
La diferencia entre un n8n de prueba y uno que aguanta cargas reales es la infraestructura que lo soporta. Esto implica un VPS robusto, una configuración de Docker optimizada y un reverse proxy como Traefik para gestionar el tráfico y los certificados SSL.
Por qué n8n autoalojado es la opción robusta
La mayoría de los negocios empiezan con herramientas SaaS para la automatización, y es una buena estrategia inicial. Sin embargo, cuando el volumen de ejecuciones crece, los costes se disparan o la privacidad de los datos es crítica, la balanza se inclina hacia el self-hosted. Mi regla es clara: si el core de tu negocio depende de la automatización, debe estar bajo tu control.
n8n es una herramienta potente que, bien configurada, puede manejar miles de ejecuciones diarias sin inmutarse. Esto requiere una base sólida y un conocimiento de cómo operan los contenedores en producción.
Configuración inicial de Docker Compose para n8n
Para que n8n funcione correctamente en un entorno de producción, necesitas una configuración de Docker Compose que gestione la persistencia de datos y las variables de entorno. Los volúmenes Docker son importantes aquí para asegurar que tus datos no se pierdan si el contenedor se reinicia o se actualiza. Puedes profundizar en esto con mi artículo sobre volúmenes Docker vs bind mounts.
Aquí tienes un docker-compose.yml base:
version: '3.8'
services:
n8n:
image: n8n:latest
restart: always
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- VUE_APP_URL_BASE_API=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=Europe/Madrid
- TZ=Europe/Madrid
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
ports:
- "5678:5678" # Solo si no usas Traefik para proxy directo
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)"
- "traefik.http.routers.n8n.entrypoints=websecure"
- "traefik.http.routers.n8n.tls.certresolver=le"
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
- "traefik.http.middlewares.n8n-redirect.redirectscheme.scheme=https"
- "traefik.http.middlewares.n8n-redirect.redirectscheme.permanent=true"
volumes:
n8n_data:
Este docker-compose.yml presupone que ya tienes Traefik configurado para gestionar el entrypoint websecure y el certresolver le (Let’s Encrypt). Si no es así, tengo una guía completa sobre cómo gestionar certificados SSL automáticos con Let’s Encrypt y Traefik. Las variables de entorno como N8N_USER y N8N_PASSWORD deben definirse en un archivo .env o directamente en el entorno del servidor.
Integración de Traefik para acceso seguro y HTTPS
Traefik actuará como tu reverse proxy, enrutando las peticiones externas al contenedor de n8n y gestionando los certificados SSL automáticamente. Esto significa que no necesitas exponer el puerto 5678 de n8n directamente al público; solo los puertos 80 y 443 de Traefik estarán abiertos.
Las labels de Docker en el docker-compose.yml son las que le indican a Traefik cómo enrutar el tráfico. La regla Host(\${SUBDOMAIN}.${DOMAIN_NAME}`)` asegura que solo el tráfico dirigido a tu dominio específico llegue a n8n. Esto es una capa de seguridad y organización importante en cualquier configuración de producción.
Tradeoffs: lo que ganas y lo que complicas
Montar n8n en producción con tu propia infraestructura tiene ventajas claras, pero también implica responsabilidades.
Lo que ganas:
- Control total: Tus datos, tus flujos, tu configuración. No hay límites en el número de ejecuciones ni restricciones por planes de pago.
- Coste predecible: Una vez que pagas el VPS, el coste no escala linealmente con el uso de n8n. Ideal para automatizaciones de alto volumen.
- Privacidad: Tus datos sensibles nunca salen de tu servidor, a menos que tus flujos de trabajo los envíen a otros servicios.
- Flexibilidad: Puedes instalar plugins, personalizar el entorno y acceder a la base de datos subyacente si lo necesitas.
Lo que complicas:
- Mantenimiento: Eres responsable de las actualizaciones del sistema operativo, Docker, Traefik y n8n. Esto incluye monitorización y resolución de problemas.
- Configuración inicial: Requiere conocimientos de línea de comandos, Docker Compose y configuración de servidores.
- Seguridad: Debes asegurarte de que tu VPS esté bien securizado y que las credenciales estén protegidas. La implementación de un firewall como UFW o Fail2ban es un paso necesario.
Mi experiencia con clientes es que, para un uso intensivo, el control y el ahorro a largo plazo superan la complejidad inicial. Si no tienes un perfil técnico en el equipo, la opción más sensata es contratar a un profesional que te monte y mantenga estas automatizaciones.
Si estás evaluando cómo automatizar más procesos en tu negocio, tengo una guía práctica sobre cómo uso n8n para automatizar tareas como freelance que te puede dar ideas. Para asegurar que tu VPS está protegido desde el acceso, considera implementar Cloudflare Tunnel como única puerta de entrada. La monitorización básica de un VPS es necesaria para mantener tus sistemas bajo control.
Técnico freelance especializado en desarrollo a medida, automatizaciones con IA y gestión técnica para negocios en España. Más sobre mí →
¿Necesitas que alguien se ocupe de tu web?
Me encargo de que tu web funcione, esté segura y actualizada. Backups, actualizaciones y soporte directo. Planes desde 49 €/mes.