Registro de entrega
Fecha del registro: 15 de enero de 2026. La tecnología y las capturas describen la versión entregada según quedó documentada en esta fecha. Cualquier observación de rendimiento corresponde al mismo registro puntual. El sitio enlazado puede incluir cambios posteriores realizados por el cliente u otros proveedores.
Caddy-Admin es un panel de control web ligero y protegido con contraseña para gestionar reglas de redirección de proxy inverso de Caddy en un VPS. Proporciona una interfaz visual para agregar, editar y eliminar redirecciones sin editar manualmente /etc/caddy/Caddyfile, manejando escrituras atómicas con respaldos automáticos y recargas en vivo vía systemctl reload caddy.
El panel también muestra el estado de propagación DNS en tiempo real para cada dominio fuente de redirección y rastrea la expiración de certificados SSL de los archivos de Let's Encrypt en disco. Todo esto corre como un único proceso Node.js Express sin paso de build, el frontend es un único archivo HTML CSS JS vanilla.
Características Principales
Edición de Caddyfile en Vivo
La interfaz permite agregar, editar y eliminar redirecciones HTTP a través de un formulario intuitivo. Cada cambio escribe atómicamente en /etc/caddy/Caddyfile creando un respaldo con marca de tiempo antes de sobrescribir. Después de una escritura exitosa, el sistema ejecuta systemctl reload caddy para aplicar cambios sin tiempo de inactividad.
Para cada dominio fuente configurado, Caddy-Admin verifica la propagación DNS consultando registros A/AAAA contra múltiples resolvers públicos. Los resultados se muestran con indicadores visuales: verde para propagado, amarillo para parcial, rojo para no propagado. Esto ayuda a diagnosticar problemas de DNS antes de que afecten el tráfico.
Seguimiento de Certificados SSL
El sistema escanea el directorio de certificados de Let's Encrypt (/etc/letsencrypt/live/) y extrae las fechas de expiración de los certificados. Los administradores ven un panel con todos los certificados, días restantes hasta expiración y estado de renovación automática. Las alertas se muestran para certificados que expiran en menos de 14 días.
El frontend es un único archivo HTML con CSS embebido y JavaScript vanilla. No requiere paso de build, bundlers ni dependencias de frontend. Esto hace que el despliegue sea trivial: copiar un archivo y reiniciar el servicio. La interfaz usa CSS Grid y Flexbox para un diseño responsivo que funciona en desktop y móvil.
Autenticación de Administrador
El acceso al panel está protegido por autenticación básica HTTP con credenciales configurables vía variables de entorno. Las sesiones no se almacenan en el servidor; cada solicitud al panel requiere autenticación, eliminando problemas de gestión de sesiones.
Cada modificación del Caddyfile crea automáticamente un respaldo con marca de tiempo en /etc/caddy/backups/. Los administradores pueden ver historial de cambios y restaurar versiones anteriores si una redirección causa problemas. Los respaldos antiguos se purgan automáticamente después de 30 días.
- Node.js + Express – Servidor web y API REST
- Caddy – Servidor web y proxy inverso con HTTPS automático
- systemd – Gestión de servicios y recargas de Caddy
- Let's Encrypt – Certificados SSL gratuitos
- DNS-over-HTTPS – Verificación de propagación DNS
- Vanilla HTML/CSS/JS – Frontend sin dependencias ni build
Escritura atómica de Caddyfile
Editar /etc/caddy/Caddyfile directamente puede corromper el archivo si el proceso se interrumpe. Se implementó escritura atómica: escribir a un archivo temporal, verificar sintaxis con caddy validate, luego renombrar atómicamente. Si la validación falla, el archivo original permanece intacto.
Verificación DNS sin herramientas del sistema
El VPS puede no tener dig o nslookup disponibles. Se implementó verificación DNS usando resolvers DoH (DNS-over-HTTPS) públicos, que funciona sin dependencias del sistema operativo y proporciona respuestas consistentes.
Seguimiento de certificados SSL
Let's Encrypt almacena certificados en formato PEM. Se parsearon los archivos de certificado para extraer fechas de expiración usando el módulo crypto incorporado de Node.js, evitando dependencias externas.
Interfaz sin paso de build
Para mantener el despliegue simple, el frontend es un único archivo HTML. Se usó CSS moderno (Grid, Flexbox, variables CSS) para un diseño profesional sin frameworks. El JavaScript usa la API Fetch nativa para comunicarse con el backend.
- Gestión de redirecciones sin SSH – Los administradores gestionan Caddy sin acceso a la terminal
- Cero tiempo de inactividad en cambios – Las recargas de Caddy aplican cambios sin interrumpir conexiones existentes
- Prevención de errores – La validación de sintaxis antes de aplicar cambios previene configuraciones rotas
- Visibilidad de DNS – La verificación de propagación DNS diagnostica problemas antes de que afecten usuarios
- Sin dependencias de build – Despliegue trivial con un solo archivo
caddy.apalaugonzalez.com