FrankenPHP, the modern PHP application server with worker mode and automatic HTTPS, serving on first boot.
FrankenPHP is a modern PHP application server built on the Caddy web server. It embeds the PHP interpreter and Caddy in a single self contained binary, adding worker mode, automatic HTTPS, early hints and real time features, so you run high performance PHP without wiring together a separate web server and a PHP FPM pool.
cloudimg ships FrankenPHP hardened, fully patched and preconfigured, serving a demo PHP app over HTTPS the moment it boots. The Caddy admin API is disabled for a secure by default posture, and every instance generates its own self signed TLS certificate on first boot. Backed by 24/7 support.
Real screenshots taken while testing this image against its deployment guide.
This is a repackaged open source software product wherein additional charges apply for cloudimg support services.
## Overview
FrankenPHP is a modern PHP application server built on top of the Caddy web server. It embeds the PHP interpreter and Caddy into a single self-contained binary, eliminating the need to wire together a separate web server and a PHP-FPM pool. Where a traditional LAMP or Nginx + PHP-FPM stack requires you to install, configure, and keep multiple packages in sync - web server, PHP-FPM, Certbot for TLS - FrankenPHP collapses all of that into one process with zero runtime library dependencies.
FrankenPHP adds worker mode for long-running application workers, automatic HTTPS, early hints, and real-time features such as server-sent events and the Mercure hub, while remaining fully compatible with your existing PHP applications and frameworks like Laravel and Symfony. This cloudimg AMI delivers FrankenPHP fully installed and configured on Amazon EC2, running as a hardened systemd service, so a working PHP application server is answering requests over HTTPS within minutes of launch.
## Use Case: Real-Time SaaS Dashboard with Laravel
Consider a Laravel application that pushes live metric updates to hundreds of concurrent browser sessions via server-sent events. With a traditional Nginx + PHP-FPM deployment, each SSE connection ties up an FPM worker, quickly exhausting your pool. FrankenPHP's worker mode keeps the Laravel application booted in memory between requests, and its native SSE support handles persistent connections without consuming additional PHP processes. Pair this with an Application Load Balancer for horizontal scaling and you have a real-time dashboard architecture that scales to thousands of concurrent viewers.
## Demo App That Proves PHP Execution
The server is driven entirely by a plain-text Caddyfile at /etc/frankenphp/Caddyfile. A small demo PHP application ships in the document root at /var/www/html so a freshly launched instance immediately demonstrates end-to-end PHP execution: browse to the instance over HTTPS and the landing page reports the exact PHP runtime version it was rendered by. Drop your own PHP application into the document root, or point the Caddyfile at your application entry point, and restart the service to go live.
## Application Stack
FrankenPHP runs as a dedicated non-root service with the Linux CAP_NET_BIND_SERVICE capability so it can bind the privileged web ports. It serves your application over HTTPS on port 443 and permanently redirects plain HTTP on port 80 to HTTPS. The embedded PHP interpreter and Caddy web server are a single static binary with no runtime library dependencies, so there is no PHP-FPM socket to manage and no separate web server to keep in sync.
## Secure By Default
FrankenPHP embeds Caddy, whose administration interface can rewrite the running configuration over the network. This image disables that administration interface entirely so it does not listen on any interface, removing a powerful remote configuration surface. On first boot a one-shot service generates a fresh per-instance self-signed TLS certificate bound to that instance address, so the server answers over HTTPS immediately with no shared or default certificate and no shared or default credentials of any kind, since FrankenPHP has no login. If you own a domain name you can switch to fully automatic HTTPS with a trusted certificate by editing a single Caddyfile block.
## AWS Integrations
## Key Capabilities