FrankenPHP vs River
A side-by-side comparison of two self-hosted reverse proxy & gateways options — licensing, setup difficulty, resource needs, and what each one replaces.
| Feature | FrankenPHP | River |
|---|---|---|
| Deploy effort | Under-an-hour setup | Read-the-docs project |
| Health score | 93 · Excellent | 17 · At risk |
| Category | Reverse Proxy & Gateways | Reverse Proxy & Gateways |
| License | MIT | Apache-2.0 |
| Language | Go | Rust |
| Setup difficulty | Medium | Medium |
| Min. RAM | 256 MB | 64 MB |
| Deployment | docker, binary | binary, source |
| GitHub stars | ★ 11,358 | ★ 2,353 |
| First released | 2022 | 2024 |
| Replaces | nginx, Apache HTTP Server | nginx, HAProxy |
What are FrankenPHP and River?
FrankenPHP
FrankenPHP is a modern application server for PHP, built on top of the Caddy web server, that adds features like worker mode, real-time capabilities, and automatic HTTPS. It serves PHP apps directly.
- PHP app server on Caddy
- Worker mode performance
- Automatic HTTPS
- Built-in real-time support
River
River is a reverse-proxy application built on Cloudflare's Pingora engine, providing a configurable binary for HTTP proxying and load balancing. It is self-hosted and configured through files.
- Pingora-based
- Load balancing
- File-driven config
- Memory-safe Rust
FrankenPHP vs River: key differences
FrankenPHP is written in Go, while River is built with Rust. Licensing differs — MIT for FrankenPHP versus Apache-2.0 for River. River is the lighter option, starting around 64 MB of RAM against 256 MB for FrankenPHP. FrankenPHP is the more established project (first released 2022), while River arrived in 2024. FrankenPHP has the considerably larger community, at 11,358 GitHub stars versus 2,353. FrankenPHP lists first-class Docker deployment; River does not.
Why pick each one
Choose FrankenPHP if…
- Released under the MIT license
- First-class Docker support for quick deployment
- Mature project with 11.4k GitHub stars
- Written in Go
Choose River if…
- Released under the Apache-2.0 license
- Active community (2.4k GitHub stars)
- Written in Rust
- Tiny footprint — runs in 64 MB RAM
Frequently asked questions
Is FrankenPHP or River better?
Neither is universally better. FrankenPHP has the larger community; both share a medium setup difficulty, so the decision comes down to features and licensing.
Are FrankenPHP and River free and open-source?
Yes. FrankenPHP is licensed under MIT and River under Apache-2.0. Both can be self-hosted at no software cost.
Can I run FrankenPHP and River with Docker?
FrankenPHP: yes. River: check the project docs for container support.
Which is lighter on resources, FrankenPHP or River?
River has the smaller minimum footprint at 64 MB of RAM, compared to about 256 MB for FrankenPHP. Real-world usage depends on library size, user count, and enabled features.