Skip to main content
Version: v0.1.4-beta.2

Configuration

Easy BPM is configured with environment variables. Backend and worker variables use the EASY_BPM_<APP>_<SETTING> format. Authentication/OIDC variables use the existing EASYBPM_* prefix. Third-party containers keep their native names, such as POSTGRES_DB and RABBITMQ_DEFAULT_USER.

This page covers the variables used by the Easy BPM application configuration, Docker Compose files, beta Docker deployment, and Helm chart.

Docker Compose variables​

The local docker-compose.yml includes development defaults directly in the file. The beta compose file reads the values from an environment file.

VariableDefault or exampleUsed byDescription
IMAGE_REGISTRYghcr.io/YOUR_GITHUB_ORG_OR_USERBeta DockerContainer registry that stores Easy BPM images.
IMAGE_TAGv0.1.0-beta.1Beta DockerImage tag used for backend, worker, admin, modeler, and task portal.
POSTGRES_DBeasybpmPostgreSQLDatabase name created by the PostgreSQL container.
POSTGRES_USEReasybpmPostgreSQL, beta backend/workerDatabase user.
POSTGRES_PASSWORDchange-me-postgresPostgreSQL, beta backend/workerDatabase password.
RABBITMQ_DEFAULT_USEReasybpmRabbitMQ, beta backend/workerRabbitMQ user created by the RabbitMQ container.
RABBITMQ_DEFAULT_PASSchange-me-rabbitmqRabbitMQ, beta backend/workerRabbitMQ password.

The development compose file also exposes these fixed local defaults:

ServiceLocal value
PostgreSQL usermeu_usuario
PostgreSQL passwordminha_senha
PostgreSQL databaseeasybpm
RabbitMQ usereasybpm
RabbitMQ passwordeasybpm

Backend server​

VariableDefaultDescription
EASY_BPM_SERVER_PORT8080Backend HTTP port.
EASY_BPM_SERVER_DATASOURCE_URLjdbc:postgresql://localhost:5432/easybpmPostgreSQL JDBC URL used by the backend.
EASY_BPM_SERVER_DATASOURCE_USERNAMEmeu_usuarioPostgreSQL username used by the backend.
EASY_BPM_SERVER_DATASOURCE_PASSWORDminha_senhaPostgreSQL password used by the backend.
EASY_BPM_SERVER_RABBITMQ_HOSTlocalhostRabbitMQ host used by the backend.
EASY_BPM_SERVER_RABBITMQ_PORT5672RabbitMQ AMQP port used by the backend.
EASY_BPM_SERVER_RABBITMQ_USERNAMEeasybpmRabbitMQ username used by the backend.
EASY_BPM_SERVER_RABBITMQ_PASSWORDeasybpmRabbitMQ password used by the backend.

Worker​

VariableDefaultDescription
EASY_BPM_WORKER_PORT0Worker HTTP port. 0 lets the runtime choose an available port because the worker usually runs as a background processor.
EASY_BPM_WORKER_DATASOURCE_URLjdbc:postgresql://localhost:5432/easybpmPostgreSQL JDBC URL used by the worker.
EASY_BPM_WORKER_DATASOURCE_USERNAMEmeu_usuarioPostgreSQL username used by the worker.
EASY_BPM_WORKER_DATASOURCE_PASSWORDminha_senhaPostgreSQL password used by the worker.
EASY_BPM_WORKER_RABBITMQ_HOSTlocalhostRabbitMQ host used by the worker.
EASY_BPM_WORKER_RABBITMQ_PORT5672RabbitMQ AMQP port used by the worker.
EASY_BPM_WORKER_RABBITMQ_USERNAMEeasybpmRabbitMQ username used by the worker.
EASY_BPM_WORKER_RABBITMQ_PASSWORDeasybpmRabbitMQ password used by the worker.
EASY_BPM_WORKER_LOGGING_LEVEL_APPINFOLog level for Easy BPM worker application packages.

Security​

VariableDefaultDescription
EASY_BPM_SERVER_SECURITY_ENABLEDtrueEnables JWT/RBAC enforcement. Disable only for isolated local experiments.
EASY_BPM_SERVER_SECURITY_JWT_SECRETDevelopment-only defaultBase64 JWT signing secret. Replace it in every shared or public environment.
EASY_BPM_SERVER_SECURITY_JWT_EXPIRATION_MS3600000JWT lifetime in milliseconds. The local compose file sets 86400000.
EASY_BPM_SERVER_SECURITY_BOOTSTRAP_ADMIN_USERNAMEadminUsername for the first administrator account.
EASY_BPM_SERVER_SECURITY_BOOTSTRAP_ADMIN_PASSWORDadminPassword for the first administrator account.
EASY_BPM_SERVER_SECURITY_BOOTSTRAP_ADMIN_GROUP_CODEADMINCode for the bootstrap administrator group.
EASY_BPM_SERVER_SECURITY_BOOTSTRAP_ADMIN_GROUP_NAMEAdministratorsDisplay name for the bootstrap administrator group.

