n8n con Caddy como reverse proxy es una de las formas más prácticas y rápidas de poner en producción tu instancia de n8n con HTTPS automático. Si alguna vez configuraste Nginx como reverse proxy para n8n y te pareció complicado, te cuento que n8n con Caddy como reverse proxy es la alternativa perfecta: configuración mínima, certificados SSL sin Certbot y una sintaxis tan limpia que vas a querer migrar todo.
¿Por qué usar Caddy en lugar de Nginx para n8n con Caddy como Reverse Proxy?
Caddy tiene varias ventajas frente a Nginx cuando lo usás 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 (clave para n8n)
- HTTP/2 y HTTP/3: activados automáticamente para mejor rendimiento
Requisitos previos para configurar n8n con Caddy como Reverse Proxy
- Un VPS o servidor con Ubuntu/Debian
- Docker y Docker Compose instalados
- Un dominio apuntando a la IP del servidor (registro A configurado)
- Puerto 80 y 443 abiertos en el firewall
Estructura del proyecto
Antes de arrancar, creá la carpeta del proyecto con esta estructura:
/opt/n8n/
├── docker-compose.yml
├── Caddyfile
└── .envdocker-compose.yml con Caddy y n8n
Este es el archivo docker-compose.yml completo para levantar n8n con Caddy como reverse proxy usando Docker:
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=America/Mexico_City
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
volumes:
- n8n_data:/home/node/.n8n
volumes:
caddy_data:
caddy_config:
n8n_data:Nota importante: n8n no expone el puerto 5678 directamente al exterior porque Caddy se comunica con él a través de la red interna de Docker. Esto es más seguro que exponer puertos innecesarios.
Caddyfile: la config más simple para n8n con Caddy como Reverse Proxy
Creá el archivo Caddyfile en /opt/n8n/:
n8n.tudominio.com {
reverse_proxy n8n:5678
}Eso es todo. Sí, leíste bien. Con estas tres líneas, Caddy hace todo esto automáticamente:
- Obtiene el certificado SSL de Let’s Encrypt
- Configura HTTPS y redirige HTTP a HTTPS
- Hace proxy de todas las peticiones a n8n, incluyendo WebSockets
- Renueva los certificados antes de que expiren
Compará eso con los 30+ líneas que necesitás en Nginx más la configuración de Certbot. La diferencia es abismal.
Archivo .env para las variables de entorno
Creá el archivo .env en la misma carpeta con tus datos:
DOMAIN=n8n.tudominio.com
N8N_ENCRYPTION_KEY=tu_clave_aleatoria_de_32_charsPara generar una clave de encriptación segura, podés usar: openssl rand -hex 16
Arrancar n8n con Caddy paso a paso
Con todo configurado, levantá los servicios:
cd /opt/n8n
docker compose up -d
# Verificá que Caddy obtenga el certificado correctamente
docker compose logs -f caddyEn los logs vas a ver algo como:
certificate obtained successfully
serving initial configurationAhora accedé a https://n8n.tudominio.com y vas a ver n8n funcionando con HTTPS. Así de simple.
Caddyfile avanzado con cabeceras de seguridad
Si querés una configuración más robusta de n8n con Caddy como reverse proxy, podés agregar cabeceras de seguridad y logging:
n8n.tudominio.com {
reverse_proxy n8n:5678
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Content-Type-Options "nosniff"
X-Frame-Options "SAMEORIGIN"
Referrer-Policy "strict-origin-when-cross-origin"
-Server
}
log {
output file /var/log/caddy/n8n.log
}
}Estas cabeceras mejoran la seguridad de tu instancia al prevenir ataques comunes como clickjacking y MIME sniffing.
Solución de problemas comunes
Si tenés problemas con tu configuración de n8n con Caddy como reverse proxy, revisá estos puntos:
- Caddy no obtiene el certificado: verificá que el dominio apunte correctamente a la IP del servidor y que los puertos 80/443 estén abiertos
- n8n no carga: revisá los logs con
docker compose logs n8ny verificá que las variables de entorno estén bien - Error 502 Bad Gateway: esperá unos segundos, n8n tarda un poco en arrancar. Si persiste, verificá que ambos contenedores estén en la misma red de Docker
- Webhooks no funcionan: asegurate de que
WEBHOOK_URLen el.envcoincida exactamente con tu dominio

Comparativa: Caddy vs Nginx para n8n
Para que tengas claro cuándo elegir cada uno, acá va la comparativa directa:
| Característica | Caddy | Nginx |
|---|---|---|
| HTTPS automático | ✅ Incluido | ❌ Requiere Certbot |
| WebSockets | ✅ Automático | ⚠️ Configuración manual |
| Sintaxis | ✅ Muy simple (3 líneas) | ❌ Más compleja (30+ líneas) |
| Rendimiento | ✅ Excelente | ✅ Excelente |
| Documentación | ✅ Buena | ✅ Muy extensa |
| Consumo de recursos | ✅ Bajo | ✅ Muy bajo |
| Ideal para | Servidores dedicados a n8n | Servidores con múltiples servicios |
Para un servidor dedicado a n8n, Caddy es claramente la mejor opción por su simplicidad. Nginx sigue siendo preferible si ya lo usás para otros servicios en el mismo servidor y no querés agregar otro reverse proxy.

Preguntas frecuentes sobre n8n con Caddy como Reverse Proxy
¿Es seguro usar Caddy como reverse proxy para n8n en producción?
Sí, totalmente. Caddy es usado en producción por miles de empresas. Obtiene certificados SSL de Let’s Encrypt automáticamente, soporta HTTP/2 y HTTP/3, y tiene un excelente historial de seguridad. Para mayor protección, agregá las cabeceras de seguridad que mostramos en la configuración avanzada.
¿Puedo usar Caddy para servir n8n y otros servicios en el mismo servidor?
Sí, solo necesitás agregar más bloques en tu Caddyfile. Cada dominio o subdominio puede apuntar a un servicio diferente. Por ejemplo, podés tener n8n.tudominio.com apuntando a n8n y app.tudominio.com apuntando a otra aplicación, todo con HTTPS automático.
¿Qué pasa si el certificado SSL expira al usar n8n con Caddy como reverse proxy?
No te preocupes por eso. Caddy renueva automáticamente los certificados antes de que expiren. No necesitás configurar cron jobs ni renovaciones manuales como con Certbot. Mientras el contenedor de Caddy esté corriendo, tus certificados siempre van a estar vigentes.
¿Caddy consume más recursos que Nginx?
Caddy consume ligeramente más memoria RAM que Nginx (alrededor de 20-30 MB vs 5-10 MB de Nginx), pero para un servidor que corre n8n esto es insignificante. El rendimiento en requests por segundo es comparable en ambos para el tipo de tráfico que maneja n8n.
¿Vale la pena? Nuestra opinión
Configurar n8n con Caddy como reverse proxy 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 va a ahorrar tiempo y dolores de cabeza con los certificados SSL.
Si ya tenés experiencia con Docker, todo el proceso te toma menos de 5 minutos. Para más configuraciones avanzadas de n8n, te recomiendo revisar la documentación oficial de hosting de n8n y la documentación de Caddy.
También te puede interesar
- n8n Cloud vs Self-Hosted: Diferencias Clave y Cuál Elegir
- n8n en Railway Gratis: Cómo Desplegarlo Paso a Paso
- Configurar Dominio Personalizado y SSL en n8n: Guía 2026
- n8n Docker Compose Producción: Guía Completa 2026
