FrankenPress is an opinionated, minimal way to run WordPress at scale on Kubernetes. Four small repos, one immutable site image, and a Helm chart that deploys onDocumentation Index
Fetch the complete documentation index at: https://docs.frankenpress.com/llms.txt
Use this file to discover all available pages before exploring further.
kind in under a minute.
Quickstart
Deploy a working WordPress site on a local
kind cluster in 3 steps.Architecture
What each
fp-* repo does and how they fit together.Production topology
DragonflyDB Operator, MariaDB Operator, AWS S3, External Secrets.
Components
Deep dives into
fp-runtime, fp-mu-plugin, fp-site-template, and fp-charts.What’s in the box
Caddy + FrankenPHP runtime
A single-process container — no nginx, no PHP-FPM, no supervisord.
fp-runtime bakes
caddyserver/cache-handler
(Souin) for HTTP-level page caching with Redis-protocol storage.Slim must-use plugin
Two components only:
S3UploadsBootstrap
(refuses uploads when S3 isn’t fully configured — no silent local-disk
fallback) and
SouinInvalidator
(direct Redis DEL on save_post — bypasses cache-handler v0.16.0’s
broken HTTP invalidation APIs).GitHub-template site
fp-site-template
is a Bedrock-layout WordPress site preconfigured for the runtime.
Click “Use this template”, run make setup, you have a site.Bitnami-style Helm chart
fp-charts ships
fp-site — a Helm chart that consumes any fp-site-template-built
image. Bundles MariaDB + Redis + MinIO subcharts for instant
kind deploys. Production swaps to managed services / operators.Design principles
- Immutable images, no admin-installable plugins. The “Update WordPress / plugins / themes” buttons are absent in admin. Lockdown is hard-coded; admin-side installs would land on ephemeral pod disk and vanish on restart anyway.
- Single must-use plugin scope: S3 safety + cache invalidation. Anything else (URL fixers, object cache, metrics, WooCommerce log handlers) is a regular plugin sites install themselves.
- Slim default deps. No WooCommerce, no opinionated theme picks. The site template ships only what’s strictly needed for WordPress to render.
- No GitOps glue. The Helm chart deploys plain Deployment + Service + HTTPRoute. End users wrap with Argo Rollouts / Kargo / Flux / etc. as they see fit.
Why “FrankenPress”?
FrankenPHP — the modern PHP app server built on Caddy — does most of the heavy lifting for the runtime. We add Souin for HTTP cache, S3-Uploads for media, and just enough WordPress glue to make Bedrock-style sites work cleanly on Kubernetes.FrankenPress is built and maintained by EightOEight.
All four
fp-* repositories are Apache-2.0 licensed.