Saltar a contenido

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

Referencias