The default administrator credentials are for local startup only. Override them before exposing Easy BPM to other users.

Authentication and OIDC​

VariableDefaultDescription
EASYBPM_AUTHENTICATION_PROVIDERlocalAuthentication mode. Use local for Easy BPM username/password auth or keycloak for Keycloak/OIDC.
EASYBPM_AUTHENTICATION_USER_PROVISIONING_ENABLEDtrueCreates an Easy BPM user record for a valid OIDC user when one does not already exist.
EASYBPM_AUTHENTICATION_USER_PROVISIONING_DEFAULT_PERMISSION_CODESACCESS_PROCESS_PORTALComma-separated permissions assigned to provisioned OIDC users by default.
EASYBPM_OIDC_ISSUER_URIEmptyPublic OIDC issuer URI. Required when OIDC authentication is enabled.
EASYBPM_OIDC_JWK_SET_URIEmptyOptional internal JWK endpoint. Useful when the backend reaches Keycloak over a Docker or Kubernetes network.
EASYBPM_OIDC_CLIENT_IDeasybpmOIDC client ID used by Easy BPM apps.
EASYBPM_OIDC_AUDIENCEEmptyExpected token audience. The Keycloak compose override defaults this to easybpm.
EASYBPM_OIDC_GROUP_CLAIMgroupsClaim used to read external group names.
EASYBPM_OIDC_USERNAME_CLAIMpreferred_usernameClaim used as the Easy BPM username.

The backend maps these OIDC roles to Easy BPM permissions:

OIDC roleEasy BPM permission
easybpm-adminACCESS_BPM_ADMIN
easybpm-modelerACCESS_BPM_MODELER
easybpm-userACCESS_PROCESS_PORTAL
easybpm-admin-users-readVIEW_USERS
easybpm-admin-users-manageMANAGE_USERS
easybpm-admin-groups-readVIEW_GROUPS
easybpm-admin-groups-manageMANAGE_GROUPS
easybpm-admin-permissions-manageMANAGE_PERMISSIONS
easybpm-admin-secrets-readVIEW_SECRETS
easybpm-admin-secrets-manageMANAGE_SECRETS

Local Keycloak compose​

Use these variables with docker-compose.keycloak.yml:

VariableDefaultDescription
EASYBPM_KEYCLOAK_ADMINRequiredKeycloak administrator username for the local Keycloak container.
EASYBPM_KEYCLOAK_ADMIN_PASSWORDRequiredKeycloak administrator password for the local Keycloak container.
EASYBPM_KEYCLOAK_PUBLIC_URLhttp://localhost:8081Public Keycloak URL used by browser redirects.
EASYBPM_OIDC_ISSUER_URIhttp://localhost:8081/realms/easybpmOIDC issuer used by Easy BPM when Keycloak compose is enabled.
EASYBPM_OIDC_JWK_SET_URIhttp://keycloak:8080/realms/easybpm/protocol/openid-connect/certsInternal JWK URL used by the backend container.
EASYBPM_OIDC_CLIENT_IDeasybpmOIDC client ID.
EASYBPM_OIDC_AUDIENCEeasybpmExpected token audience.

The Keycloak container itself receives KEYCLOAK_ADMIN, KEYCLOAK_ADMIN_PASSWORD, KC_HOSTNAME, KC_HOSTNAME_STRICT=false, and KC_HTTP_ENABLED=true from the compose override.

Web applications​

VariableDefaultDescription
EASY_BPM_ADMIN_API_BASE_URLhttp://localhost:8080Backend URL used by the Admin Console.
EASY_BPM_TASK_PORTAL_API_BASE_URLhttp://localhost:8080Backend URL used by the Task Portal.
EASY_BPM_MODELER_API_BASE_URLhttp://localhost:8080Backend URL used by the Modeler.
EASY_BPM_MODELER_AGENTIC_ORCHESTRATIONDisabled in Helm, enabled in the local modeler configEnables the Agent Process resource and Agent Process BPM node in the Modeler. Truthy values include true, 1, yes, on, and enabled.
EASY_BPM_MODELER_DEFAULT_AI_PROVIDEREmptyDefault provider selected in the Agent Process editor, such as ollama, openai, gemini, or azure-openai.
EASY_BPM_MODELER_DEFAULT_AI_MODELEmptyDefault model selected in the Agent Process editor.
EASY_BPM_MODELER_DEFAULT_AI_CREDENTIAL_REFEmptyDefault credential reference selected in the Agent Process editor. Use an environment reference like $OPENAI_API_KEY, a stored credential ID, or a workspace secret reference.
EASY_BPM_MODELER_RUNTIME_MODEEmptyRuntime mode consumed by the Modeler. The desktop preload sets this to desktop.
EASY_BPM_DESKTOP_DEVEmptyElectron desktop development flag. Set to true to load the dev URL.
EASY_BPM_DESKTOP_DEV_URLhttp://127.0.0.1:3000Modeler desktop dev URL used when EASY_BPM_DESKTOP_DEV=true.

