Skip to main content

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)

VarDefaultPurpose
REDIS_URLredis:6379Redis backing Souin’s HTTP cache
FP_CACHE_TTL5mDefault cache entry TTL
FP_CACHE_STALE1hStale-while-revalidate window
FP_CACHE_DEFAULT_CONTROLpublic, s-maxage=300Cache-Control fallback
FP_DOCROOT/app/webWordPress webroot inside the container
FP_PORT8080Public HTTP listen port
FP_METRICS_PORT9145Prometheus metrics listen port

fp-mu-plugin: S3UploadsBootstrap

VarDefaultRequired
FP_S3_BUCKET
FP_S3_KEY
FP_S3_SECRET
FP_S3_REGIONus-east-1
FP_S3_BUCKET_URLoptional CDN URL
FP_S3_ENDPOINToptional, for non-AWS S3-compatible (MinIO, R2, GCS XML)
FP_S3_DISABLEDfalsetruthy → 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

VarDefaultPurpose
FP_SOUIN_REDIS_HOSTredisRedis hostname
FP_SOUIN_REDIS_PORT6379Redis port
FP_SOUIN_REDIS_PASSWORD(empty)Redis AUTH password
FP_SOUIN_REDIS_DB0Logical database
FP_SOUIN_REDIS_TIMEOUT1.0Connect timeout (seconds)
FP_SOUIN_DISABLEDfalseTruthy → 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.
VarDefaultPurpose
WP_ENVproductionSelects 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_HOSTlocalhostDatabase host
DB_NAME, DB_USER, DB_PASSWORD(required)Database connection
DB_PREFIXwp_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_ADMINtrueForce SSL for admin (the chart sets X-Forwarded-Proto pass-through)

Build args (fp-runtime)

Set at image build time with --build-arg:
ArgDefaultPurpose
PHP_VERSION8.3PHP series
FRANKENPHP_VERSION1.12.2Pinned FrankenPHP base tag
CACHE_HANDLER_VERSIONv0.16.0Souin cache-handler module
STORAGES_GO_REDIS_VERSIONv0.0.19Souin Redis storage
CADDY_CBROTLI_VERSIONv1.0.1Brotli encoding
WP_CLI_VERSION2.12.0WP-CLI release
FP_MU_PLUGIN_VERSIONv0.1.1fp-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