n8n Self-Hosting
Qué cubre este artículo sobre n8n Self-Hosting
- Cómo configurar n8n para producción.
- Cómo configurar HTTPS, Reverse Proxy y base de datos.
- Cómo establecer copias de seguridad, monitoreo y actualizaciones.
- Cómo preparar n8n para múltiples usuarios y equipos.
- Mejores prácticas para seguridad, disponibilidad y mantenimiento.
Introducción: n8n Self-Hosting explicado
Instalar n8n es sencillo. Configurarlo para producción es otra cosa: HTTPS, Reverse Proxy, base de datos, copias de seguridad, monitoreo, gestión de usuarios. Este artículo te muestra cómo no solo poner n8n en funcionamiento, sino operarlo de manera confiable.
Este artículo está dirigido a usuarios que desean operar n8n en producción. Deberías tener n8n ya instalado. Consulta n8n instalar para la instalación básica.
¿Por qué necesito n8n Self-Hosting?
Imagina que has instalado n8n localmente y construido algunos workflows. Ahora quieres usarlo en tu equipo, con HTTPS, múltiples usuarios, copias de seguridad y monitoreo. La instalación local no es suficiente: necesitas un setup de producción.
n8n Self-Hosting en pocas palabras
n8n Self-Hosting significa operar n8n en tu servidor: con HTTPS, Reverse Proxy, base de datos, copias de seguridad y monitoreo. No solo para probar, sino para el funcionamiento diario.
La idea central es simple: no solo instalar n8n, sino operarlo de forma confiable.
¿Para quién es este artículo?
- Administradores de sistemas que operan n8n en producción.
- Equipos que configuran n8n para múltiples usuarios.
- Self-hosters que operan n8n profesionalmente.
- Tomadores de decisiones que evalúan n8n para su empresa.
Se requieren conocimientos previos en Docker, n8n y Linux.
Términos importantes
- n8n - Automatización de workflows. Cuándo es útil: la herramienta misma.
- Reverse Proxy - Intermediario frente a n8n. Cuándo es útil: para HTTPS y enrutamiento.
- Docker - Plataforma de contenedores. Cuándo es útil: para operación.
- Docker Compose - Multi-contenedor. Cuándo es útil: para setups complejos.
- PostgreSQL - Base de datos. Cuándo es útil: en lugar de SQLite para producción.
- Backup - Copia de seguridad de datos. Cuándo es útil: para workflows y credenciales.
- Monitoring - Supervisión. Cuándo es útil: para disponibilidad.
Setup de producción
Docker Compose para producción
version: "3.8"
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678" # Solo localhost, Reverse Proxy adelante
environment:
- N8N_HOST=0.0.0.0
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.deine-domain.de/
- GENERIC_TIMEZONE=Europe/Berlin
- TZ=Europe/Berlin
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=30
volumes:
- n8n_data:/home/node/.n8n
networks:
- n8n-network
depends_on:
- postgres
postgres:
image: postgres:16-alpine
container_name: n8n-postgres
restart: unless-stopped
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- n8n-network
volumes:
n8n_data:
postgres_data:
networks:
n8n-network:
driver: bridge
Reverse Proxy con Nginx
# /etc/nginx/sites-available/n8n
server {
listen 443 ssl http2;
server_name n8n.deine-domain.de;
ssl_certificate /etc/letsencrypt/live/n8n.deine-domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.deine-domain.de/privkey.pem;
location / {
proxy_pass http://127.0.0.1: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;
}
}
Certificado TLS con Let’s Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.deine-domain.de
Consulta Certificados TLS para más detalles.
Base de datos: SQLite vs. PostgreSQL
| SQLite | PostgreSQL |
|---|---|
| Simple, sin instalación adicional | Robusto, para producción |
| Para setups pequeños | Para setups grandes |
| Un usuario | Múltiples usuarios |
| Menos rendimiento | Mayor rendimiento |
| Backup simple (archivo) | Backup más complejo (pg_dump) |
Para producción: PostgreSQL recomendado.
Copia de seguridad
Asegurar datos de n8n
# Respaldar volumen
docker run --rm \
-v n8n_data:/data \
-v $(pwd)/backup:/backup \
alpine tar czf /backup/n8n-backup.tar.gz -C /data .
# Respaldar PostgreSQL
docker exec n8n-postgres pg_dump -U n8n n8n > backup/n8n-db.sql
Backup automático
# Trabajo cron para backup diario
0 3 * * * docker run --rm -v n8n_data:/data -v /backup:/backup alpine tar czf /backup/n8n-$(date +\%Y\%m\%d).tar.gz -C /data .
Consulta Backup para más detalles.
Monitoreo
Health-Check
# Endpoint de salud de n8n
curl http://localhost:5678/healthz
Monitoreo con Prometheus
# Extender docker-compose.yml
services:
prometheus:
image: prom/prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
Consulta Monitoring para más detalles.
Gestión de usuarios
Múltiples usuarios
n8n admite múltiples usuarios con diferentes roles:
environment:
- N8N_USER_MANAGEMENT_DISABLED=false
- N8N_USER_MANAGEMENT_SMTP_HOST=smtp.example.com
- N8N_USER_MANAGEMENT_SMTP_PORT=587
- N8N_USER_MANAGEMENT_SMTP_USER=n8n@example.com
- N8N_USER_MANAGEMENT_SMTP_PASS=${SMTP_PASSWORD}
- N8N_USER_MANAGEMENT_SMTP_SENDER=n8n@example.com
Notas de seguridad
- Forzar HTTPS: N8N_PROTOCOL=https, WEBHOOK_URL=https.
- Política de contraseñas: Contraseñas fuertes para todos los usuarios.
- Autenticación de dos factores: Activar si está disponible.
- Firewall: Solo puerto 443 (HTTPS) abierto hacia afuera.
- Encriptación: N8N_ENCRYPTION_KEY para credenciales.
- Actualizaciones regulares: Mantener n8n actualizado. Consulta Docker Updates.
- Audit Logging: Registra accesos. Consulta Audit Logging.
Ejemplo práctico: n8n para equipo
# docker-compose.yml para setup de equipo
services:
n8n:
image: n8nio/n8n:latest
environment:
- N8N_HOST=0.0.0.0
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.company.de/
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- N8N_USER_MANAGEMENT_DISABLED=false
- N8N_USER_MANAGEMENT_SMTP_HOST=smtp.company.de
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=90
# ... Resto como arriba
Errores comunes
- SQLite en producción: SQLite es para setups pequeños, no para producción. Usa PostgreSQL.
- Sin HTTPS: n8n sin HTTPS no es seguro. Activa TLS.
- Sin backup: Sin backup, los workflows desaparecen en caso de fallo.
- Sin monitoring: Sin monitorización no te enteras de los problemas.
- Credenciales en texto plano: N8N_ENCRYPTION_KEY debe estar configurada.
- Ejecuciones antiguas: Activa EXECUTIONS_DATA_PRUNE, si no la base de datos se llena.
Enlaces relacionados
- Instalar n8n - Instalación básica.
- Guía n8n - n8n en detalle.
- Integración n8n-Ollama - Ollama en n8n.
- Fundamentos de Docker - Entender Docker.
- Reverse Proxy - Configurar reverse proxy.
- Certificados TLS - Activar HTTPS.
- Backup - Copias de seguridad.
- Monitorización - Supervisión.
Puntos clave:
- n8n Self-Hosting: HTTPS, reverse proxy, PostgreSQL, backup, monitorización.
- SQLite para setups pequeños, PostgreSQL para producción.
- Reverse proxy (Nginx) para HTTPS y enrutamiento.
- Backup: volumen + base de datos regularmente.
- Seguridad: HTTPS, política de contraseñas, firewall, cifrado.
FAQ
¿Qué significa n8n Self-Hosting?
¿SQLite o PostgreSQL?
¿Necesito un reverse proxy?
¿Cómo activo HTTPS?
¿Cómo hago backup de n8n?
¿Cómo monitorizo n8n?
¿Puedo tener múltiples usuarios?
¿Cómo aseguro n8n?
¿Cómo actualizo n8n?
¿Cuánto cuesta n8n Self-Hosting?
Referencias y lecturas complementarias
- n8n Self-Hosting Docs - Documentación oficial.
- n8n Docker - Setup con Docker.
- Nginx Reverse Proxy - Reverse proxy.
- Let’s Encrypt - Certificados TLS gratuitos.


