Documentation Index
Fetch the complete documentation index at: https://docs.frankenpress.com/llms.txt
Use this file to discover all available pages before exploring further.
Every env var the FrankenPress platform reads, grouped by component.
None are required at the runtime layer — defaults produce a working
config. Site-level vars (WP_*, DB_*, the eight *_KEY / *_SALT)
are the consuming site’s responsibility.
fp-runtime (Caddy + FrankenPHP + Souin)
| Var | Default | Purpose |
|---|
REDIS_URL | redis:6379 | Redis backing Souin’s HTTP cache |
FP_CACHE_TTL | 5m | Default cache entry TTL |
FP_CACHE_STALE | 1h | Stale-while-revalidate window |
FP_CACHE_DEFAULT_CONTROL | public, s-maxage=300 | Cache-Control fallback |
FP_DOCROOT | /app/web | WordPress webroot inside the container |
FP_PORT | 8080 | Public HTTP listen port |
FP_METRICS_PORT | 9145 | Prometheus metrics listen port |
fp-mu-plugin: S3UploadsBootstrap
| Var | Default | Required |
|---|
FP_S3_BUCKET | — | ✓ |
FP_S3_KEY | — | ✓ |
FP_S3_SECRET | — | ✓ |
FP_S3_REGION | us-east-1 | |
FP_S3_BUCKET_URL | — | optional CDN URL |
FP_S3_ENDPOINT | — | optional, for non-AWS S3-compatible (MinIO, R2, GCS XML) |
FP_S3_DISABLED | false | truthy → skip the bootstrap (local dev only) |
When required vars are missing, the bootstrap registers
wp_handle_upload_prefilter to refuse uploads with a clear error
message rather than silently fall back to local disk.
fp-mu-plugin: SouinInvalidator
| Var | Default | Purpose |
|---|
FP_SOUIN_REDIS_HOST | redis | Redis hostname |
FP_SOUIN_REDIS_PORT | 6379 | Redis port |
FP_SOUIN_REDIS_PASSWORD | (empty) | Redis AUTH password |
FP_SOUIN_REDIS_DB | 0 | Logical database |
FP_SOUIN_REDIS_TIMEOUT | 1.0 | Connect timeout (seconds) |
FP_SOUIN_DISABLED | false | Truthy → no-op the invalidator (cache then expires only by TTL) |
If ext-redis isn’t loaded or the connection fails, the invalidator
becomes a silent no-op. Errors are logged via error_log.
WordPress site (fp-site-template)
These are read by config/application.php in the site template. None
are FrankenPress-specific — they’re standard WordPress config.
| Var | Default | Purpose |
|---|
WP_ENV | production | Selects which config/environments/*.php overrides load |
WP_HOME | (required) | Site URL (no trailing slash) |
WP_SITEURL | (required) | WordPress core URL (typically ${WP_HOME}/wp) |
DB_HOST | localhost | Database host |
DB_NAME, DB_USER, DB_PASSWORD | (required) | Database connection |
DB_PREFIX | wp_ | Table prefix |
AUTH_KEY etc. (8 keys+salts) | (required) | WP auth secrets — auto-generated by the Helm chart’s bootstrap Job by default |
FORCE_SSL_ADMIN | true | Force SSL for admin (the chart sets X-Forwarded-Proto pass-through) |
Build args (fp-runtime)
Set at image build time with --build-arg:
| Arg | Default | Purpose |
|---|
PHP_VERSION | 8.3 | PHP series |
FRANKENPHP_VERSION | 1.12.2 | Pinned FrankenPHP base tag |
CACHE_HANDLER_VERSION | v0.16.0 | Souin cache-handler module |
STORAGES_GO_REDIS_VERSION | v0.0.19 | Souin Redis storage |
CADDY_CBROTLI_VERSION | v1.0.1 | Brotli encoding |
WP_CLI_VERSION | 2.12.0 | WP-CLI release |
FP_MU_PLUGIN_VERSION | v0.1.1 | fp-mu-plugin tag to bake; set to "" to skip |
Helm values (fp-site chart)
A condensed reference of the most-used values — see
fp-charts/charts/fp-site/values.yaml
for every annotated parameter.
image:
registry: ghcr.io
repository: eightoeight/fp-site-template
tag: "" # defaults to chart appVersion
pullPolicy: IfNotPresent
pullSecrets: []
site:
url: "http://fp-site.localhost"
env: production
wpPath: /wp
keysSalts:
autoGenerate: true # one-shot Job, or:
existingSecret: "" # External Secrets Operator's Secret name
replicaCount: 1
autoscaling:
enabled: false # set true + minReplicas/maxReplicas in prod
ingress:
enabled: false # pick this OR httpRoute
httpRoute:
enabled: false # pick this OR ingress
mariadb: { enabled: true } # off → externalDatabase.host = ...
redis: { enabled: true } # off → externalCache.host = ...
minio: { enabled: true } # off → externalS3.endpoint = ...
externalDatabase: # used when mariadb.enabled = false
host: ""
database: wordpress
user: wordpress
existingSecret: "" # password lives here
externalCache: # used when redis.enabled = false
host: ""
port: 6379
externalS3: # used when minio.enabled = false
bucket: site-media
region: us-east-1
endpoint: "" # leave empty for AWS S3
bucketUrl: "" # CDN URL, sets WP_CONTENT_URL
existingSecret: "" # keys: access-key, secret-key