The frontend Dockerfile also accepts these build arguments with the same names:

  • APP_DIR
  • EASY_BPM_ADMIN_API_BASE_URL
  • EASY_BPM_MODELER_API_BASE_URL
  • EASY_BPM_MODELER_AGENTIC_ORCHESTRATION
  • EASY_BPM_MODELER_DEFAULT_AI_PROVIDER
  • EASY_BPM_MODELER_DEFAULT_AI_MODEL
  • EASY_BPM_MODELER_DEFAULT_AI_CREDENTIAL_REF
  • EASY_BPM_TASK_PORTAL_API_BASE_URL

APP_DIR selects which frontend folder is built, such as easy-bpm-admin, easy-bpm-modeler, or easy-bpm-task-portal.

AI credentials and providers​

VariableDefaultDescription
EASY_BPM_SERVER_AI_ENCRYPTION_KEYDevelopment-only defaultEncryption key used by the backend credential vault. Replace it in every shared or public environment.
OPENAI_API_KEYEmptyOpenAI API key used when an AI task or Agent Process references $OPENAI_API_KEY.
GEMINI_API_KEYEmptyGoogle Gemini API key used when an AI task or Agent Process references $GEMINI_API_KEY.
AZURE_OPENAI_API_KEYEmptyAzure OpenAI API key used when an AI task or Agent Process references $AZURE_OPENAI_API_KEY.

Do not pass provider tokens to frontend containers. Provider credentials must be available to the backend through environment variables, stored credentials, or workspace secrets.

Test data​

VariableDefaultDescription
EASY_BPM_TEST_DATAFalls back to EASY_BPM_SERVER_TEST_DATA_ENABLED, then falseEnables seeded test data on backend startup.
EASY_BPM_SERVER_TEST_DATA_ENABLEDfalseBackend-specific test data flag.
EASY_BPM_TEST_DATA_QA_RESOURCE_PATHmodeler-qa/qa-processesClasspath resource path used for QA process seed data.

Keep test data disabled in customer environments unless you intentionally need seeded demo content.

Retention​

VariableDefaultDescription
EASY_BPM_SERVER_RETENTION_ENABLEDfalseEnables scheduled cleanup of completed process and task data.
EASY_BPM_SERVER_RETENTION_COMPLETED_PROCESS_RETENTION_DAYS90Number of days to keep completed process data.
EASY_BPM_SERVER_RETENTION_COMPLETED_TASK_RETENTION_DAYS90Number of days to keep completed task data.
EASY_BPM_SERVER_RETENTION_BATCH_SIZE500Maximum records processed per cleanup batch.
EASY_BPM_SERVER_RETENTION_CRON0 0 3 * * *Cleanup schedule in Spring cron format.

Retention day values must be between 1 and 3650.

Logging and actuator​

VariableDefaultDescription
EASY_BPM_SERVER_LOGGING_LEVEL_ROOTINFORoot backend log level.
EASY_BPM_SERVER_LOGGING_LEVEL_APPDEBUGBackend log level for Easy BPM application packages. The beta Docker and Helm defaults use INFO.
EASY_BPM_SERVER_LOGGING_LEVEL_HIBERNATEWARNBackend Hibernate log level.
EASY_BPM_WORKER_LOGGING_LEVEL_APPINFOWorker log level for Easy BPM packages.
EASY_BPM_SERVER_MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDEhealth,metrics,prometheusComma-separated actuator endpoints exposed over HTTP.
EASY_BPM_SERVER_MANAGEMENT_HEALTH_SHOW_DETAILSalwaysActuator health detail visibility. Helm uses when_authorized by default.

The backend exposes:

EndpointPurpose
/actuator/healthApplication and dependency health.
/actuator/metricsRuntime metrics index.
/actuator/prometheusPrometheus scrape endpoint.

Helm values​

The chart at deploy/helm/easybpm converts Helm values into Kubernetes deployments, config maps, and secrets.

