Environment variables
The authoritative source is modules/commons/commons-config/src/main/java/org/eclipse/dirigible/commons/config/DirigibleConfig.java (the enum) plus Configuration.java (the allow-list). The list below covers the variables you typically set during install.
The full reference (every variable, every default) is at /help/reference/environment-variables.
Server
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_SERVER_PORT | 8080 | HTTP listen port. |
DIRIGIBLE_HOME_URL | services/web/shell-ide/ | Where / redirects to. |
DIRIGIBLE_BASIC_USERNAME | admin | Default basic-auth user. |
DIRIGIBLE_BASIC_PASSWORD | admin | Default basic-auth password. |
DIRIGIBLE_SECURITY_LOGIN_PAGE | - | Application-owned login page for the OAuth2 profiles. Unauthenticated browsers are redirected there instead of the identity provider. See First-Party Sign-In. |
CORS
Cross-origin access for frontends hosted outside the platform - a single-page application on static hosting, a mobile application, a desktop shell. Unset, the OAuth2 profiles answer no cross-origin request and the basic profile keeps allowing every origin without credentials. See External frontends.
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_CORS_ALLOWED_ORIGINS | - | Comma-separated origins or origin patterns that may call the platform cross-origin, e.g. https://app.example.com,https://*.example.com,capacitor://localhost,tauri://localhost. Setting it enables CORS on every profile. A port pattern is accepted (:[8080], :[*]). A multi-port list :[8080,8081] cannot be written, since the value is split on commas - list each port as its own pattern. A pattern must name a host to reach the STOMP handshake - a pattern whose host is only wildcards (*, https://*, https://**) serves bearer clients over HTTP only. |
DIRIGIBLE_CORS_ALLOW_CREDENTIALS | false | Whether cross-origin requests may carry cookies. Refused together with a wildcard origin. Bearer-token clients do not need it. Does not govern the STOMP endpoint, which answers its own CORS with credentials - the origin list is what protects it. |
DIRIGIBLE_CORS_ALLOWED_METHODS | GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS | HTTP methods granted to the listed origins. |
DIRIGIBLE_CORS_ALLOWED_HEADERS | Authorization,Content-Type,Accept,X-Requested-With,X-Tenant-Id | Request headers granted to the listed origins. X-Tenant-Id names the tenant of a bearer request under TOKEN_GROUPS. |
DIRIGIBLE_CORS_EXPOSED_HEADERS | Content-Disposition | Response headers a cross-origin script may read. |
DIRIGIBLE_CORS_MAX_AGE | 3600 | Seconds a browser may cache a preflight answer. |
Bearer tokens (cognito, keycloak)
How the OAuth2 login profiles treat a token presented in the Authorization: Bearer header. ID tokens identify a user and are verified like a login. Access tokens keep the rules machine clients relied on before. See External frontends.
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_OAUTH2_JWT_TOKEN_KINDS | id,access | Kinds of tokens accepted: id (user identity, group roles) and access (client identity from sub, scope roles). |
DIRIGIBLE_OAUTH2_JWT_PRINCIPAL_CLAIM | Profile's user-name attribute (email on Cognito, preferred_username on Keycloak) | Claim of an ID token the user name is read from. A token without it is refused. |
DIRIGIBLE_OAUTH2_JWT_AUDIENCES | The profile's client id | Audiences a token must be issued for. ID tokens are always checked. Access tokens only once this is set. |
DIRIGIBLE_OAUTH2_JWT_ISSUER_URI | The profile's issuer | Issuer every token must carry. |
DIRIGIBLE_OAUTH2_JWT_JWK_SET_URI | The profile's JWKS endpoint | Where the signing keys are fetched from. |
DIRIGIBLE_OAUTH2_JWT_REQUIRE_VERIFIED_EMAIL | true | An ID token identified by email must also carry email_verified=true. |
Repository
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_REPOSITORY_LOCAL_ROOT_FOLDER | ./target/ | On-disk registry root. |
DIRIGIBLE_REGISTRY_EXTERNAL_FOLDER | Mount an external folder into the registry. | |
DIRIGIBLE_REGISTRY_EXTERNAL_FOLDER_AS_SUBFOLDER | Mount under a sub-path. | |
DIRIGIBLE_REGISTRY_EXTERNAL_FOLDER_IGNORED_FOLDERS | Comma-separated ignore list. |
Data sources
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_DATASOURCE_DEFAULT_DRIVER | H2 file driver | JDBC driver class. |
DIRIGIBLE_DATASOURCE_DEFAULT_URL | local H2 | JDBC URL. |
DIRIGIBLE_DATASOURCE_DEFAULT_USERNAME | JDBC user. | |
DIRIGIBLE_DATASOURCE_DEFAULT_PASSWORD | JDBC password. | |
DIRIGIBLE_DATABASE_DATASOURCE_NAME_DEFAULT | DefaultDB | Logical name. |
DIRIGIBLE_DATABASE_DATASOURCE_NAME_SYSTEM | SystemDB | Logical name of the system DB. |
DIRIGIBLE_LEAKED_CONNECTIONS_CHECK_INTERVAL_SECONDS | JDBC leak detection cadence. | |
DIRIGIBLE_LEAKED_CONNECTIONS_CHECK_MAX_IN_USE_SECONDS | Threshold before logging a leak. |
Multi-tenancy
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_MULTI_TENANT_MODE | true | Multi-tenant switch. |
DIRIGIBLE_TENANT_RESOLUTION_STRATEGY | SUBDOMAIN | How a request's tenant is determined: SUBDOMAIN (a host per tenant) or TOKEN_GROUPS (one host, the tenant the signed-in user selected - or, for a bearer request, named in the X-Tenant-Id header). |
DIRIGIBLE_TENANT_SUBDOMAIN_REGEX | Host pattern the tenant subdomain is captured from, under the SUBDOMAIN strategy. | |
DIRIGIBLE_APP_ID | This deployment's application id in the group names <tenantId>.<appId>.<role>. Required under TOKEN_GROUPS, and it must not contain a dot. | |
DIRIGIBLE_TENANT_GROUPS_CLAIM | cognito:groups | The token claim the user's groups are read from. Set it explicitly on Keycloak. |
DIRIGIBLE_TENANTS_PROVISIONING_FREQUENCY_SECONDS | 900 | Provisioning poll cadence, in seconds. |
DIRIGIBLE_TENANT_PROVISIONING_API_ENABLED | false | Exposes the tenant provisioning API, through which an external service provisions tenants into this deployment. Off means absent, not closed. |
DIRIGIBLE_TENANT_PROVISIONING_DEPROVISION_ACTIVATION_STALE_MINUTES | 30 | How long an open initialization holds a tenant removal off before it is taken as stuck, in minutes. |
DIRIGIBLE_TENANT_USERS_ENABLED | false | Shows the Settings -> Users section, through which a tenant's owners invite, change and remove its users. Requires TOKEN_GROUPS. |
DIRIGIBLE_TENANT_USERS_CHANGE_QUEUE | The global: queue the section publishes its change requests to. Replaced DIRIGIBLE_TENANT_USERS_REQUEST_QUEUE. |
See Tenant resolution, Tenant provisioning API and Tenant users.
Debuggers
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_JAVASCRIPT_GRAALVM_DEBUGGER_PORT | 8081 | Graalium JS debugger port. |
DIRIGIBLE_GRAALIUM_ENABLE_DEBUG | false | Toggle JS debug. |
DIRIGIBLE_JAVA_DEBUG_JDWP_PORT | 8000 | JDWP port for the Java debugger view. |
DIRIGIBLE_JAVA_LSP_ENABLED | Toggle JDT.LS. | |
DIRIGIBLE_JAVA_LSP_INSTALL_DIR | JDT.LS install directory. | |
DIRIGIBLE_TSC_WATCH_SERVICE_ENABLED | true | Allows the tsc --watch process that transpiles TypeScript sources. It runs only while the registry holds TypeScript sources; false keeps it off even then. See TypeScript. |
Synchronizers
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_SYNCHRONIZER_FREQUENCY | Reconciliation cadence. | |
DIRIGIBLE_SYNCHRONIZER_CROSS_RETRY_COUNT | Retry budget for cross-synchronizer dependencies. | |
DIRIGIBLE_SYNCHRONIZER_CROSS_RETRY_INTERVAL_MILLIS | Retry interval. |
Messaging
| Variable | Default | Purpose |
|---|---|---|
DIRIGIBLE_MESSAGING_BROKER_URL | External ActiveMQ broker to use instead of the embedded one, e.g. tcp://activemq:61616. Unset keeps the embedded broker. | |
DIRIGIBLE_MESSAGING_BROKER_USERNAME | Broker username. Unset connects anonymously. | |
DIRIGIBLE_MESSAGING_BROKER_PASSWORD | Broker password. | |
DIRIGIBLE_MESSAGING_USE_DEFAULT_DATABASE | true | Persist the embedded broker's messages in the system database. Ignored with an external broker. |
DIRIGIBLE_MESSAGING_LISTENER_CONNECTIONS | shared | How listeners attach to the broker: shared opens one connection per tenant for the Java listeners (plus one for global: destinations and one for all .listener artefacts), each subscription a session on it; per-listener opens a connection per subscription per tenant. See Message listeners. |
Point several nodes or deployments at one broker to share destinations between them. The broker has to be reachable when the server starts, and the Messaging perspective works only against the embedded broker. See Message listeners.
Mail / Flowable / SharePoint / S3
| Variable | Purpose |
|---|---|
DIRIGIBLE_MAIL_* | SMTP defaults for the Mail SDK. |
DIRIGIBLE_FLOWABLE_* | Flowable engine config (datasource, mail). |
DIRIGIBLE_MS_SHAREPOINT_* | SharePoint CMS credentials. |
DIRIGIBLE_CMS_INTERNAL_ROOT_FOLDER | Internal CMIS root path. |
DIRIGIBLE_S3_PROVIDER | aws or localstack. |
OAuth (GitHub profile)
| Variable | Purpose |
|---|---|
DIRIGIBLE_GITHUB_CLIENT_ID | GitHub OAuth client id. |
DIRIGIBLE_GITHUB_CLIENT_SECRET | GitHub OAuth client secret. |
DIRIGIBLE_GITHUB_SCOPE | Requested scopes. |
Activated only when the github Spring profile is active. See /help/setup/authentication/github-oauth.
Misc
| Variable | Purpose |
|---|---|
DIRIGIBLE_EXEC_COMMAND_LOGGING_ENABLED | Audit shell-exec calls. |
DIRIGIBLE_TRIAL_ENABLED | Trial-mode flag. |
See also
- Full env-var reference
DirigibleConfig.javain the platform repo - source of truth.