ADR-015: Caddy como proxy inverso y terminación TLS¶
Estado: aceptado Fecha: 2026-05-17
Contexto¶
Todos los servicios internos de SmallCountry necesitan ser accesibles vía HTTPS con nombres de dominio legibles. Se necesita un proxy inverso que termine TLS, gestione certificados automáticamente, y sirva como punto único de entrada para el tráfico de usuarios. Debe funcionar en modo isla (sin conexión a internet) usando una CA interna.
Decisión¶
Caddy como proxy inverso con TLS automático. Let's Encrypt para servicios públicos, CA interna para servicios privados. Configuración declarativa mediante Caddyfile.
Alternativas consideradas¶
| Opción | Por qué se descartó |
|---|---|
| Nginx | Configuración más compleja. Sin renovación automática de certificados integrada. Requires certbot externo |
| Traefik | Orientado a Docker/Kubernetes. Overkill para arquitectura LXC. Mayor consumo |
| HAProxy | Sin soporte nativo de TLS automático. Más adecuado para balanceo de carga |
| Apache httpd | Más pesado. Configuración más verbosa. Sin renovación automática de certificados |
Consecuencias¶
- ✅ TLS automático con Let's Encrypt. Sin intervención manual para renovaciones
- ✅ CA interna para servicios privados (modo isla)
- ✅ Configuración simple: Caddyfile declarativo, fácil de versionar
- ✅ Proxy inverso con autenticación forward_auth hacia Authentik
- ✅ HTTP/2 y HTTP/3 (QUIC) con soporte nativo
- ❌ Comunidad más pequeña que Nginx. Menos ejemplos en producción a gran escala
- ❌ La CA interna requiere distribución de certificados raíz a los dispositivos cliente