🧭 Guía completa: n8n + PostgreSQL (Docker) con Nginx como Proxy
En esta guía aprenderás a desplegar n8n en un VPS Ubuntu usando Docker + PostgreSQL, mientras Nginx en el host se encarga del proxy inverso y SSL.
🧱 Arquitectura final
Internet ↓ Nginx (HOST - Ubuntu) ↓ Docker ├── n8n └── PostgreSQL
⚠️ Nginx NO se ejecuta en Docker. Solo hace proxy + SSL, limpio, simple y profesional.
1️⃣ Requisitos del VPS
- Ubuntu 20.04 o 22.04
- Dominio apuntando al VPS (ej:
n8n.tecnotactil.com)
2️⃣ Instalar Docker y Docker Compose
sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release curl -fsSL https://get.docker.com | sudo bash sudo systemctl enable docker sudo systemctl start docker
Verifica Docker Compose:
docker compose version
Si no está instalado:
sudo apt install docker-compose-plugin
3️⃣ Estructura de carpetas
mkdir -p /opt/n8n cd /opt/n8n
4️⃣ Archivo .env
# Dominio N8N_HOST=n8n.tecnotactil.com N8N_PORT=5678 N8N_PROTOCOL=https # Seguridad N8N_BASIC_AUTH_ACTIVE=true N8N_BASIC_AUTH_USER=admin N8N_BASIC_AUTH_PASSWORD=superpasswordsegura # PostgreSQL DB_TYPE=postgresdb DB_POSTGRESDB_HOST=postgres DB_POSTGRESDB_PORT=5432 DB_POSTGRESDB_DATABASE=n8n DB_POSTGRESDB_USER=n8n DB_POSTGRESDB_PASSWORD=n8npassword # Otros WEBHOOK_URL=https://n8n.tecnotactil.com/ GENERIC_TIMEZONE=Europe/Rome
5️⃣ docker-compose.yml
services:
postgres:
image: postgres:15
restart: always
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: n8npassword
volumes:
- postgres_data:/var/lib/postgresql/data
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "127.0.0.1:5678:5678"
env_file:
- .env
depends_on:
- postgres
volumes:
- n8n_data:/home/node/.n8n
volumes:
postgres_data:
n8n_data:
🔐 Clave:
n8n solo escucha en 127.0.0.1, no queda expuesto a Internet.
6️⃣ Levantar servicios
docker compose up -d docker compose logs -f n8n
7️⃣ Instalar Nginx en el HOST
sudo apt install -y nginx sudo systemctl enable nginx sudo systemctl start nginx
8️⃣ Configurar Nginx como reverse proxy
server {
listen 80;
server_name n8n.tecnotactil.com;
location / {
proxy_pass http://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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
9️⃣ SSL con Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d n8n.tecnotactil.com
✔ Renovación automática incluida.
🔐 10️⃣ Seguridad recomendada
sudo ufw allow OpenSSH sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable
📦 Backups importantes
/opt/n8n ├── n8n_data ├── postgres_data
✅ Resultado final
🎉 n8n funcionando de forma segura en: https://n8n.tecnotactil.com