¿Por qué elegir Caddy como frontal en su VPS?
La complejidad histórica de un reverse proxy viene del TLS: generar un certificado, configurar la renovación, gestionar la redirección de HTTP a HTTPS. Caddy elimina todo eso. En cuanto indica un nombre de dominio en el Caddyfile, contacta con Let's Encrypt (o con ZeroSSL como respaldo), aprovisiona el certificado, lo grapa (OCSP stapling) y lo renueva en segundo plano. La configuración es legible, breve y recargable en caliente sin cortar el servicio.
Los puntos fuertes de Caddy en producción
- HTTPS automático de principio a fin: emisión, renovación y redirección sin intervención
- Caddyfile minimalista: un bloque de pocas líneas por sitio, mucho más corto que una conf de Nginx
- Reverse proxy integrado con health checks y balanceo de carga hacia sus contenedores o puertos locales
- HTTP/2 y HTTP/3 (QUIC) activados por defecto
- Recarga en caliente de la configuración (
caddy reload) sin interrumpir las conexiones - API de administración JSON para controlar la configuración de forma dinámica
Requisitos previos
Caddy es sobrio: 1 vCPU y de 512 MB a 1 GB de RAM bastan para servir varios sitios en reverse proxy. Puede elegir entre instalarlo como binario del sistema (servicio systemd) en Ubuntu/Debian o ejecutarlo en un contenedor Docker. En ambos casos necesita un dominio que apunte a la IP del VPS y los puertos 80, 443 (y 443/UDP para HTTP/3) abiertos en su cortafuegos.
Desplegar Caddy como reverse proxy
Instalar Caddy
En Ubuntu/Debian, añada el repositorio oficial y después
apt install caddy. Caddy se registra como servicio systemd activo en el arranque. Compruébelo:systemctl status caddy. En modo contenedor, parta de la imagencaddy:latesty monte un volumen en/datapara conservar los certificados.Apuntar el DNS y abrir los puertos
Cree un registro A
app.sudominio.comhacia la IP del VPS. Abra los puertos necesarios:ufw allow 80,ufw allow 443yufw allow 443/udppara HTTP/3. El puerto 80 es imprescindible para el challenge HTTP de Let's Encrypt.Escribir el Caddyfile
Edite
/etc/caddy/Caddyfile. Para exponer una aplicación que se ejecuta en local en el puerto 3000:app.sudominio.com { reverse_proxy localhost:3000 }. Eso es todo: Caddy deduce que hace falta HTTPS porque usted ha indicado un dominio y lanza la emisión del certificado.Recargar y comprobar
Aplique la configuración sin corte:
caddy reload --config /etc/caddy/Caddyfile. Siga la obtención del certificado en los logs:journalctl -u caddy -f. En la primera llamada HTTPS a su dominio, el certificado ya está en su sitio.Añadir cabeceras de seguridad y compresión
Enriquezca el bloque con una directiva
headerpara HSTS y las cabeceras anti-clickjacking, y activeencode gzip zstdpara la compresión. Como la configuración es declarativa, estos añadidos siguen siendo legibles y un simplecaddy reloadlos aplica.Conectarse por primera vez
Caddy es un servidor web, no tiene interfaz de conexión: tras la instalación sirve su página de bienvenida en el puerto 80 y usted lo configura por SSH editando /etc/caddy/Caddyfile y después systemctl reload caddy. El TLS automático solo se activará cuando se declare un nombre de dominio real en ese archivo.
Para alojar varias aplicaciones en el mismo VPS, basta con enumerar varios bloques de sitio en el mismo Caddyfile, cada uno con su reverse_proxy. Y para el desarrollo local sin dominio público, sustituya el nombre de dominio por :80 o utilice la directiva tls internal: Caddy genera entonces una CA local y firma él mismo el certificado, algo práctico para un entorno de preproducción interno.
La documentación oficial
Para la configuración avanzada y las opciones propias de la herramienta, consulte la documentación oficial de Caddy. Esta guía cubre la puesta en línea en un VPS; la documentación del editor sigue siendo la referencia para los ajustes finos, las actualizaciones mayores y los casos de uso específicos.