Skip to content

Configuration

Paprika is configured by environment variables only; nothing secret is built into the image. With the Compose file, set them in .env (install). A value that can’t be read (a tier list that isn’t JSON, a worker tier that isn’t configured) stops the service at start, saying why.

The api, worker and editor services.

Variable Default Meaning
PORT 4179 for api, 4180 for worker, 4178 for editor The port to listen on
PAPRIKA_BIND 0.0.0.0 in the image The address to listen on
PAPRIKA_HOSTS none: localhost and 127.0.0.1 only More host names to answer to, comma-separated: name:port on that port only, or a name alone, answered on the service’s port and with no port, as an HTTPS proxy on the standard port sends it
PAPRIKA_LOG all all, errors or off (troubleshooting)
Variable Default Meaning
PAPRIKA_DATABASE_URL none PostgreSQL, as postgres://user:password@host:5432/database (storage)
PAPRIKA_STORAGE disk Where files are kept: disk is the only kind for now
PAPRIKA_STORAGE_DIR /data in the image The folder files are kept in, shared by the API and every worker
PAPRIKA_WORKERS 1 (2 in the Compose file) The API’s render threads for synchronous renders, and how many jobs a worker renders at once unless PAPRIKA_WORKER_CONCURRENCY says
PAPRIKA_SIGNING_KEYS none: signed links off Keys for signed download links, comma-separated: the first signs, every one verifies
PAPRIKA_TIERS one tier, standard, no limits The service tiers, as JSON (scheduler)
PAPRIKA_WEBHOOK_ALLOW_PRIVATE false true lets webhooks reach private addresses and plain http:// (security)
PAPRIKA_METERING on on or off (metering)
Variable Default Meaning
PAPRIKA_ADMIN_TOKEN none: admin API off The admin API’s tokens, comma-separated (tenants)
PAPRIKA_SYNC_TIMEOUT_MS 30000 How long a synchronous render may take before it is answered 504
Variable Default Meaning
PAPRIKA_WORKER_CONCURRENCY PAPRIKA_WORKERS How many jobs one worker renders at once
PAPRIKA_WORKER_TIERS none: every tier The tiers whose work this worker claims, comma-separated (reserved capacity)
PAPRIKA_JOB_TIMEOUT_MS 600000 (10 minutes) How long one job may render
PAPRIKA_JOB_LEASE_MS 60000 (a minute) How long a worker holds a job between renewals: a job whose worker stopped is taken up again after this
Variable Default Meaning
PAPRIKA_MAX_PACKAGE_MB 100 The largest template package
PAPRIKA_MAX_EXPANDED_MB 250 The largest template package, unpacked
PAPRIKA_MAX_IMAGE_MEGAPIXELS 40 The largest image, in millions of pixels
PAPRIKA_MAX_QUEUED_JOBS 1000 The most jobs one tenant may have queued or running
PAPRIKA_MAX_BATCH_RECORDS 10000 The most records in one batch
PAPRIKA_MAX_OPEN_BATCHES 10 The most batches one tenant may have unfinished
PAPRIKA_MAX_MERGED_RECORDS 1000 The most records merged into one PDF
PAPRIKA_MAX_COMBINED_MB 1000 The largest combined output of a batch
Variable Default Meaning
PAPRIKA_OUTPUT_RETENTION_HOURS 24 How long rendered files are kept
PAPRIKA_JOB_RETENTION_DAYS 7 How long finished jobs, batches and webhook deliveries are kept
PAPRIKA_USAGE_KEEP_DAYS 400 How long usage events and storage measures are kept
Variable Default Meaning
PAPRIKA_API http://127.0.0.1:4179 The API the editor forwards /v1 requests to
PAPRIKA_EDITOR_KEY none The API key the editor forwards with
PAPRIKA_EDITOR_KEY_FILE none A file holding that key, read when PAPRIKA_EDITOR_KEY isn’t set (the Compose file’s way)

The authoring MCP server reads two, to publish what it makes:

Variable Default Meaning
PAPRIKA_URL none The API’s address
PAPRIKA_KEY none An API key with the render and publish scopes

Read by compose.yaml itself, in .env:

Variable Default Meaning
PAPRIKA_IMAGE paprika:local The Paprika image every service runs
POSTGRES_USER none The database’s user, made when the db volume is first created
POSTGRES_PASSWORD none Its password
POSTGRES_DB none The database’s name
PAPRIKA_API_PORT 4179 The port on this machine the API is published on
PAPRIKA_EDITOR_PORT 4178 The port on this machine the editor is published on
PAPRIKA_EDITOR_HOSTS none More host names the editor answers to, comma-separated
PAPRIKA_API_HOSTS none More host names the API answers to, comma-separated
Variable Default Meaning
PAPRIKA_PGLITE_DIR apps/server/data/db Without PAPRIKA_DATABASE_URL, the server keeps its database in this folder with an embedded PostgreSQL (memory://: in memory). Not for production