ValueDefaultDescription
nameOverrideEmptyOptional Helm release name override for the chart name portion.
fullnameOverrideEmptyOptional full Kubernetes resource name override.
global.imageRegistryghcr.io/YOUR_GITHUB_ORG_OR_USERRegistry used for all Easy BPM images.
global.imageTagv0.1.2-beta.2Image tag used for all Easy BPM images.
global.imagePullPolicyIfNotPresentKubernetes image pull policy.
backend.replicaCount1Number of backend replicas.
backend.imageeasybpm-backendBackend image name under global.imageRegistry.
backend.service.port8080Backend service port.
backend.resources{}Backend Kubernetes resource requests and limits.
worker.replicaCount1Number of worker replicas.
worker.imageeasybpm-workerWorker image name under global.imageRegistry.
worker.resources{}Worker Kubernetes resource requests and limits.
web.admin.enabledtrueDeploys the Admin Console.
web.admin.imageeasybpm-adminAdmin image name under global.imageRegistry.
web.admin.hostadmin.easybpm.localAdmin ingress host when ingress is enabled.
web.modeler.enabledtrueDeploys the Modeler.
web.modeler.imageeasybpm-modelerModeler image name under global.imageRegistry.
web.modeler.hostmodeler.easybpm.localModeler ingress host when ingress is enabled.
web.modeler.apiBaseUrlEmptyRuntime backend URL written into easybpm-config.js for the Modeler.
web.modeler.agenticOrchestration.enabledfalseEnables Agent Process features in the Modeler runtime config.
web.taskPortal.enabledtrueDeploys the Task Portal.
web.taskPortal.imageeasybpm-task-portalTask Portal image name under global.imageRegistry.
web.taskPortal.hostportal.easybpm.localTask Portal ingress host when ingress is enabled.
web.service.port8080Web app service port.
web.resources{}Web app Kubernetes resource requests and limits.
ingress.enabledfalseCreates ingress resources when enabled.
ingress.classNamenginxIngress class name.
ingress.tls[]TLS entries for ingress.
ingress.apiHostapi.easybpm.localBackend API ingress host.
config.loggingLevelComEasyBpmINFOSets EASY_BPM_SERVER_LOGGING_LEVEL_APP.
config.managementHealthShowDetailswhen_authorizedSets EASY_BPM_SERVER_MANAGEMENT_HEALTH_SHOW_DETAILS.
config.testDataEnabledfalseSets EASY_BPM_TEST_DATA and EASY_BPM_SERVER_TEST_DATA_ENABLED.
config.retention.enabledfalseSets EASY_BPM_SERVER_RETENTION_ENABLED.
config.retention.completedProcessRetentionDays90Sets completed process retention days.
config.retention.completedTaskRetentionDays90Sets completed task retention days.
config.retention.batchSize500Sets retention batch size.
config.retention.cron0 0 3 * * *Sets retention cron.
secrets.createtrueCreates a Kubernetes Secret from chart values when existingSecretName is empty.
secrets.postgres.urljdbc:postgresql://postgres.example:5432/easybpmBackend and worker PostgreSQL JDBC URL.
secrets.postgres.usernameeasybpmBackend and worker PostgreSQL username.
secrets.postgres.passwordchange-meBackend and worker PostgreSQL password.
secrets.rabbitmq.hostrabbitmq.exampleBackend and worker RabbitMQ host.
secrets.rabbitmq.port5672Backend and worker RabbitMQ port.
secrets.rabbitmq.usernameeasybpmBackend and worker RabbitMQ username.
secrets.rabbitmq.passwordchange-meBackend and worker RabbitMQ password.
secrets.security.adminUsernameadminBootstrap administrator username.
secrets.security.adminPasswordchange-meBootstrap administrator password.
secrets.security.jwtSecretBase64replace-with-32-byte-minimum-base64-secretJWT signing secret.
secrets.ai.encryptionKeyreplace-with-strong-ai-credential-keyBackend AI credential encryption key.
secrets.ai.openaiApiKeyEmptyOptional OPENAI_API_KEY added to the backend secret.
secrets.ai.geminiApiKeyEmptyOptional GEMINI_API_KEY added to the backend secret.
existingSecretNameEmptyUses an existing Kubernetes Secret instead of creating one from secrets.*.

When you use existingSecretName, the secret must provide the same environment variable names generated by the chart secret template, including backend and worker datasource/RabbitMQ values.

CORS and origins​

By default, the backend allows local browser origins such as http://localhost:* and http://127.0.0.1:*. For production, configure routing so the web apps and backend share approved origins, or update the backend security configuration if your deployment needs a different CORS policy.