Cómo instalar n8n con Docker paso a paso (2026)
Guía operativa para instalar e implementar n8n con Docker en un VPS de la UE: preparación del host, archivo Docker Compose, volumen de persistencia, variables de entorno, reverse proxy HTTPS y comprobaciones antes de abrir el editor a usuarios reales. Pensada para equipos de automatización B2B en España que quieren n8n self-hosted reproducible entre staging y producción.
Montar n8n en contenedor te da un artefacto versionable: el mismo docker-compose.yml levanta la instancia en un VPS de prueba y en producción, con diferencias acotadas al archivo .env. Eso importa cuando legal pide saber dónde residen credenciales o cuando operaciones quiere clonar el entorno tras un incidente.
Partimos de un Linux reciente (Ubuntu 22.04 o Debian 12), acceso SSH y un subdominio con registro A hacia el servidor. No necesitas dominar Kubernetes; basta seguir la secuencia de comandos, validar logs y comprobar que el volumen persiste tras un reinicio.
Vídeo. Vista rápida del despliegue
Antes de entrar en comandos, este vídeo resume el flujo completo: preparar Docker, levantar el compose, abrir el editor y comprobar que los datos persisten tras un reinicio.
Transcripción del vídeo
Instalar n8n en tu propio equipo con Docker es una forma accesible de experimentar con automatizaciones sin pagar un plan cloud mensual y manteniendo mayor control sobre los datos. Es especialmente útil para freelancers, equipos pequeños o quienes quieren probar flujos comerciales antes de desplegar en un VPS dentro de la Unión Europea.
Docker simplifica lo que, de otro modo, implicaría instalar dependencias, bases de datos y versiones concretas de Node a mano. Un contenedor es un entorno empaquetado con todo lo necesario para ejecutar n8n.
Qué vas a conseguir con esta guía
Al cerrar los pasos tendrás n8n accesible por HTTPS, credenciales y definiciones de flujo guardadas en volumen nombrado, y un proxy delante del puerto 5678.
El objetivo es un despliegue modesto pero fiable: 2 vCPU, 4 GB RAM y datacenter en la UE suelen bastar para la primera fase. Colocar un reverse proxy con certificado válido antes de invitar usuarios evita reconfigurar WEBHOOK_URL dos veces y reduce exposición del panel.
- Contenedor n8n actualizao con Docker Compose y política de reinicio automático.
- Volumen nombrado para credenciales, historial y definición de flujos.
- Variables de entorno alineaas con tu dominio y zona horaria europea.
- Checklist de firewall, HTTPS y usuarios antes de conectar datos reales.
- Prueba de persistencia tras reiniciar el servicio o el propio VPS.
Quien migra desde SaaS de automatización notará más responsabilidad de infraestructura: parches del host, caducidad de certificados, snapshots del volumen.
No hace falta dimensionar colas Redis ni PostgreSQL el día uno.
Duplicar el directorio /opt/n8n en un segundo VPS de staging permite probar docker compose pull antes de tocar producción. Anota la versión de imagen desplegada: un salto de minor version sin prueba previa es la causa más habitual de sorpresas tras el primer mes en servicio.
Requisitos previos (máquina, Docker, DNS)
Antes de instalar n8n con Docker , confirma que tienes hardware y red suficientes.
Hardware y VPS
- Mínimo viable: 1 vCPU, 2 GB RAM, 20 GB SSD. Sirve para pruebas y pocos flujos.
- Producción ligera: 2 vCPU, 4 GB RAM, 40 GB SSD. Punto de partida habitual para equipos B2B.
- Ubicación: elige región en la UE (Frankfurt, París, Madrid si está disponible) para latencia y soberanía de datos.
Software base
Necesitas Docker Engine 24+ y el plugin Compose v2. En Ubuntu/Debian modernos basta con el paquete oficial de Docker. Comprueba con docker --version y docker compose version antes de continuar.
Opcional pero recomendable: un usuario Linux sin root para ejecutar compose, y acceso SSH con clave pública en lugar de contraseña.
DNS y dominio
Reserva un subdominio, por ejemplo n8n.tuempresa.es, con registro A hacia la IP pública del VPS. Los webhooks de n8n generan URLs absolutas; si el dominio cambia después, tendrás que actualizar integraciones y la variable WEBHOOK_URL.
Desde el primer despliegue, anota qué subdominio usarás, quién tendrá acceso SSH al host y quién al editor web.
Proveedores VPS habituales en la UE
Hetzner, OVH, Scaleway y Contabo ofrecen planes económicos con datacenter europeo. DigitalOcean y Linode también tienen región Frankfurt o Ámsterdam.
Reserva un margen de disco: el historial de ejecuciones crece con el tiempo. Configura rotación o limpieza periódica si activas retención larga de logs dentro de n8n.
Preparar el servidor y Docker
Conéctate por SSH al VPS. Actualiza paquetes e instala Docker si aún no está presente. En Ubuntu 22.04 puedes usar el script oficial de Docker o los repositorios apt documentaos en docker.com.
Tras la instalación, habilita el servicio al arranque y verifica que tu usuario puede ejecutar contenedores sin sudo (grupo docker). Reinicia sesión SSH después de añadir el grupo.
Crea un directorio de proyecto, por ejemplo /opt/n8n, con permisos restringidos. Ahí vivirán el docker-compose.yml, un archivo .env con secretos y, si lo usas, la configuración del reverse proxy.
- Actualiza el sistema:
sudo apt update && sudo apt upgrade -y - Instala Docker Engine y Compose plugin según la documentación oficial.
- Configura firewall (ufw): permite SSH (22), HTTP (80) y HTTPS (443). No abras 5678 al mundo si usarás proxy.
- Sincroniza hora con NTP; los cron de workflows dependen de la hora del servidor.
Si el VPS es nuevo, genera claves SSH locales y desactiva login root por contraseña.
Comprueba conectividad saliente hacia registros Docker y, más adelante, hacia APIs de CRM, email o almacenamiento que usarás en producción.
Reverse proxy en el mismo host
Caddy es la opción más rápida si quieres HTTPS automático con Let's Encrypt: un bloque reverse_proxy localhost:5678 basta tras apuntar DNS. Nginx y Traefik funcionan igual de bien con más configuración manual. El proxy debe reenviar cabeceras de protocolo y cliente real; n8n las usa para generar URLs correctas detrás de TLS.
Instala el proxy como segundo servicio en otro compose o directamente en el host. Mantener n8n escuchando solo en 127.0.0.1 reduce la superficie de ataque mientras pruebas certificados. Cuando el dominio responda en verde, vuelve a activar workflows con webhooks para que registren la URL pública definitiva.
Crear el archivo Docker Compose
El núcleo del despliegue es un servicio único con imagen oficial. Usa la etiqueta publicada en el registro de n8n (docker.n8n.io/n8nio/n8n) en lugar de imágenes no verificaas.
Define política restart: unless-stopped para que el contenedor vuelva tras un reboot del host.
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: unless-stopped
ports:
- 127.0.0.1:5678:5678
env_file:
- .env
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Fijar el bind a 127.0.0.1 impide acceso directo desde internet al puerto de n8n. El reverse proxy en el mismo host reenvía tráfico HTTPS hacia localhost:5678. Es un patrón habitual en despliegues self-hosted en España y resto de la UE.
Guarda el archivo, crea el .env en el mismo directorio (ver siguiente sección) y valida sintaxis con docker compose config. Si hay errores de indentación YAML, Compose los señala antes de descargar la imagen.
Variables de entorno y volumen de datos
Las variables de entorno le dicen a n8n cómo construir URLs públicas, qué zona horaria usar en nodos Cron y cómo se comporta el editor.
Ejemplo de .env para un subdominio europeo con HTTPS terminado en el proxy:
N8N_HOST=n8n.tuempresa.esN8N_PROTOCOL=httpsWEBHOOK_URL=https://n8n.tuempresa.es/GENERIC_TIMEZONE=Europe/MadridTZ=Europe/MadridN8N_ENCRYPTION_KEY=cadena aleatoria larga (guárdala en gestor de secretos)
El volumen n8n_data montado en /home/node/.n8n almacena la base SQLite por defecto, credenciales cifradas, workflows exportados y logs locales. Sin este volumen, cada docker compose down -v borra todo el trabajo del equipo.
Planifica copias de seguridad del volumen: snapshot del proveedor, docker run con bind mount temporal o backup nocturno del directorio de datos. Para automatización B2B con datos de clientes, prueba restauración al menos una vez; un backup que nunca se restauró es fe.
Si más adelante migras a PostgreSQL (recomendable con mucha concurrencia), el volumen sigue siendo útil para archivos binarios y configuración, pero la base relacional vivirá en otro servicio Compose.
Claves y secretos fuera del repositorio
Nunca subas el archivo .env a Git. Añádelo a .gitignore y comparte valores sensibles por gestor de contraseñas del equipo. La variable N8N_ENCRYPTION_KEY protege credenciales almacenadas en la base; si la pierdes, tendrás que volver a autenticar cada integración manualmente.
Para entornos con varias personas, define quién puede ejecutar docker compose en producción. Un cambio accidental en variables de entorno un viernes tarde puede dejar webhooks apuntando a un dominio de staging. Etiqueta claramente los directorios /opt/n8n-prod y /opt/n8n-staging si mantienes ambos.
Arrancar n8n y entrar al editor
Desde /opt/n8n ejecuta docker compose up -d. La primera vez descargará la imagen; puede tardar uno o dos minutos según la red del VPS. Comprueba estado con docker compose ps y logs con docker compose logs -f n8n.
1:5678 vía túnel SSH si aún no tienes HTTPS.
Crea un workflow de prueba mínimo: un Manual Trigger conectado a un nodo Set que devuelva un JSON fijo. Ejecútalo y revisa la pestaña de ejecuciones. Si aparece en verde, el motor funciona y puedes pasar a integraciones reales (CRM, Slack interno, email transaccional).
No conectes credenciales de producción el primer día. Usa entornos sandbox del CRM o cuentas de prueba. Así validas latencia desde el VPS hacia APIs europeas y detectas límites de rate limit antes de automatizar campañas comerciales.
Smoke test antes de entregar el acceso
Antes de compartir credenciales del panel, ejecuta un flujo mínimo de validación: Manual Trigger, Set con JSON fijo, nodo vacío.
Comprueba también que la URL pública responde con certificado válido y que WEBHOOK_URL genera enlaces con tu dominio, no con localhost.
Comprobar que los workflows sobreviven a un reinicio
La persistencia separa un experimento de una plataforma operativa. Guarda el workflow de prueba, detén el stack con docker compose down (sin -v) y vuelve a levantarlo. El flujo debe seguir en el listado y las credenciales intactas.
Repite la prueba reiniciando el VPS completo. Tras el boot, Docker debe arrancar el contenedor solo gracias a restart: unless-stopped .
- Crea workflow de prueba y ejecútalo una vez.
docker compose restart n8n, comprueba que el flujo sigue ahí.sudo rebooten ventana controlada, valida arranque automático.- Documenta la ruta del volumen (
docker volume inspect n8n_data) para backups.
Equipos de operaciones en la UE suelen exigir evidencia de estas pruebas antes de mover flujos que sincronizan oportunidades o datos de facturación. Un registro breve en Confluence o Notion basta.
Seguridad mínima antes de usarlo en producción
n8n concentra credenciales de CRM, email y APIs internas. Tratarlo como solo una herramienta interna sin hardening es un riesgo evitable. Esta checklist cubre lo esencial antes de conectar datos vivos.
- HTTPS obligatorio: certificado Let's Encrypt con Caddy, Traefik o Nginx como reverse proxy. Redirige HTTP a HTTPS.
- Acceso restringido: VPN, IP allowlist o SSO si tu versión lo soporta. Evita panel público sin segunda capa.
- Usuarios y roles: cuenta personal por miembro; retira accesos cuando alguien deja el equipo.
- Secretos:
N8N_ENCRYPTION_KEYestable; no la cambies sin plan de migración. - Actualizaciones: fija cadencia mensual para pull de imagen y reinicio controlado.
- Logs: revisa ejecuciones fallidas; pueden filtrar PII si debug está activo en nodos HTTP.
El cumplimiento RGPD no lo resuelve el contenedor solo: exige inventario de quién accede al host, cifrado de backups del volumen y registro de qué integraciones externas reciben datos desde n8n.
Revisa en la documentación oficial las variables que controlan telemetría y diagnóstico si tu política de seguridad las restringe.
Monitorización ligera
No hace falta un stack completo el día uno.
Registra qué versión de imagen desplegaste en un CHANGELOG interno. Cuando la comunidad publique avisos de seguridad, sabrás si tu instancia está afectada sin revisar contenedores a ciegas.
Compose vs Cloud vs instalación local
Elegir dónde corre n8n afecta coste, soberanía y velocidad de arranque. Esta tabla resume trade-offs para equipos B2B que evalúan n8n self-hosted frente a alternativas.
| Criterio | Docker Compose en VPS | n8n Cloud | Local (Docker en portátil) |
|---|---|---|---|
| Control de datos | Alto: eliges región UE y backups | Medio: infra gestionada por n8n | Alto en disco local, bajo para compartir |
| Coste mensual estimado | 5 a 25 € VPS + tu tiempo ops | Plan SaaS según ejecuciones | Gratis; no apto 24/7 |
| Webhooks públicos | Sí, con dominio y HTTPS | Sí, incluido | No estable sin túneles |
| Mantenimiento | Actualizaciones, backups, proxy | Bajo | Solo desarrollo |
| Ideal para | Producción B2B en UE | POC rápido sin DevOps | Aprender nodos y prototipos |
Compose en VPS compensa cuando necesitas fijar versión, retener logs meses o conectar APIs en red privada. Cloud gana si el cuello de botella es tiempo hasta el primer login en el editor, no soberanía del disco ni coste por ejecución.
Fallos habituales y cómo resolverlos
Estos problemas aparecen una y otra vez al desplegar n8n con Docker. La mayoría se resuelve revisando variables, red o permisos del volumen.
Webhooks devuelven URL incorrecta
Síntoma: integraciones externas llaman a http://localhost:5678/.... Solución: ajusta WEBHOOK_URL y N8N_HOST, reinicia el contenedor y vuelve a activar el workflow para regenerar URLs.
Permiso denegado en volumen
Síntoma: logs con EACCES en /home/node/.n8n. Solución: deja que Docker cree el volumen nombrado; no montes carpetas del host con dueño root. Si necesitas bind mount, alinea UID 1000 o usa user: en compose según documentación.
Contenedor reinicia en bucle
Revisa docker compose logs n8n. Causas típicas: variable obligatoria ausente, puerto ya ocupado o imagen corrupta. Prueba docker compose pull y recrea el servicio.
HTTPS mixto o cookies de sesión
Si el proxy termina TLS pero n8n cree que está en HTTP, activa cabeceras X-Forwarded-Proto y X-Forwarded-For en el reverse proxy. Sin ellas, el editor puede fallar al guardar o al usar websockets.
Workflows lentos en hor punta
Monitoriza docker stats . Escala RAM del VPS o separa workers si migras a cola Redis más adelante.
Imagen desactualizaa o caché Docker
Si esperas una función nueva y no aparece, ejecuta docker compose pull n8n seguido de docker compose up -d. Docker no actualiza tags latest solos; necesitas pull explícito. En producción, fija digest o versión semver cuando un flujo crítico dependa de comportamiento estable.
Espacio en disco lleno
Síntoma: ejecuciones fallan al escribir en SQLite. Revisa df -h y el tamaño del volumen.
¿Cómo encaja este flujo con el EU AI Act y el RGPD?
El Reglamento (UE) 2024/1689 (EU AI Act) ya está en vigor. Si tu equipo usa automatizaciones con nodos de IA en n8n (Gemini, OpenAI, Claude u otros), la empresa actúa como desplegadora (deployer): no hace falta haber creado el modelo. Desde el 2 de febrero de 2025 el Artículo 4 exige un nivel suficiente de alfabetización en IA para quien opera estos sistemas. En España, la supervisión se articula con la AESIA (IA) y la AEPD (RGPD).
El RGPD sigue aplicando a nombres, correos y cargos de Leads B2B: base jurídica, minimización y, si hay perfiles automatizados a escala, evaluación de impacto. AI Act y RGPD se acumulan. Preferid n8n self-hosted en VPS UE, zona Europe/Madrid, logs de ejecución y aprobación humana (human-in-the-loop) antes de acciones sensibles en el CRM.
Detalle de transparencia Logixb2b: Uso responsable de IA y Transparencia. Este apartado es informativo, no sustituye asesoramiento legal ni de un DPO.
Evalúa tus horas y riesgos con el Auditor de Eficiencia Operativa B2B.
Extra. Compose listo para copiar
Este bloque une servicio, variables inline mínimas y volumen persistente. Sustituye el dominio, genera una clave de cifrado y colócalo en tu VPS europeo. Es el punto de partida que usamos en entornos de staging antes de conectar HubSpot, Pipedrive o hojas de cálculo compartidas.
services:
n8n:
image: docker.n8n.io/n8nio/n8n:latest
restart: unless-stopped
ports:
- 127.0.0.1:5678:5678
environment:
N8N_HOST: n8n.tuempresa.es
N8N_PORT: 5678
N8N_PROTOCOL: https
WEBHOOK_URL: https://n8n.tuempresa.es/
GENERIC_TIMEZONE: Europe/Madrid
TZ: Europe/Madrid
N8N_ENCRYPTION_KEY: cambia_esta_clave_por_una_larga_y_aleatoria
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Tras copiar, ejecuta docker compose up -d , configura el proxy con certificado válido y recorre el checklist de seguridad de la sección anterior.
env en almacenamiento cifrado del equipo, separado del propio VPS.
Preguntas frecuentes
¿Cuánta RAM necesita n8n con Docker en un VPS?
Para un entorno de pruebas con uno o dos flujos, 2 GB de RAM alcanza.
¿Puedo usar n8n self-hosted en la UE cumpliendo el RGPD?
Sí, siempre que el VPS esté en la UE y controles accesos al host y al editor.
¿Qué puerto expone n8n por defecto?
El servicio n8n escucha en 5678 dentro del contenedor.
¿Los workflows se pierden al reiniciar el contenedor?
Persisten si montas volumen en /home/node/.n8n. Un docker compose down sin -v conserva datos; un down -v o recrear el volumen borra workflows, credenciales cifradas e historial local.
¿Docker Compose o n8n Cloud para un equipo B2B pequeño?
Compose en VPS encaja si alguien del equipo puede dedicar unas horas mensuales a parches, snapshots y monitorización, y queréis coste fijo.