N8n con Caddy reverse proxy es uno de los usos más prácticos de n8n. Si has configurado Nginx como reverse proxy para n8n y te ha parecido complicado, n8n con Caddy es la alternativa perfecta. Caddy configura HTTPS automáticamente sin necesidad de Certbot, con una sintaxis de configuración mucho más limpia y sencilla.
¿Por qué usar Caddy en lugar de Nginx para n8n?
Caddy tiene varias ventajas frente a Nginx cuando lo usas como reverse proxy para n8n:
- HTTPS automático: obtiene y renueva certificados Let's Encrypt sin ninguna configuración extra
- Configuración más simple: un Caddyfile es mucho más legible que un virtualhost de Nginx
- WebSockets por defecto: Caddy soporta WebSockets sin configuración adicional
- HTTP/2 y HTTP/3: activados automáticamente para mejor rendimiento
Requisitos
- Un VPS o servidor con Ubuntu/Debian
- Docker y Docker Compose instalados
- Un dominio apuntando a la IP del servidor
- Puerto 80 y 443 abiertos en el firewall
Estructura del proyecto
/opt/n8n/
├── docker-compose.yml
├── Caddyfile
└── .env
docker-compose.yml con Caddy y n8n
version: "3.8"
services:
caddy:
image: caddy:latest
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
n8n:
image: n8nio/n8n
restart: always
environment:
- N8N_HOST=${DOMAIN}
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://${DOMAIN}/
- GENERIC_TIMEZONE=Europe/Madrid
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
volumes:
- n8n_data:/home/node/.n8n
volumes:
caddy_data:
caddy_config:
n8n_data:
Nota: n8n no expone el puerto 5678 directamente porque Caddy se comunica con él por la red interna de Docker.
Caddyfile: la configuración más simple posible
Crea el archivo Caddyfile en /opt/n8n/:
n8n.tudominio.com {
reverse_proxy n8n:5678
}
Eso es todo. Con estas tres líneas, Caddy:
- Obtiene automáticamente el certificado SSL de Let's Encrypt
- Configura HTTPS y redirige HTTP a HTTPS
- Hace proxy de todas las peticiones a n8n, incluyendo WebSockets
Archivo .env
DOMAIN=n8n.tudominio.com
N8N_ENCRYPTION_KEY=tu_clave_aleatoria_de_32_chars
Arrancar n8n con Caddy
cd /opt/n8n
docker compose up -d
# Ver que Caddy obtiene el certificado correctamente
docker compose logs -f caddy
En los logs verás algo como:
certificate obtained successfully
serving initial configuration
Accede a https://n8n.tudominio.com y verás n8n con HTTPS funcionando.
Caddyfile avanzado con cabeceras de seguridad
Para una configuración más robusta de n8n con Caddy, añade cabeceras de seguridad:
n8n.tudominio.com {
reverse_proxy n8n:5678
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Content-Type-Options "nosniff"
X-Frame-Options "SAMEORIGIN"
-Server
}
log {
output file /var/log/caddy/n8n.log
}
}
Comparativa: Caddy vs Nginx para n8n
| Característica | Caddy | Nginx |
|---|---|---|
| HTTPS automático | ✅ Incluido | ❌ Requiere Certbot |
| WebSockets | ✅ Automático | ⚠️ Configuración manual |
| Sintaxis | ✅ Muy simple | ❌ Más compleja |
| Rendimiento | ✅ Excelente | ✅ Excelente |
| Documentación | ✅ Buena | ✅ Muy extensa |
Para un servidor dedicado a n8n, Caddy es claramente la mejor opción por su simplicidad. Nginx sigue siendo preferible si ya lo usas para otros servicios en el mismo servidor.
Conclusión
Configurar n8n con Caddy es significativamente más sencillo que con Nginx. Un Caddyfile de tres líneas te da HTTPS automático, soporte de WebSockets y un reverse proxy completamente funcional. Si estás instalando n8n desde cero, Caddy te ahorrará tiempo y dolores de cabeza con los certificados SSL.


