Cómo instalar n8n en Docker

Instalar n8n en Docker es una forma eficaz de alojar tu mismo esta herramienta de automatización de flujos de trabajo. A diferencia de ejecutar n8n directamente en tu servidor privado virtual (VPS), Docker ofrece un entorno contenedorizado que aísla n8n de tu sistema principal.
Esto facilita la actualización o la degradación de tus versiones de n8n, la ampliación de tu configuración para dar cabida a más flujos de trabajo e incluso la migración de tu instancia de n8n a otro servidor.
En este artículo, aprenderás a ejecutar n8n utilizando Docker y Docker Compose. Este método te permite definir el servicio n8n, las variables de entorno y las dependencias, como una base de datos, en un único archivo YAML.
Sigue leyendo para obtener instrucciones paso a paso sobre cómo instalar, configurar, proteger y actualizar tu instancia de n8n utilizando Docker.
Tabla de Contenidos
Cómo autohospedar n8n con Docker
Para autoalojar n8n con Docker, primero debes instalar Docker y Docker Compose en tu VPS. A continuación, debes crear un archivo Docker Compose para configurar tu servicio n8n. Por último, ejecuta el contenedor n8n utilizando el comando docker compose up -d.
A continuación, podrás proteger tu configuración de n8n con SSL y un proxy inverso, modificar las variables de entorno según sea necesario y actualizar n8n cada vez que se publiquen nuevas versiones.
En las siguientes secciones se explica cada paso con más detalle.
Consejo profesional
Si prefieres instalar n8n directamente en tu VPS, no te preocupes. Tenemos un tutorial específico para guiarte a través del proceso.
1. Instala Docker y Docker Compose
En primer lugar, asegúrate de que Docker está configurado en tu servidor. A partir de Docker v20.10.0, Docker Compose se incluye por defecto como un complemento, por lo que no es necesario instalarlo por separado.
Si utilizas el alojamiento VPS Docker de Hostinger, estás de suerte: Docker viene preinstalado, por lo que puedes saltarte este paso por completo.
Los usuarios con planes VPS normales de Hostinger pueden instalar Docker mediante una plantilla preconfigurada o manualmente a través de la línea de comandos.
Si eliges esta última opción, verifica la instalación ejecutando el siguiente comando de Linux en tu terminal:
docker -v
Esto mostrará la versión de Docker instalada, de la siguiente manera:

2. Prepara el directorio de datos de n8n
A continuación, crea directorios para almacenar los datos y los archivos de configuración de n8n. Ejecuta el siguiente comando para crear el directorio principal de n8n y navega hasta él:
mkdir ~/n8n && cd ~/n8n
Dentro del directorio recién creado, crea un subdirectorio llamado n8n_data para almacenar los datos persistentes de n8n:
mkdir n8n_data
Establece la propiedad correcta para los datos persistentes, lo cual es importante cuando ejecutas n8n con Docker:
sudo chown -R 1000:1000 n8n_data

3. Crea un archivo Docker Compose para n8n
Después de preparar los directorios para n8n, crea un nuevo archivo Docker Compose para configurar los ajustes de n8n, definir las variables de entorno y especificar los volúmenes necesarios.
Puedes hacerlo utilizando el editor de texto nano:
sudo nano docker-compose.yml
Pega el siguiente contenido, sustituyendo TuUsuario y TuContraseña por tus credenciales preferidas:
services: n8n: image: n8nio/n8n ports: - "5678:5678" environment: - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=TuUsuario - N8N_BASIC_AUTH_PASSWORD=TuContraseña volumes: - ./n8n_data:/home/node/.n8n

Una vez hecho esto, guarda los cambios y sal de nano pulsando Ctrl + X → Y → Intro.
4. Inicia el contenedor n8n
Ahora, ejecuta el contenedor n8n con este comando:
docker compose up -d
Verás cómo se inicia el proceso del contenedor. Una vez completado, aparecerán líneas como “Created” y “Started”, similares a las de la imagen siguiente:

Para verificar si tu contenedor n8n se ha iniciado, abre la siguiente dirección en tu navegador, sustituyendo tu_vps_ip por la dirección IP de tu propio VPS:
http://tu_vps_ip:5678
Los clientes de Hostinger VPS pueden encontrar la IP de su servidor en hPanel yendo a VPS → Administrar → Detalles de VPS.

Si ves una advertencia de error de cookie segura como la de la imagen siguiente al visitar la dirección, no te preocupes. Tu instancia n8n se está ejecutando correctamente. El error se produce porque SSL no está configurado para conexiones seguras, pero lo solucionarás en el siguiente paso.

