Guía práctica y en español para desplegar n8n en un VPS con Docker, Nginx y HTTPS. Incluye instalación rápida de Docker, ejecución de la imagen n8nio n8n, solución de errores comunes, proxy inverso con Nginx y certificado TLS de Lets Encrypt. Recomendación clave para producción: usa siempre HTTPS y no desactives las cookies seguras salvo en pruebas locales muy puntuales. En Q2BSTUDIO desarrollamos aplicaciones a medida y software a medida, somos especialistas en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Si buscas automatizar flujos y procesos con garantías, descubre nuestra propuesta de automatización de procesos y potencia tu negocio en la nube con servicios cloud AWS y Azure.
Qué necesitas primero
• Un VPS con Ubuntu 20.04 o 22.04 • Un dominio con un registro A apuntando a la IP del VPS • Un usuario con sudo o root • Docker instalado • Habilidad básica de consola para copiar y pegar comandos
1. Instalar Docker de forma rápida y fiable
Si aparecen errores de paquetes como docker ce no tiene un candidato para la instalación, usa el script oficial de Docker.
Comandos
sudo apt remove docker docker-engine docker.io containerd runc -y
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
docker --version
sudo docker run hello-world
Si hello-world imprime su mensaje, Docker está correcto.
2. Comprobar imágenes y contenedores
Comandos útiles
docker image ls
docker ps
docker ps -a
docker logs n8n
docker rm -f n8n
Si docker ps no muestra nada, no hay contenedores ejecutándose. Si ves Exited 1 revisa docker logs para conocer el error.
3. Preparar almacenamiento persistente y permisos
n8n guarda datos en la ruta interna del contenedor home node .n8n y la mapearemos al host en ~/.n8n. Ajusta permisos para evitar errores.
mkdir -p ~/.n8n
sudo chown -R 1000:1000 ~/.n8n
El UID GID 1000 1000 es el del usuario node en la imagen n8n y le da permisos de escritura.
4. Ejecutar n8n de forma simple
docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n
Comprueba con docker ps que el estado sea Up y que aparezca el mapeo 0.0.0.0:5678-5678 tcp.
5. Problemas comunes y soluciones
a. Conflicto de nombre al hacer docker run. Elimina el contenedor previo y vuelve a ejecutar.
docker ps -a
docker rm -f id_o_nombre
b. El contenedor inicia y se detiene de inmediato Exited 1. Revisa registros.
docker logs id_o_nombre
Causas frecuentes Permisos en ~/.n8n arréglalo con chown -R 1000:1000 ~/.n8n. Puerto en uso compruébalo con sudo lsof -i -P -n grep LISTEN o mapea otro puerto por ejemplo -p 8080:5678. Variables de entorno de base de datos incompletas si las configuraste.
c. Errores de instalación de paquetes o imagen no encontrada. Usa el script get.docker.com del paso 1 para evitar repos mal configurados.
6. Asegurar n8n para acceso web recomendado
n8n usa cookies seguras por defecto y te avisará si entras por HTTP plano. Lo correcto es situarlo detrás de Nginx con HTTPS.
Configuración mínima de Nginx crea el archivo etc nginx sites-available n8n.conf con este contenido
server { listen 80; server_name tu-dominio.com; location / { proxy_pass https://127.0.0.1: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; } }
Activa y prueba
sudo ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Obtener TLS con Certbot por consola
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d tu-dominio.com --non-interactive --agree-tos -m tu-email@ejemplo.com
Accede a https://tu-dominio.com y las advertencias de cookies seguras desaparecerán.
No establezcas N8N_SECURE_COOKIE=false en producción. Desactiva esta comprobación solo para pruebas locales si fuera estrictamente necesario.
7. Añadir autenticación básica opcional
docker rm -f n8n
docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n -e N8N_BASIC_AUTH_ACTIVE=true -e N8N_BASIC_AUTH_USER=admin -e N8N_BASIC_AUTH_PASSWORD=ContraseñaRobusta n8nio/n8n
Con Nginx mas HTTPS mas autenticación básica añades una capa adicional de protección a tu instancia.
8. Ejemplo con Docker Compose opcional
Archivo docker-compose.yml mínimo que luego puedes ampliar
version: 3.8
services:
n8n:
image: n8nio/n8n
container_name: n8n
ports:
- 5678:5678
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=ContraseñaRobusta
volumes:
- ~/.n8n:/home/node/.n8n
restart: unless-stopped
Ejecuta con docker compose up -d
Conclusión. Con esta guía puedes desplegar n8n de forma segura y productiva. En Q2BSTUDIO impulsamos la automatización de extremo a extremo, integrando agentes IA, ia para empresas y orquestación en la nube, además de aplicaciones a medida y software a medida con foco en ciberseguridad y compliance. Si necesitas diseñar un pipeline robusto y escalable para tus flujos, nuestro equipo puede ayudarte desde la arquitectura en cloud hasta el aseguramiento de los datos y la visualización con power bi y servicios inteligencia de negocio.