Skip to main content
Postiz is configured entirely through environment variables. Any change requires an application restart. The canonical list lives in the example postiz.env file. This page documents every variable Postiz reads, grouped by purpose.
Variables marked Required are validated on boot — Postiz will fail to start if they’re missing or malformed.

Required core

These six variables are non-optional for any deployment.

DATABASE_URL Required

PostgreSQL connection string used by Prisma.

REDIS_URL Required

Redis connection string used for queues, rate limiting, and short-lived caches.

JWT_SECRET Required

A long random string used to sign session JWTs. Rotating this invalidates every existing session.

FRONTEND_URL Required

The URL the browser uses to reach the Postiz frontend. Used as the OAuth redirect base and for email links.

NEXT_PUBLIC_BACKEND_URL Required

The URL the browser uses to reach the Postiz backend.

BACKEND_INTERNAL_URL Required

The URL the frontend SSR server uses to reach the backend from inside your network. If everything runs in the same container/host, this is usually http://localhost:3000.

Application behaviour

DISABLE_REGISTRATION

Set to true to allow only a single user signup and then disable the sign-up page. Useful for self-host where you want full control.
This also disables OIDC / OAuth sign-in.

API_LIMIT

Per-hour limit on the public-API create-post endpoint. Defaults to 90. Postiz Cloud uses 100. Channel and post quotas are tiered separately by plan.

RUN_CRON

When set, the backend process runs the scheduled-task workers. Leave unset on API-only instances when workers are deployed separately.

RESTRICT_UPLOAD_DOMAINS

Comma-separated allowlist of domains for /public/v1/upload-from-url. If set, only URLs whose hostname matches an entry are accepted.

DISALLOW_PLUS

When set, blocks the upgrade UI elements pointing to paid plans. Used for self-host deployments that don’t want to surface cloud-only billing.

IS_GENERAL

Switches the frontend between routes available to the open-source build (/launches) and the hosted build (/analytics). Set to "true" on self-host. Leave unset on Postiz Cloud.

DISABLE_IMAGE_COMPRESSION

When truthy, the frontend skips client-side image compression on upload. Set this if you need pixel-exact originals at the cost of larger uploads.

NOT_SECURED

Dev only. Never set in production — it disables security checks that exist for a reason.

MAIN_URL

Primary application URL used for absolute links in some emails and SEO metadata. Falls back to FRONTEND_URL when not set.

EXTENSION_ID

The Chrome Extension ID for cookie-based platform integrations (e.g. Skool). See the Chrome Extension guide.

MOBILE_APP_SCHEME

URL scheme used for deep-linking from emails into the mobile app.

Storage

See also: Cloudflare R2 and Uploads & Storage.

Email

See also: Email configuration.

OAuth sign-in (OIDC)

See also: OAuth configuration.

Temporal (workflow orchestration)

Since v2.12.0, Postiz uses Temporal for scheduled posts and background workflows. Self-host deployments need to run a Temporal stack (the official docker-compose ships with one). See the Temporal migration guide.

Public API & MCP


AI / generation


If a Postiz user configures short-link replacement, Postiz proxies link shortening through one of the configured providers. Pick one set.

Dub.co

Short.io

Kutt.it

LinkDrip


Payments


Analytics & tracking (frontend)

All of these are optional. Frontend reads NEXT_PUBLIC_* at build time.

Misc frontend


Social provider keys

Each social provider has its own env-var block. See the per-provider setup pages under Providers for the exact OAuth steps; this table is just a lookup so you can find which page documents which variable.

Runtime & build

These are read from the environment but are typically managed by your runtime, hosting platform, or framework rather than set by hand.