v4.6.0-beta1
Pre-release🤩 What's new
Short-lived & IP address certificates for FrankenPHP
FrankenPHP can now request Let's Encrypt's new short-lived (~6-day) certificate profile through the new CADDY_ACME_PROFILE variable. Short-lived certificates skip revocation entirely, and the same profile is what lets you issue certificates for raw IP addresses — handy for services that don't have a domain in front of them.
Configure short-lived & IP certificates →
Trusted proxy support for every variation (#643)
TRUSTED_PROXY now works the same way across all variations — FrankenPHP, NGINX, and Apache — so your app sees the real client IP whether it's behind Cloudflare, a load balancer, or your own reverse proxy. FrankenPHP users also get Caddy global imports, making it easy to layer in your own global configuration.
Native Laravel Nightwatch support (#572)
Added a native health check for Laravel Nightwatch, complete with documentation to wire it up.
New AUTORUN_LARAVEL_SKIP_IF_NOT_FOUND variable
A new opt-in for shared images: when AUTORUN_ENABLED=true but Laravel isn't present yet (for example, before your first composer install), the container now exits gracefully instead of failing.
👨💻 DX improvements
- Cleaned up logging to make it cleaner and less noisy — especially when running "one off" commands like
composer install(#671)
🐛 Bug fixes
All variations
- Refactored the Laravel migration script to prevent an issue with older versions of Laravel that attempt to run migration isolation (#628 & #627)
- Added the DB Facade import for
LARAVEL_AUTORUNon modern Laravel versions (#673, fixes #672)
All web servers (FrankenPHP, NGINX, Apache)
- Fixed a bug where duplicate SEO content was possible (#646)
- Don't generate SSL if
DISABLE_DEFAULT_CONFIGis true (#644)
Apache
⏫ Dependency Updates
- Upgraded PHP Extension installer to v2.11.12
- Upgraded S6 Overlay to v3.2.3.2