Skip to main content
Version: 8.9 (unreleased)

Configure secondary storage

Configure secondary storage to enable features such as Operate, Tasklist, Identity, and search-based REST APIs in Camunda Self-Managed environments.

Configuration options

You can configure secondary storage using Helm charts, Docker Compose, or manual configuration files.

Camunda uses the data.secondary-storage configuration to define which database backend supports advanced web applications and APIs.

When deploying with Helm, set the secondary storage type and connection details in your values.yaml file:

data:
secondary-storage:
type: rdbms
rdbms:
url: jdbc:h2:mem:camunda
username: sa
password:

You can switch to Elasticsearch by using:

data:
secondary-storage:
type: elasticsearch
elasticsearch:
url: http://elasticsearch:9200/

To explicitly disable secondary storage (for example, when running only the Zeebe engine), you can set:

global:
noSecondaryStorage: true

When this flag is set, all secondary-storage-dependent components are automatically disabled.

Choosing a storage backend

ScenarioRecommended backendReason
Local testing or Camunda 8 Run quickstartH2Fast, lightweight, and runs entirely in memory or file-based.
Production workloadsElasticsearch or supported RDBMSScalable and persistent; designed for concurrent queries.
Debugging and troubleshootingH2 or PostgreSQL (for debugging and inspection)Easier to inspect and visualize data.
note

H2 is suitable for testing and local development only.
For production use, Operate and Tasklist require a persistent secondary storage backend such as an RDBMS or Elasticsearch.

Run without secondary storage

If you want to run the Zeebe engine without secondary storage or web applications, you can use no secondary storage mode.

In this mode:

  • Operate, Tasklist, Identity, Optimize, and the REST API are disabled.
  • The Zeebe engine and primary storage remain active for process execution.
  • This configuration is best suited for local development or minimal-resource environments.

See Run without secondary storage for configuration examples and limitations.