Skip to main content
This reference lists the environment variables used to configure Reporter, the service that generates regulatory, compliance, and accounting reports from configurable templates. Reporter ships as a single binary whose active surfaces are selected by RUN_MODE — the API manager, the report worker, or both. You set these at deploy time, through Helm values, Docker Compose, or your orchestrator’s environment. Variables marked as required cause the server to fail on startup if not set. For the configuration blocks that every Lerian product shares — TLS posture, OpenTelemetry, Access Manager authentication, multi-tenancy, service discovery, and event streaming — see the BYOC configuration reference. This page focuses on what is distinctive to Reporter.

Run mode and ports

RUN_MODE decides which surfaces the process serves. Run the API and worker as one process (all) for small deployments, or split them into separate deployables (api and worker) to scale report generation independently. See the health and readiness reference for the probe contract.

Deployment and TLS

CORS and proxies

API pagination

Template previews

Database (MongoDB)

Stores report metadata, templates, and run history.

Message broker (RabbitMQ)

Carries the generate-report command queue between the API and the worker.

Object storage (S3-compatible)

Where rendered reports are stored. Works with any S3-compatible endpoint.

Cache (Redis / Valkey)

PDF rendering (worker)

Report datasources

Reports read from PostgreSQL and MongoDB datasources in the persisted registry. Create and manage those entries through the data-source API. The environment block below is an optional single-tenant bootstrap path; multi-tenant deployments create datasources per tenant through the API. DATASOURCE_{NAME}_CONFIG_NAME makes an environment seed block exist. Reporter scans for keys that match DATASOURCE_*_CONFIG_NAME — the prefix counts as much as the suffix, so a key that only ends in _CONFIG_NAME declares nothing. At Manager startup, a complete block seeds its configName only when no registry entry, including a soft-deleted one, already uses that name. The value is the name your templates use to address the source. Within a block, the variables marked required are the ones Reporter needs before it reads the block. A complete per-datasource seed block follows. Set the global DATASOURCE_CRED_ENC_KEY separately as described above. We recommend using the same name for CONFIG_NAME and {NAME}, with the environment-variable segment uppercased (for example, ONBOARDING for CONFIG_NAME=onboarding). That keeps the schema key intuitive, because SCHEMAS is keyed by the CONFIG_NAME value while every other field is keyed by {NAME}:
A template then addresses that source by its config name, as in {{ onboarding.accounts }}. Use the API to add or update a datasource. In single-tenant mode, an environment block only seeds a previously absent entry; it never overwrites an API-managed entry or restores a soft-deleted one.

Shared configuration backbone

The following blocks are identical across Lerian products and are documented in full in the BYOC configuration reference. They default off.
  • Access Manager authenticationPLUGIN_AUTH_ENABLED, PLUGIN_AUTH_ADDRESS. Enable in production.
  • Multi-tenancyMULTI_TENANT_*, plus RABBITMQ_MULTI_TENANT_SYNC_INTERVAL and RABBITMQ_MULTI_TENANT_DISCOVERY_TIMEOUT. Off by default.
  • Service discoverySD_* (Consul; Reporter also accepts the legacy SD_ADVERTISE_* / CONSUL_ADDR aliases). Off by default.
  • Event streamingSTREAMING_ENABLED, STREAMING_BROKERS, STREAMING_CLOUDEVENTS_SOURCE, plus RABBITMQ_REPORT_EVENTS_EXCHANGE for the events exchange. Off by default.
  • OpenTelemetryENABLE_TELEMETRY, OTEL_*, OTEL_INSECURE_EXPORTER. Telemetry is OTLP push.