Autoalojar n8n en Hetzner Cloud: Tutorial Completo de Configuración con Docker
La automatización de flujos de trabajo se ha vuelto esencial para los negocios modernos, pero las soluciones SaaS pueden volverse costosas a medida que los equipos crecen. Te mostraremos cómo configurar tu propia instancia de n8n en Hetzner Cloud por menos de 5 euros al mes, dándote flujos de trabajo ilimitados y control completo sobre tu plataforma de automatización.
Lo que Construirás
Al final de este tutorial, tendrás:
- Una instalación de n8n completamente funcional con HTTPS
- Certificados SSL automáticos vía Let's Encrypt
- Integración de correo electrónico para cuentas de usuario
- Inicio automático después de reinicios del servidor
- Configuración lista para producción y uso profesional
Costo mensual: 4,51 euros (servidor CX11) + costos de dominio
Requisitos Previos
- Nombre de dominio apuntando a la IP de tu servidor
- Conocimientos básicos de línea de comandos
- Cuenta en Hetzner Cloud
Paso 1: Configuración del Servidor
Crear el Servidor en Hetzner Cloud
- Inicia sesión en la Consola de Hetzner Cloud
- Crea un nuevo proyecto
- Añade un servidor con estas especificaciones:
- Imagen: Ubuntu 24.04 LTS
- Tipo: CX11 (1 vCPU, 4 GB RAM, 20 GB disco)
- Ubicación: Elige la más cercana a tus usuarios
- Clave SSH: Añade tu clave pública
Configuración Inicial del Servidor
Conéctate a tu servidor:
ssh root@YOUR_SERVER_IP
Actualiza el sistema:
apt update && apt upgrade -y
Paso 2: Instalar Docker
Instala Docker y Docker Compose:
# Install dependencies
apt install apt-transport-https ca-certificates curl software-properties-common gnupg -y
# Add Docker GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Add Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# Create Docker network for our services
docker network create proxy
Verifica la instalación de Docker:
docker --version
docker compose version
Paso 3: Configurar el Proxy Inverso Traefik
Crea la estructura de directorios:
mkdir -p /opt/traefik/data
cd /opt/traefik
Crea el archivo de configuración de Traefik:
nano /opt/traefik/data/traefik.yml
Añade esta configuración:
api:
dashboard: false
entryPoints:
http:
address: ":80"
http:
redirections:
entryPoint:
to: https
scheme: https
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
letsencrypt:
acme:
email: your-email@example.com # Change this!
storage: acme.json
httpChallenge:
entryPoint: http
Crea el archivo acme.json para los certificados SSL:
touch /opt/traefik/data/acme.json
chmod 600 /opt/traefik/data/acme.json
Crea el archivo Docker Compose de Traefik:
nano /opt/traefik/docker-compose.yml
Añade esta configuración:
version: '3'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "80:80"
- "443:443"
networks:
- proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/etc/traefik/traefik.yml
- ./data/acme.json:/acme.json
labels:
- "traefik.enable=true"
networks:
proxy:
external: true
Paso 4: Configurar el Relay SMTP (Opcional pero Recomendado)
Crea el directorio del servidor de correo:
mkdir -p /opt/mailserver
cd /opt/mailserver
Crea el archivo Docker Compose:
nano /opt/mailserver/docker-compose.yml
Añade esta configuración:
version: '3'
services:
mailserver:
image: bytemark/smtp
restart: always
networks:
- proxy
environment:
- RELAY_HOST=smtp.gmail.com # Change to your SMTP provider
- RELAY_PORT=587
- RELAY_USERNAME=your-email@gmail.com # Change this
- RELAY_PASSWORD=your-app-password # Change this
- MAIL_DOMAIN=yourdomain.com # Change this
ports:
- "25:25"
networks:
proxy:
external: true
Nota: Para Gmail, necesitarás:
- Habilitar la autenticación de dos factores
- Generar una Contraseña de Aplicación
- Usar la Contraseña de Aplicación (no tu contraseña habitual)
Paso 5: Configurar n8n
Crea el directorio de n8n:
mkdir -p /opt/n8n
cd /opt/n8n
Crea el archivo Docker Compose:
nano /opt/n8n/docker-compose.yml
Añade esta configuración:
version: '3'
services:
n8n:
image: n8nio/n8n:latest
restart: always
environment:
- N8N_HOST=n8n.yourdomain.com # Change this!
- NODE_ENV=production
- N8N_PROTOCOL=https
- N8N_PORT=5678
- N8N_EDITOR_BASE_URL=https://n8n.yourdomain.com # Change this!
# Email configuration
- N8N_EMAIL_MODE=smtp
- N8N_SMTP_HOST=mailserver
- N8N_SMTP_PORT=25
- N8N_SMTP_SSL=false
- N8N_SMTP_USER=
- N8N_SMTP_PASS=
- N8N_SMTP_SENDER=noreply@yourdomain.com # Change this!
# Important fixes for proxy setup
- N8N_TRUST_PROXY_HEADER=true
- N8N_RUNNERS_ENABLED=true
volumes:
- ./data:/home/node/.n8n
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n.rule=Host(`n8n.yourdomain.com`)" # Change this!
- "traefik.http.routers.n8n.entrypoints=https"
- "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
networks:
proxy:
external: true
Paso 6: Crear Servicios Systemd para Inicio Automático
Servicio de Traefik
nano /etc/systemd/system/traefik-docker.service
Añade esta configuración:
[Unit]
Description=Traefik Docker Compose
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/traefik
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.target
Servicio del Servidor de Correo
nano /etc/systemd/system/mailserver-docker.service
Añade esta configuración:
[Unit]
Description=Mailserver Docker Compose
Requires=docker.service
After=docker.service
Before=n8n-docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/mailserver
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.target
Servicio de n8n
nano /etc/systemd/system/n8n-docker.service
Añade esta configuración:
[Unit]
Description=n8n Docker Compose
Requires=docker.service
After=docker.service traefik-docker.service mailserver-docker.service
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/n8n
ExecStartPre=/bin/bash -c 'until docker container inspect traefik > /dev/null 2>&1; do sleep 2; done'
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
Restart=on-failure
RestartSec=30
TimeoutStartSec=180
[Install]
WantedBy=multi-user.target
Habilitar e Iniciar los Servicios
# Reload systemd daemon
systemctl daemon-reload
# Enable services to start on boot
systemctl enable traefik-docker.service
systemctl enable mailserver-docker.service
systemctl enable n8n-docker.service
# Start services
systemctl start traefik-docker.service
sleep 10
systemctl start mailserver-docker.service
sleep 10
systemctl start n8n-docker.service
Paso 7: Configuración DNS
Apunta tu dominio a tu servidor:
- Ve a tu registrador de dominio/proveedor DNS
- Crea un registro A:
- Nombre: n8n
- Tipo: A
- Valor: TU_IP_DEL_SERVIDOR
- TTL: 300 (o el mínimo permitido)
Espera la propagación del DNS (puede tardar hasta 24 horas, generalmente mucho más rápido).
Paso 8: Probar Tu Instalación
Verifica si los servicios están en ejecución:
docker ps
Deberías ver tres contenedores en ejecución: traefik, mailserver y n8n.
Visita tu instancia de n8n:
https://n8n.yourdomain.com
Deberías ver la página de configuración de n8n con un icono de candado verde (HTTPS funcionando).
Solución de Problemas Comunes
El Certificado SSL No Funciona
Revisa los registros de Traefik:
docker logs traefik
Causas comunes:
- DNS no apunta al servidor
- Firewall bloqueando los puertos 80/443
- Dominio incorrecto en la configuración
n8n No Es Accesible
Revisa los registros de n8n:
docker logs n8n-n8n-1
Soluciones comunes:
- Verifica que la configuración del dominio coincida en todos los archivos
- Comprueba que todos los contenedores estén en la misma red
El Correo Electrónico No Funciona
Revisa los registros del servidor de correo:
docker logs mailserver-mailserver-1
Verifica las credenciales y la configuración SMTP.
Los Servicios No Inician Después del Reinicio
Verifica el estado del servicio:
systemctl status traefik-docker.service
systemctl status n8n-docker.service
Reinicia si es necesario:
systemctl restart traefik-docker.service
systemctl restart n8n-docker.service
Mantenimiento y Actualizaciones
Mantenimiento Regular
Verificaciones semanales:
# Check container status
docker ps
# Check disk space
df -h
# Check logs for errors
docker logs n8n-n8n-1 | grep -i error
Actualizaciones mensuales:
# Update container images
cd /opt/n8n && docker compose pull && docker compose up -d
cd /opt/traefik && docker compose pull && docker compose up -d
cd /opt/mailserver && docker compose pull && docker compose up -d
# Clean up old images
docker system prune -f
Respaldar Tus Datos
Crea un script de respaldo:
nano /opt/backup-n8n.sh
Añade este contenido:
#!/bin/bash
mkdir -p /opt/backups
tar -czf /opt/backups/n8n-backup-$(date +%Y%m%d).tar.gz /opt/n8n/data
find /opt/backups -name "n8n-backup-*.tar.gz" -mtime +30 -delete
Hazlo ejecutable y añádelo al cron:
chmod +x /opt/backup-n8n.sh
# Add to crontab (daily backup at 2 AM)
crontab -e
# Add this line:
0 2 * * * /opt/backup-n8n.sh
Endurecimiento de Seguridad
Configurar el Firewall
# Install UFW
apt install ufw
# Set defaults
ufw default deny incoming
ufw default allow outgoing
# Allow SSH
ufw allow 22
# Allow HTTP/HTTPS
ufw allow 80
ufw allow 443
# Enable firewall
ufw enable
Asegurar SSH
Edita la configuración de SSH:
nano /etc/ssh/sshd_config
Realiza estos cambios:
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
Reinicia SSH:
systemctl restart ssh
Configurar Fail2Ban
apt install fail2ban
# Copy default configuration
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Enable and start
systemctl enable fail2ban
systemctl start fail2ban
Desglose de Costos
Costos mensuales:
- Servidor Hetzner CX11: 4,51 euros
- Dominio (anual, varía): ~10-15 euros/año
- Total: ~5-6 euros/mes
Comparación con n8n Cloud:
- n8n Starter: $20/mes
- n8n Pro: $50/mes
- Ahorro: $180-540/año
Escalando Tu Configuración
Múltiples Instancias de n8n
Puedes ejecutar múltiples instancias aisladas de n8n para diferentes equipos:
Crea /opt/n8n-team2/docker-compose.yml:
version: '3'
services:
n8n-team2:
image: n8nio/n8n:latest
restart: always
environment:
- N8N_HOST=team2.yourdomain.com
# ... rest of configuration
volumes:
- ./data:/home/node/.n8n
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.n8n-team2.rule=Host(`team2.yourdomain.com`)"
- "traefik.http.routers.n8n-team2.entrypoints=https"
- "traefik.http.routers.n8n-team2.tls.certresolver=letsencrypt"
- "traefik.http.services.n8n-team2.loadbalancer.server.port=5678"
networks:
proxy:
external: true
Actualizar los Recursos del Servidor
Si necesitas más potencia, actualiza tu servidor de Hetzner:
- CX21: 2 vCPU, 8 GB RAM (8,46 euros/mes)
- CX31: 2 vCPU, 16 GB RAM (16,07 euros/mes)
Conclusión
Ahora tienes una instalación de n8n lista para producción que cuesta una fracción de las soluciones alojadas mientras te da control completo. La configuración incluye HTTPS automático, funcionalidad de correo electrónico y gestión robusta de servicios.
Beneficios clave de este enfoque:
- Económico: Ahorra cientos de dólares anualmente
- Control total: Sin límites de uso ni restricciones
- Privacidad: Tus datos permanecen en tu infraestructura
- Personalizable: Modifica y amplía según sea necesario
Esta configuración ha sido probada en entornos de producción y proporciona fiabilidad de nivel empresarial a una fracción del costo.
Acerca de tva
tva garantiza la gestión integral de infraestructura de sistemas de bases de datos, entornos en la nube y cadenas de suministro globales. Nuestro enfoque metódico combina protocolos de seguridad rigurosos con optimización de rendimiento, mientras que los servicios de asesoría estratégica permiten la coordinación precisa tanto de capacidades digitales como de activos físicos, manteniendo los más altos estándares de excelencia operativa y cumplimiento en todos los compromisos.
Visita tva.sg para más información sobre nuestros servicios.