Cómo instalar n8n con Docker: Guía completa de configuración en VPS
Guía paso a paso para alojar n8n en un VPS con Docker. Incluye configuración de SSL, base de datos PostgreSQL, copias de seguridad automáticas y configuración lista para producción.
Cómo instalar n8n con Docker: Guía completa de configuración en VPS
Guía paso a paso para autoalojar n8n en un VPS con Docker. Para recomendaciones de VPS, consulta nuestra guía de mejores VPS para n8n. Esta configuración lista para producción incluye certificados SSL, base de datos PostgreSQL, proxy inverso Nginx y copias de seguridad automáticas.
Lo que configurarás
- ✅ n8n ejecutándose en Docker
- ✅ Base de datos PostgreSQL (lista para producción)
- ✅ Proxy inverso Nginx
- ✅ SSL con Let’s Encrypt
- ✅ Copias de seguridad automáticas
- ✅ Reinicio automático al arrancar
Tiempo requerido: 15-20 minutos
Requisitos previos
- Un VPS con 2GB+ de RAM (recomendamos Hostinger KVM 1)
- Un nombre de dominio apuntando a tu servidor
- Conocimientos básicos de terminal
Paso 1: Configuración inicial del servidor
Conéctate por SSH a tu VPS:
ssh root@your-server-ip
Actualiza el sistema:
apt update && apt upgrade -y
Paso 2: Instalar Docker
# Install Docker
curl -fsSL https://get.docker.com | sh
# Install Docker Compose
apt install docker-compose-plugin -y
# Verify installation
docker --version
docker compose version
Paso 3: Crear la estructura del proyecto
mkdir -p /opt/n8n
cd /opt/n8n
Crea el archivo Docker Compose:
nano docker-compose.yml
Pega lo siguiente:
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.yourdomain.com/
- GENERIC_TIMEZONE=Europe/London
# Database
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=your-secure-password
# Encryption
- N8N_ENCRYPTION_KEY=your-32-char-encryption-key
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
networks:
- n8n-network
postgres:
image: postgres:15
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=your-secure-password
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- n8n-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 5s
timeout: 5s
retries: 5
volumes:
n8n_data:
postgres_data:
networks:
n8n-network:
Importante: Reemplaza:
n8n.yourdomain.comcon tu dominio realyour-secure-passwordcon una contraseña segurayour-32-char-encryption-keycon una cadena aleatoria de 32+ caracteres
Genera una clave de cifrado:
openssl rand -hex 16
Paso 4: Instalar Nginx
apt install nginx -y
Crea la configuración de Nginx:
nano /etc/nginx/sites-available/n8n
Pega lo siguiente:
server {
listen 80;
server_name n8n.yourdomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_read_timeout 86400;
proxy_buffering off;
}
}
Habilita el sitio:
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Paso 5: Configurar SSL con Let’s Encrypt
# Install Certbot
apt install certbot python3-certbot-nginx -y
# Get SSL certificate
certbot --nginx -d n8n.yourdomain.com
Sigue las instrucciones. Certbot configurará automáticamente Nginx para HTTPS.
Paso 6: Iniciar n8n
cd /opt/n8n
docker compose up -d
Verifica que esté en funcionamiento:
docker compose ps
docker compose logs -f n8n
Accede a n8n en: https://n8n.yourdomain.com
Paso 7: Configurar el firewall
Sigue nuestra guía de seguridad para VPS para una lista completa de protección. Como mínimo:
ufw allow ssh
ufw allow 'Nginx Full'
ufw enable
Paso 8: Configurar copias de seguridad automáticas
Crea el script de respaldo:
nano /opt/n8n/backup.sh
Pega lo siguiente:
#!/bin/bash
BACKUP_DIR="/opt/n8n/backups"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Backup PostgreSQL
docker compose exec -T postgres pg_dump -U n8n n8n > $BACKUP_DIR/db_$DATE.sql
# Backup n8n data
docker compose exec -T n8n n8n export:workflow --all --output=/home/node/.n8n/backups/workflows_$DATE.json 2>/dev/null || true
# Keep only last 7 days
find $BACKUP_DIR -type f -mtime +7 -delete
echo "Backup completed: $DATE"
Hazlo ejecutable y prográmalo:
chmod +x /opt/n8n/backup.sh
# Add to crontab (daily at 3 AM)
crontab -e
Añade:
0 3 * * * /opt/n8n/backup.sh >> /var/log/n8n-backup.log 2>&1
Paso 9: Habilitar el inicio automático al arrancar
Los contenedores Docker con restart: always se iniciarán automáticamente. Verifica que Docker esté habilitado:
systemctl enable docker
Actualizar n8n
Para actualizar a la última versión:
cd /opt/n8n
docker compose pull
docker compose up -d
Solución de problemas
n8n no se inicia
docker compose logs n8n
Busca errores de conexión a la base de datos o variables de entorno faltantes.
Problemas con el certificado SSL
certbot renew --dry-run
Error de conexión a la base de datos
Asegúrate de que PostgreSQL esté funcionando correctamente:
docker compose exec postgres pg_isready -U n8n
Sin memoria suficiente
Actualiza tu VPS u optimiza n8n:
# In docker-compose.yml, add under n8n service:
deploy:
resources:
limits:
memory: 2G
Optimización del rendimiento
1. Limpieza de ejecuciones
Elimina automáticamente las ejecuciones antiguas para ahorrar espacio. En la configuración de n8n:
- Configuración → Ajustes de flujo de trabajo → Guardar datos de ejecución con error: últimos 30 días
- Guardar datos de ejecución exitosa: últimos 7 días
2. Aumentar los workers
Para cargas de trabajo pesadas:
environment:
- EXECUTIONS_MODE=queue
- EXECUTIONS_PROCESS=own
3. Usar Redis para el modo de cola
Añade el servicio Redis para flujos de trabajo de alto volumen:
redis:
image: redis:alpine
restart: always
networks:
- n8n-network
Especificaciones de VPS recomendadas
| Carga de trabajo | RAM | CPU | VPS |
|---|---|---|---|
| Ligera | 2GB | 1 vCPU | Hostinger KVM 1 |
| Media | 4GB | 2 vCPU | Hostinger KVM 2 |
| Pesada | 8GB | 4 vCPU | Contabo VPS S |
Conclusión
Ahora tienes una instalación de n8n lista para producción con:
✅ Base de datos PostgreSQL para mayor fiabilidad ✅ Proxy inverso Nginx para mejor rendimiento ✅ Cifrado SSL para seguridad ✅ Copias de seguridad automáticas para mayor tranquilidad ✅ Reinicio automático para disponibilidad 24/7
¡Tu n8n autoalojado está listo para automatizaciones ilimitadas! ¿Te preguntas cómo se compara n8n con las alternativas de pago? Consulta nuestra comparación n8n vs Zapier.
Ready to get started?
Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.
Get Hostinger VPS — $4.99/mo// up to 75% off + free domain included
// related topics
// related guides
$1 VPS Hosting 2026: Cheapest VPS Servers Starting at $1/Month
Looking for $1 VPS hosting? Compare the cheapest VPS providers starting from $1-3/month. Real specs, no hidden fees, honest reviews of budget VPS options.
tutorialCaddy Reverse Proxy Guide 2026: Automatic HTTPS Made Easy
Set up Caddy as a reverse proxy with automatic HTTPS, zero-config SSL, and simple Caddyfile syntax. Complete VPS deployment guide.
tutorialCloudflare Tunnel VPS Guide 2026: Expose Services Without Opening Ports
Set up Cloudflare Tunnel on your VPS to expose web apps securely without opening ports or revealing your server IP. Complete guide with Docker and DNS config.
tutorialCoolify VPS Setup Guide 2026: Self-Hosted Vercel Alternative
Deploy Coolify on your VPS for a self-hosted Vercel/Netlify experience. Complete setup guide with Docker, SSL, and app deployments.
Andrius Putna
I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.
// last updated: February 3, 2026. Disclosure: This article may contain affiliate links.