Skip to Content
Self-HostedConfiguration

Configuration

The two places settings live, and what each one controls.

Settings live in two places.

.env: how the stack runs

Everything about the deployment: the domain, image versions, secrets, blob storage and which optional services start. .env.example describes each setting.

After changing .env:

./install.sh
docker compose up -d --wait

Secrets

SettingUsed forIf you change it later
POSTGRES_PASSWORDThe databaseIt must also be changed inside PostgreSQL.
PLATFORMX_JWT_SIGNING_KEYSigning sign-in tokens. The Portal API does not start without it.Every user is signed out.
PLATFORMX_INTERNAL_API_KEYThe Public API’s internal endpoints, such as cache refresh.Set the same value everywhere it is used.
UPLOAD_ACCESS_TOKENShared by the portal and the Upload serviceIt is also stored in the tenant’s upload settings.

Blob storage

Uploaded files go to blob storage. Local-disk storage is not implemented.

The default is the bundled Azurite emulator. It uses a published development key and is reachable only from inside the compose network. For Azure Blob Storage, set AZURE_BLOB_CONNECTION, BLOB_ENDPOINT and BLOB_ACCOUNT before the first install: the endpoint is written into the tenant’s upload settings when the tenant is created.

The database: how a tenant behaves

Post types, taxonomies, image crops, social channels, roles and menus are tenant settings. They are edited in the portal and stored in the database.

The services cache these settings. After changing one directly in the database, restart them:

make restart