Documentation
Self-hosting / Configuration

Configuration

Environment variables of the Uptime Kotlin image, and how to use your own JWT keys.

Uptime Kotlin is configured with environment variables, set in the environment block of your compose.yaml.

Environment variables

Variable Default Description
ENCRYPTION_MASTER_KEY required At least 32 bytes. Encrypts the stored secrets and the JWT signing key. To change it, see Rotate the master key.
QUARKUS_DATASOURCE_USERNAME PostgreSQL user.
QUARKUS_DATASOURCE_PASSWORD PostgreSQL password.
QUARKUS_DATASOURCE_JDBC_URL PostgreSQL JDBC URL, for example jdbc:postgresql://postgres:5432/uptime-kotlin.
MP_JWT_VERIFY_ISSUER Issuer of the JWT tokens.
SCHEDULER_STRATEGY database none when workers run the checks (see Cluster mode).
SCHEDULER_WORKER_CONCURRENCY 4 Checks run in parallel.
MAINTENANCE_HORIZON_DAYS 90 Maintenance windows. Same value on the application and the workers.
MAINTENANCE_MAX_DURATION_HOURS 24 Maintenance windows. Same value on the application and the workers.
NOTIFICATIONS_DISPLAY_TIMEZONE UTC Zone of the dates in Slack, Teams, Telegram, ntfy, Gotify and e-mail notifications (IANA name, for example Europe/Paris). Same value on the application and the workers. Webhook payloads stay in UTC (ISO-8601).

Use your own JWT keys

The JWT signing key is stored in the database, encrypted with ENCRYPTION_MASTER_KEY. To use your own keys instead, set both variables and mount the files:

Variable Description
MP_JWT_VERIFY_PUBLICKEY_LOCATION Path to the public key.
SMALLRYE_JWT_SIGN_KEY_LOCATION Path to the private key, in PKCS#8 format.