Environment variables
Exhaustive community-server runtime reference. See Configuration for a user-oriented walkthrough.
| Variable | Required | Default | Scope | Description |
|---|---|---|---|---|
JWT_SECRET |
Yes | — | Auth | HS256 signing key for JWT tokens. Startup fails when this is unset, when the placeholder value is used, or when the value is shorter than 32 characters. Use a strong random value; at least 32 bytes is recommended for HMAC-SHA256. |
LISTEN_ADDR |
No | :8080 |
API | HTTP listen address for the REST API, embedded frontend, health check, and browser WebSocket hub. |
OPAMP_ADDR |
No | :4320 |
OpAMP | Listen address for the OpAMP WebSocket server. The OpAMP path is /v1/opamp. |
OPAMP_SHARED_SECRET |
No | — | OpAMP | Optional bearer token required from OpAMP clients during the HTTP/WebSocket handshake. Empty keeps local/dev OpAMP connections unauthenticated; set a random value for production, shared, or exposed networks. |
CORS_ORIGINS |
No | http://localhost:5173 |
API | Comma-separated list of allowed browser origins. Docker Compose sets this to http://localhost:8080 for same-origin production-style access. |
DB_DSN |
Yes | — | Store | PostgreSQL 18.x connection string. Docker Compose supplies a local service URL; use sslmode=verify-full with a trusted root CA and hostname verification in production. |
DB_MAX_OPEN_CONNS |
No | 40 |
Store | Maximum PostgreSQL connections held open. |
DB_MAX_IDLE_CONNS |
No | 10 |
Store | Maximum idle PostgreSQL connections retained. |
DB_CONN_MAX_IDLE_TIME_SECONDS |
No | 300 |
Store | Maximum time a pooled connection may remain idle, in seconds. |
DB_CONN_MAX_LIFETIME_SECONDS |
No | 1800 |
Store | Maximum lifetime for a pooled connection in seconds. |
SEED_ADMIN_EMAIL |
No | — | Bootstrap | First-admin email. Must be set with SEED_ADMIN_PASSWORD; bootstrap only creates a user when the users table is empty. |
SEED_ADMIN_PASSWORD |
No | — | Bootstrap | First-admin password, minimum 12 characters. Remove both seed variables after the first successful login. |
WEBHOOK_URL |
No | — | Alerts | HTTP endpoint called when a new alert fires. Treat as sensitive if it contains embedded credentials. |
MIN_AGENT_VERSION |
No | — | Alerts | Minimum service.version; workloads reporting a lower semantic version are flagged by the alert engine. Empty disables this rule. |
WORKLOAD_DISCONNECT_GRACE_SECONDS |
No | 120 |
Workloads | Seconds a workload remains connected after its last live instance disconnects, absorbing rolling updates and short restarts. Invalid or non-positive values fall back to one second. |
WORKLOAD_RETENTION_DAYS |
No | 30 |
Workloads | Days a disconnected workload is kept before archival by the workload janitor. Invalid or non-positive values fall back to 30 days. |
WORKLOAD_JANITOR_INTERVAL_SECONDS |
No | 300 |
Workloads | Workload janitor tick interval. The janitor archives expired workloads and purges old events. Invalid or non-positive values fall back to one second. |
WORKLOAD_EVENT_RETENTION_DAYS |
No | 30 |
Workloads | Days the workload_events log is kept before the janitor trims it. Invalid or non-positive values fall back to 30 days. |
Load-test variables
These variables are consumed only by scripts/load-test-5000.sh; they are not
community-server runtime configuration. Use test-only values and never reuse
production credentials for this scenario. DB_DSN is required as an intent
guard, but its supplied value is ignored and replaced with the local isolated
Compose PostgreSQL DSN.
| Variable | Required | Default | Description |
|---|---|---|---|
LOAD_TEST_CONFIRM |
Yes | — | Must be exactly 5000 before the script will start the 5,000 collector scenario. |
DB_DSN |
Yes | — | Required intent guard. The supplied value is ignored and replaced with the fixed isolated Compose PostgreSQL DSN. |
LOAD_TEST_RAMP |
No | 5m |
Go duration used to spread 5,000 client starts. |
LOAD_TEST_HOLD |
No | 10m |
Go duration that keeps established connections open. |
LOAD_TEST_OUTPUT_DIR |
No | system temporary directory | Directory for the JSON summary, Docker resource snapshot, PostgreSQL activity query, and filtered application errors. |
Feature flags
Feature flags are not configured through environment variables in the community binary. GET /api/v1/capabilities is the canonical public capability-discovery endpoint; GET /api/features remains a legacy boolean compatibility endpoint. WithCapabilities is preferred for typed declarations; WithFeatures remains supported for legacy edition overlays.
Community advertises only config_safety.approvals and config_safety.policy_preview in this release. The canonical response is:
{
"api_version": "v1",
"capabilities": [
{ "id": "config_safety.approvals", "state": "enabled" },
{ "id": "config_safety.policy_preview", "state": "enabled" }
]
}
Capability discovery is not authorization; protected APIs still enforce authentication, RBAC, and server-side gates. WithLicenseChecker is a server-side gate input and does not change the public capability document.
Sensitive values
The following values should not be pasted into public issues, docs, logs, or screenshots:
- Real
JWT_SECRETvalues. - Real
OPAMP_SHARED_SECRETvalues. - PostgreSQL credentials inside
DB_DSN. - Credential-bearing
WEBHOOK_URLvalues. - Bearer JWTs and WebSocket URLs containing
?token=. - Collector YAML that embeds exporter credentials, API keys, or endpoint passwords.