5. Protege n8n con SSL y un proxy inverso NGINX
Para acceder de forma segura a tu instancia de n8n a través de HTTPS, deberás emitir un certificado SSL y configurar un proxy inverso.
En primer lugar, instala el servidor web NGINX en tu VPS:
sudo apt install nginx -y
Detén inmediatamente el servicio NGINX de forma temporal:
sudo systemctl stop nginx
A continuación, instala Certbot para obtener tu certificado SSL:
sudo apt install certbot -y
Obtén una versión independiente del certificado SSL de Certbot. Reemplaza tudominio.tld por tu dominio real si lo has dirigido a tu VPS. De lo contrario, emite un certificado SSL para tu nombre de host:
sudo certbot certonly --standalone -d tudominio.tld
Se te pedirá que introduzcas una dirección de correo electrónico válida, que aceptes los términos del servicio y, opcionalmente, que te registres para recibir correos electrónicos promocionales.
Una vez hecho esto, reinicia NGINX:
sudo systemctl start nginx
A continuación, crea un archivo de configuración para configurar el proxy inverso con NGINX:
sudo nano /etc/nginx/sites-available/n8n
Dentro del archivo, pega los detalles de configuración que se indican a continuación. Reemplaza tudominio.tld por tu propio dominio o nombre de host.
server { listen 443 ssl; server_name tudominio.tld; ssl_certificate /etc/letsencrypt/live/tudominio.tld/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/tudominio.tld/privkey.pem; location / { proxy_pass http://localhost:5678; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } server { listen 80; server_name tudominio.tld; return 301 https://$host$request_uri; }

Después de guardar el archivo y salir del editor, ejecuta este comando para habilitar la configuración:
sudo ln -sf /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/n8n
Comprueba que la configuración de NGINX no contenga errores:
sudo nginx -t
Vuelve a cargar el servicio NGINX para aplicar los cambios:
sudo systemctl reload nginx
6. Accede a tu instancia de n8n
Ahora, visita tu instancia de n8n utilizando el dominio o el nombre de host que has configurado anteriormente. Verás la página de registro de la cuenta de propietario de n8n, donde podrás registrarte con tus credenciales preferidas.

Después, abre el panel de control de n8n para empezar a crear flujos de trabajo de automatización. Puedes consultar algunos ejemplos de flujos de trabajo de n8n para inspirarte.
Si no quieres empezar desde cero, busca plantillas de n8n para soluciones ya preparadas. No olvides explorar las integraciones de n8n para ver qué puedes conectar, qué herramientas utilizar y los casos de uso de cada integración.
7. Modifica las variables de entorno de n8n
Al administrar tu instancia de n8n, es posible que debas modificar las variables de entorno para configurar conexiones de bases de datos, habilitar la autenticación, integrar servicios de terceros o mejorar la seguridad.
Para ello, vuelve a tu terminal y edita tu archivo Docker Compose:
sudo nano docker-compose.yml
En la sección de entorno, añade o modifica la configuración de tu contenedor n8n. Estas son algunas de las variables más utilizadas:
- N8N_ENCRYPTION_KEY: cifra las credenciales en la base de datos para mayor seguridad.
- N8N_ENCRYPTION_KEY=tuCadenaAleatoriaSegura
- N8N_HOST, N8N_PORT, N8N_PROTOCOL: garantiza que n8n genere URL correctas, especialmente detrás de un proxy inverso o cuando se utiliza SSL.
- N8N_HOST=tudominio.tld - N8N_PORT=5678 - N8N_PROTOCOL=https
- WEBHOOK_URL: establece la URL pública para los webhooks, lo cual es importante si utilizas HTTPS o un dominio personalizado.
- WEBHOOK_URL=https://tudominio.tld
- DB_TYPE, DB_POSTGRESDB: te permite utilizar PostgreSQL en lugar del SQLite predeterminado para obtener un mejor rendimiento y escalabilidad.
- DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=tu_host_postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=tu_nombre_de_base_de_datos - DB_POSTGRESDB_USER=tu_usuario_db - DB_POSTGRESDB_PASSWORD=tu_contraseña_de_la_base_de_datos
- TZ: establece la zona horaria para n8n.
- TZ=UTC
Guarda el archivo una vez que hayas realizado los cambios necesarios.
A continuación, ejecuta el siguiente comando de Docker para detener el contenedor n8n:
docker compose down
Vuelve a iniciar el contenedor con las variables de entorno actualizadas:
docker compose up -d

Consejo profesional
Si solo quieres reiniciar tu contenedor Docker n8n sin modificar el archivo Compose, utiliza el comando docker compose restart.
8. Actualiza n8n a la última versión
Debes actualizar periódicamente n8n a la última versión para minimizar los riesgos de seguridad y aprovechar las nuevas funciones y mejoras.
Para actualizar, primero descarga la última imagen de n8n desde Docker Hub:
docker pull n8nio/n8n
A continuación, reinicia el contenedor n8n con la imagen actualizada:
docker compose up -d

¿Cuáles son las mejores prácticas para gestionar n8n con Docker?
A continuación, se indican algunos consejos para administrar n8n con Docker, incluidas algunas que ya se han mostrado en este tutorial:
- Monta volúmenes Docker: arma un directorio host como ./n8n_data:/home/node/.n8n para conservar los flujos de trabajo, las credenciales y los datos de ejecución fuera del contenedor. Esto garantiza que tus datos sobrevivan a las actualizaciones, los reinicios o la recreación del contenedor.
- Configura las variables de entorno: en docker-compose.yml, establece las claves API, los secretos webhook, las credenciales de la base de datos y otros datos confidenciales como variables de entorno. Esto mantiene los secretos fuera de los flujos de trabajo y del código fuente, lo que mejora la seguridad y simplifica la rotación de claves.
- Protege el acceso: habilita siempre la autenticación básica (N8N_BASIC_AUTH_ACTIVE=true) y utiliza nombres de usuario y contraseñas seguras. Para una comunicación segura, coloca n8n detrás de un proxy inverso como NGINX con SSL, de modo que todos los datos, incluidas las credenciales, se cifren y no se envíen en texto sin formato.
- Realiza copias de seguridad periódicas: haz copias de seguridad periódicas de la carpeta host asignada a /home/node/.n8n, no de la ruta interna del contenedor. Para un contenedor en ejecución, utiliza el siguiente comando:
docker cp n8n:/home/node/.n8n /path/to/backup/folder
- Establece límites de recursos: en tu archivo docker-compose.yml, establece límites de CPU y memoria para evitar que n8n utilice en exceso los recursos de tu VPS. Por ejemplo:
deploy: resources: limits: cpus: '1' memory: 1G
- Supervisa los registros y el rendimiento: ejecuta docker compose logs n8n para revisar los registros y solucionar problemas. Para una supervisión continua, considera la posibilidad de integrar un sistema como LGTM stack para recibir alertas si n8n no funciona o presenta errores.
¿Por qué Hostinger es la mejor opción para alojar tu configuración de n8n Docker?
Docker hace que el autoalojamiento de n8n sea fácil y flexible al proporcionar un entorno portátil y coherente en todos los sistemas. Pero para que funcione de forma fiable las 24 horas del día, los 7 días de la semana, no puedes confiar en tu máquina personal, necesitas un VPS.
Un VPS funciona de forma continua, por lo que tus flujos de trabajo permanecen activos incluso cuando tu ordenador está apagado o desconectado. También te permite acceder y gestionar n8n de forma segura desde cualquier lugar, no solo desde tu red local.
El VPS Docker de Hostinger es una excelente opción para autohospedar aplicaciones en contenedores como n8n. Docker y todos los componentes necesarios vienen preinstalados, por lo que puedes implementar n8n rápidamente sin necesidad de configuraciones adicionales.
Ofrecemos múltiples centros de datos en diferentes regiones, por lo que puedes elegir un servidor más cercano a ti para minimizar la latencia.
Además, con la garantía de tiempo de actividad del 99.9% de Hostinger, tus flujos de trabajo de automatización permanecen en línea de forma fiable las 24 horas del día.
A partir de 4.99 € al mes, nuestros planes Docker VPS incluyen hasta 8 núcleos vCPU, 32 GB de RAM y 400 GB de almacenamiento NVMe. Puedes empezar con un plan pequeño y actualizarlo a uno superior con solo unos clics a medida que aumenten tus necesidades de automatización.
La seguridad es una prioridad, con copias de seguridad automáticas, protección DDoS avanzada y un escáner de malware para mantener tus datos a salvo, bloquear ataques y evitar interrupciones en tu configuración de n8n.

Conclusión
El autoalojamiento de n8n con Docker te ofrece un control total, flexibilidad y escalabilidad para la automatización de tus flujos de trabajo. Te permite ejecutar una potente herramienta de automatización según tus propios términos, de forma segura, fiable y con margen para crecer.
A medida que continúes creando y gestionando tu configuración de n8n, esto es lo que puedes hacer a continuación:
- Explora ideas de automatización: descubre lo que puedes automatizar con n8n para inspirarte y optimizar las tareas repetitivas.
- Amplía tu configuración de n8n: implementa una pila Docker para ampliar n8n a varios servidores y gestionar servicios en un clúster swarm.
- Protege tu servidor: sigue las prácticas recomendadas de seguridad de VPS, como cambiar el puerto SSH, desactivar el inicio de sesión como root y configurar un firewall, para proteger tu instancia de n8n.
- Utiliza n8n con MCP: expón tus flujos de trabajo a los agentes de IA y habilita la automatización sensible al contexto integrando n8n con el protocolo de contexto de modelo (MCP).
Si aún tienes alguna pregunta sobre cómo ejecutar y gestionar n8n con Docker, no dudes en dejar un comentario a continuación.