Runtime configuration
The Kumbuka server accepts command-line flags and matching KUMBUKA__ environment variables. A database URL is required when starting the server. Static-site builds, mirrors, and plugin-project commands use the separate kumbuka-cli binary.
| Flag | Environment | Purpose |
|---|---|---|
--listen-address |
KUMBUKA__LISTEN_ADDRESS |
HTTP listen address; defaults to 127.0.0.1:8080. |
--database-url |
KUMBUKA__DATABASE_URL |
PostgreSQL connection URL. |
--database-max-conns |
KUMBUKA__DATABASE_MAX_CONNS |
Maximum PostgreSQL pool connections; 0 keeps the pgxpool/connection-URL value. |
--database-min-idle-conns |
KUMBUKA__DATABASE_MIN_IDLE_CONNS |
Minimum idle PostgreSQL pool connections; 0 keeps the pgxpool/connection-URL value. |
--public-url |
KUMBUKA__PUBLIC_URL |
Externally visible base URL; defaults to http://localhost:8080. |
--pdf-url |
KUMBUKA__PDF_URL |
Optional deployment override for the HTML-to-PDF endpoint. |
--plugin-update-check-interval |
KUMBUKA__PLUGIN_UPDATE_CHECK_INTERVAL |
First-party plugin update-check interval; defaults to 1h, or 0 to disable scheduled checks. |
--allow-user-registration |
KUMBUKA__ALLOW_USER_REGISTRATION |
Override whether unknown OIDC or trusted-proxy identities may create accounts. |
--read-only |
KUMBUKA__READ_ONLY |
Block state-changing application requests while preserving reads and authentication. |
--local-login |
KUMBUKA__LOCAL_LOGIN |
Expose local recovery login alongside another authentication mode. |
--theme-directory |
KUMBUKA__THEME_DIRECTORY |
Optional directory containing additional TOML themes. |
--auth-mode |
KUMBUKA__AUTH_MODE |
Deployment override for browser authentication mode. |
--trusted-username-headers |
KUMBUKA__TRUSTED_USERNAME_HEADERS |
Trusted-proxy username header list used with the authentication override. |
--trusted-email-headers |
KUMBUKA__TRUSTED_EMAIL_HEADERS |
Trusted-proxy email header list used with the authentication override. |
--trusted-display-name-headers |
KUMBUKA__TRUSTED_DISPLAY_NAME_HEADERS |
Trusted-proxy display-name header list used with the authentication override. |
--trusted-group-headers |
KUMBUKA__TRUSTED_GROUP_HEADERS |
Trusted-proxy group header list used with the authentication override. |
--trusted-admin-group |
KUMBUKA__TRUSTED_ADMIN_GROUP |
Trusted-proxy group value that grants administrator access. |
--oidc-issuer |
KUMBUKA__OIDC_ISSUER |
OIDC issuer used with a deployment-managed OIDC configuration. |
--oidc-client-id |
KUMBUKA__OIDC_CLIENT_ID |
OIDC client ID used with a deployment-managed OIDC configuration. |
--oidc-group-claim |
KUMBUKA__OIDC_GROUP_CLAIM |
OIDC group-membership claim used with the authentication override; defaults to groups. |
--oidc-admin-group |
KUMBUKA__OIDC_ADMIN_GROUP |
OIDC group value that grants administrator access. |
--oidc-client-secret |
KUMBUKA__OIDC_CLIENT_SECRET |
OIDC client secret. |
--oidc-session-secret |
KUMBUKA__OIDC_SESSION_SECRET |
Secret used for OIDC browser sessions; must be at least 32 characters when set. |
--encryption-key |
KUMBUKA__ENCRYPTION_KEY |
Base64-encoded 32-byte key used to encrypt sensitive application settings. |
--log-format |
KUMBUKA__LOG_FORMAT |
json or text. |
--debug |
KUMBUKA__DEBUG |
Enable verbose diagnostics. |
--debug-render-timings |
KUMBUKA__DEBUG_RENDER_TIMINGS |
Log detailed page-render timing information for temporary performance diagnosis. |
--access-log |
KUMBUKA__ACCESS_LOG |
Enable HTTP access logging. |
Database pool settings default to 0, which leaves the corresponding pgxpool setting unchanged. A positive deployment value overrides pool_max_conns or pool_min_idle_conns from the database URL. The minimum idle connection count must not exceed the effective maximum connection count.
Deployment overrides
KUMBUKA__AUTH_MODE is intended for deployment-managed or recovery configuration. When it is set, the effective authentication mode is read-only under Administration → Configuration.
With an OIDC override, the runtime issuer, client ID, group claim, and administrator group are also read-only. OIDC group synchronization and mapping settings remain configurable in the application. With a trusted-proxy override, the runtime username, email, display-name, and group header lists and administrator group are read-only.
KUMBUKA__ALLOW_USER_REGISTRATION overrides the stored registration setting without changing it. This is a strict Boolean deployment value, so set it explicitly to true or false.
KUMBUKA__READ_ONLY=true blocks requests that change application state while leaving reads and authentication available. Use it for maintenance or replicas that must not accept writes; it does not make PostgreSQL itself read-only.
KUMBUKA__PDF_URL similarly overrides the configured PDF endpoint while leaving the application’s request-header configuration in use.
Plugin update checks use the configured interval but never install updates automatically. Administrators can always use Check for updates under Administration → Plugins unless access to the catalog itself is unavailable. See Plugins.
KUMBUKA__DEBUG_RENDER_TIMINGS=true is intended for short-term troubleshooting. Disable it after profiling to avoid unnecessary diagnostic output. For opt-in browser navigation, frontend initialization, resource, long-task, and per-request backend timings, see Performance diagnostics.
Proxy and certificate environment
Plugin catalog downloads and plugin HTTP integrations use the standard process environment variables HTTP_PROXY, HTTPS_PROXY, and NO_PROXY, including lowercase forms. SSL_CERT_FILE and SSL_CERT_DIR can extend certificate trust for outbound HTTPS connections.
Generate deployment secrets
Generate the encryption key and OIDC session secret separately:
export KUMBUKA__ENCRYPTION_KEY="$(openssl rand -base64 32)"
export KUMBUKA__OIDC_SESSION_SECRET="$(openssl rand -base64 32)"
Save both values in your deployment’s secret store and reuse them across restarts and replicas. Do not generate new values automatically at startup.
| Secret | Required format |
|---|---|
KUMBUKA__ENCRYPTION_KEY |
Base64 encoding of exactly 32 bytes |
KUMBUKA__OIDC_SESSION_SECRET |
At least 32 characters |
The openssl rand -base64 32 command produces a 44-character Base64 string. For the encryption key, use the complete value so it decodes to exactly 32 bytes.
For Kubernetes, place each generated value in stringData:
# Secret containing the application encryption key
stringData:
KUMBUKA__ENCRYPTION_KEY: "<generated value>"
# Secret containing the OIDC session secret
stringData:
KUMBUKA__OIDC_SESSION_SECRET: "<different generated value>"
Changing or losing KUMBUKA__ENCRYPTION_KEY makes existing encrypted settings unreadable. Changing KUMBUKA__OIDC_SESSION_SECRET signs out OIDC users and invalidates pending logins.
KUMBUKA__OIDC_CLIENT_SECRET comes from the Kumbuka client configuration in your identity provider.