Skip to main content

Environment variables

Compose: copy .env.example → .env.
Advanced host inject: DEPLOY.md.
Helm: charts/zoreon/values.yaml (env + secret / existingSecret).

Required (production)​

VariablePurpose
DATABASE_URLPostgres connection string
BETTER_AUTH_SECRETSession signing + AES-GCM for MM user tokens
BETTER_AUTH_URLPublic origin (e.g. https://zoreon.example.com)
HOST / PORTBind address (container: 0.0.0.0 / 8080)

Bootstrap (Compose / greenfield)​

VariablePurpose
ZOREON_BOOTSTRAP_ADMIN_EMAILSeeded into agora_workspace_admins; register this email via /join
POSTGRES_PASSWORDCompose Postgres password
ZOREON_PUBLISH_PORTHost port → app :8080 (default 8080)

When the bootstrap email is set, migrate also ensures at least one active invite token exists.

Mattermost tape (optional)​

VariablePurpose
MATTERMOST_URLBase URL of Mattermost TE
MATTERMOST_TOKENAdmin personal access token

Without both, Zoreon uses local SQL messaging. There is no baked-in Mattermost host.

SMTP (invite email)​

VariableAliasesPurpose
SMTP_HOSTe.g. smtp.example.com
SMTP_PORT587 (STARTTLS) or 465
SMTP_FROMFrom address
SMTP_USERSMTP_USERNAMEAuth user
SMTP_PASSSMTP_PASSWORDApp password
SMTP_USE_TLStrue for STARTTLS on 587

Compose .env or ZOREON_SMTP_ENV for deploy-remote.sh. Only SMTP_* keys are imported from an env file.

Web Push (optional)​

VariablePurpose
VAPID_PUBLIC_KEYWeb Push public key
VAPID_PRIVATE_KEYWeb Push private key
VAPID_SUBJECTOptional. mailto: or https: contact for push services (defaults to BETTER_AUTH_URL if https, else a placeholder)

Service worker registers regardless; push subscriptions no-op without VAPID.

Auth UI flags​

VariablePurpose
VITE_AUTH_ENABLEDSet to false only to disable sign-in (dev/template). Production leaves unset → auth on.

Deploy-time (host script)​

VariablePurpose
ZOREON_SMTP_ENVPath to SMTP env file for deploy-remote.sh
MATTERMOST_URL / MATTERMOST_TOKENPassed into the container (token also from tls/mm.token)
BUILDERpodman (default) or docker
--portPublic HTTPS port (default 30591)

CI​

Smoke and Playwright jobs set DATABASE_URL, BETTER_AUTH_SECRET, and BETTER_AUTH_URL against a Postgres service. Unit build intentionally has no DATABASE_URL so migrate skips. See TESTING.md.