Las imágenes Docker serversideup/php se publicaron como v4.6.0-beta1 con la variable CADDY_ACME_PROFILE. Con el valor shortlived, selecciona el perfil de certificados de corta duración de Let's Encrypt, el único perfil bajo el que la CA emite certificados para direcciones IP. Un contenedor FrankenPHP accesible solo por IP puede así servir HTTPS real sin ningún registro DNS. Jay Rogers de Server Side Up anunció la función junto con la beta.
Los casos típicos: servidores de staging, APIs internas tras una VPN, servidores de demostración y paneles autoalojados. Hasta ahora eso implicaba certificados autofirmados con advertencias del navegador o un proxy inverso con el certificado real. Let's Encrypt hizo los certificados de 6 días y los de IP generalmente disponibles en enero. Caddy implementa la selección de perfil y los identificadores IP, y FrankenPHP integra Caddy, actualmente v2.11.4.
CADDY_ACME_PROFILE está desactivada por defecto y acepta shortlived, tlsserver o classic. Con shortlived, Caddy solicita certificados válidos durante 160 horas y los renueva cada dos días. Estos certificados cortos no necesitan información de revocación según el CA/Browser Forum, aunque el perfil sigue apuntando a una CRL. Activar cualquier perfil elimina el respaldo de ZeroSSL. El ciclo de renovación de dos días deja menos margen: si un firewall bloquea el acceso a la API ACME, el certificado expira en unos cuatro días y medio en lugar de semanas.
La función solo existe en las etiquetas beta, así que hay que fijar serversideup/php:8.4-frankenphp-v4.6.0-beta1. La configuración Compose usa SSL_MODE: "full", CADDY_AUTO_HTTPS: "on", CADDY_ACME_PROFILE: "shortlived", CADDY_HTTPS_SERVER_ADDRESS con la IP y CADDY_GLOBAL_OPTIONS: "default_sni example.com". El contenedor corre sin privilegios en 8080 y 8443, por lo que los puertos 80 y 443 deben mapearse y ser accesibles para el reto ACME. El respaldo default_sni es necesario porque un cliente que se conecta a una IP no envía SNI y Caddy no tendría con qué asociar el certificado.
Quienes usen IPv6 deben probarlo antes de confiar en ello. Caddy corrigió el manejo de IPv6 para certificados IP en el issue #7399, cerrado en abril; v2.11.4 incluye la corrección, pero IPv4 lleva más tiempo funcionando. Hay que montar /config y /data como volúmenes: ahí viven los certificados y el estado de la cuenta ACME, y perderlos provoca nuevas solicitudes en cada reinicio. Let's Encrypt permite cinco certificados por conjunto de identificadores cada siete días, unos pocos redespliegues pueden agotar la semana.
La beta además unifica TRUSTED_PROXY entre FrankenPHP, NGINX y Apache, de modo que request()->ip() devuelve al visitante y no al proxy. Acepta cloudflare (por defecto), sucuri, local u off, y confía también en los rangos internos de Docker. FrankenPHP gana un directorio caddyfile-global.d, Laravel Nightwatch un script healthcheck-nightwatch que ejecuta php artisan nightwatch:status, y AUTORUN_LARAVEL_SKIP_IF_NOT_FOUND permite al contenedor terminar limpiamente cuando Laravel aún no está instalado. Como prerelease, conviene mantenerla lejos de cualquier sistema que no puedas permitirte romper.
Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.