Appearance
Environment variables
Catalog of variables the platform reads. Sources: root .env.example (app host) and observability/.env.example (monitoring host), plus a few runtime-only keys the API schema accepts. Do not put live secrets in git, tickets, or this site.
Local first-run still starts with cp .env.example .env — see Run locally. Production files are described in Production.
Format
| Convention | Rule |
|---|---|
| File syntax | KEY=value per line. Production installer writes KEY="value" via upsert_env. |
| Empty | Empty means unset for most optional keys. Do not use the string undefined. |
| Booleans | Literal true / false (strings). Unset is usually false. |
| Lists | Comma-separated, no spaces unless the value itself contains spaces (CIDRs, origins, image remote hosts). |
| URLs | Must parse as a URL. Production often requires https:. No trailing path unless the name says otherwise (FUNDIST_OW_CALLBACK_PATH is a path). |
| Integers | Decimal milliseconds, seconds, minutes, or ports as documented per key. |
| Secrets (≥32) | Production rejects placeholders containing changeme, change-me, replace-me, your-, or password, and requires length ≥ 32 for owned secrets (auth, P2P, payment encryption). |
NEXT_PUBLIC_* | Inlined when Next.js images are baked. Runtime .env changes do not update the player/admin/support bundle until you rebuild the image. |
Comments in .env.example start with #. Docker Compose interpolates /opt/swaggbet/current/.env on the app host. Durable secrets belong in /opt/swaggbet/shared/main.env and must be copied onto current/.env before recreate — Compose does not read shared/main.env by itself.
ACTIVE_OPTIONAL_INTEGRATIONS is always injected in production compose. Locally, leave it empty to auto-enable from credentials; set it explicitly in deployed env (customerio, analytics,customerio, …) so API enqueue and workers stay aligned. An empty value in production used to silently disable CRM.
App host — core runtime
| Variable | Format / values | Notes |
|---|---|---|
NODE_ENV | development | production | test | API default development. |
PORT | integer, default 3000 locally | Web. API defaults to 8787 in process (not this key in Docker). |
HOST / BIND_ADDRESS | hostname or IP | Optional API bind. |
UPSTREAM_TIMEOUT_MS | integer ms, default 12000 | Nginx/upstream budget used by setup. |
NEXT_DEPLOYMENT_ID | opaque string | Empty locally; production scripts write a unique value for Next.js version-skew protection. |
NEXT_TELEMETRY_DISABLED | 1 | Disables Next.js telemetry. |
Database, Postgres, backups
| Variable | Format / values | Notes |
|---|---|---|
DATABASE_URL | postgresql://user:pass@host:5432/db | Main casino DB. Required. |
P2P_DATABASE_URL | same | Isolated P2P schema/database. |
POSTGRES_PASSWORD | secret | Superuser for the Postgres container. |
MIGRATION_DATABASE_PASSWORD | secret | DDL role for db-migrate. |
API_DATABASE_PASSWORD | secret | DML role for API/workers. |
P2P_DATABASE_PASSWORD | secret | P2P runtime. |
P2P_MIGRATION_PASSWORD | secret | P2P DDL. |
MONITORING_DATABASE_PASSWORD | secret | swaggbet_monitor / postgres-exporter. Required in compose. |
PGBOUNCER_MAX_CLIENT_CONN | integer, default 1200 | |
PGBOUNCER_DEFAULT_POOL_SIZE | integer, default 30 | |
PGBOUNCER_RESERVE_POOL_SIZE | integer, default 5 | |
DB_POOL_MAX / DB_POOL_IDLE_TIMEOUT | integer strings | Optional API pool overrides. |
PGBACKREST_ENABLED | true | false | Production expects off-host WAL. |
PGBACKREST_S3_BUCKET / _ENDPOINT / _REGION / _KEY / _KEY_SECRET | S3-style | Empty disables remote rest. |
PGBACKREST_S3_URI_STYLE | host (default) or path | |
PGBACKREST_CIPHER_PASS | secret | Repo cipher. |
SWAGGBET_DB_BACKUP_DIR | absolute path | On-host dumps, default /var/lib/swaggbet/db-backups. |
SWAGGBET_DB_BACKUP_RETENTION_DAYS | integer, default 7 | |
RESTIC_REPOSITORY / RESTIC_PASSWORD | restic URL + secret | Asset backups. |
ASSET_BACKUP_S3_KEY / _KEY_SECRET / _REGION | S3 | Region default us-east-1. |
POSTGRES_REPLICATION_ROLE | identifier, default swaggbet_replicator | |
POSTGRES_REPLICATION_SLOT | identifier, default analytics_test | |
POSTGRES_REPLICATION_CLIENT_CIDRS | CIDR list | Empty keeps 5432 unpublished. |
REPLICATION_DATABASE_PASSWORD | secret | Do not reuse the app superuser. |
POSTGRES_REPLICATION_PRIMARY_HOST | IP/host | TEST analytics host only. |
POSTGRES_ANALYTICS_PORT | integer, e.g. 5433 | TEST analytics host only. |
Redis and realtime
| Variable | Format / values | Notes |
|---|---|---|
REDIS_URL | redis://host:6379 or with password | Required for WebSocket tickets and fan-out. |
REDIS_PASSWORD | secret | Required in production compose (no insecure default). |
REALTIME_WORKER_ID | string | Optional stable worker id. |
REALTIME_BATCH_SIZE | integer, default 50 | |
REALTIME_POLL_INTERVAL_MS | integer, default 500 | |
REALTIME_LOCK_TTL_MS | integer, default 300000 | |
REALTIME_PROCESSED_RETENTION_MS | integer, default 86400000 | |
REALTIME_PUBLISH_CONCURRENCY | integer, default 10 | |
REALTIME_PUBLISH_TIMEOUT_MS | integer, default 10000 | |
REALTIME_MAX_READY_LAG_MS | integer, default 60000 | Readiness lag budget. |
REALTIME_PORT | integer, default 8792 |
Authentication, cookies, CORS
| Variable | Format / values | Notes |
|---|---|---|
AUTH_SECRET | ≥32 char secret | Auth.js session encryption. Keep stable across replicas. |
AUTH_SECRET_PREVIOUS | secret | Optional 30-day rotation window. |
AUTH_ACCESS_TOKEN_SECRET | ≥32 char secret | API access tokens; independent of AUTH_SECRET. |
AUTH_ACCESS_TOKEN_SECRET_PREVIOUS | secret | Rotation. |
AUTH_ACCESS_TOKEN_KID | string, default primary | Key id in tokens. |
AUTH_AUDIENCE | string, default swaggbet-api | Token aud. |
AUTH_ISSUER | URL | Token iss; local http://localhost:3000. |
NEXTAUTH_URL | URL | Player Auth.js canonical URL. |
ADMIN_NEXTAUTH_URL | URL | Admin. |
SUPPORT_NEXTAUTH_URL | URL | Support. |
AUTH_COOKIE_DOMAIN | hostname or empty | Shared cookie domain when set. |
AUTH_INSECURE_COOKIES | true | empty | Local HTTP only. |
AUTH_ALLOW_MFA_SKIP | true | false | empty | Rejected in production. Local MFA escape hatch. |
TOTP_ENCRYPTION_KEY / _PREVIOUS | secret | 2FA secret at rest. |
EMAIL_VERIFICATION_SECRET / PASSWORD_RESET_SECRET | secret | Optional; fall back to AUTH_SECRET. |
ADMIN_SUPPORT_ALLOWED_CIDRS | CIDR list | Required for production admin/support ingress. |
ADMIN_SUPPORT_NETWORK_RESTRICTION_DISABLED | true | false | Break-glass; default false. |
TRUSTED_PROXY_CIDRS | CIDR list | Immediate nginx/container hop only. |
CORS_ALLOW_IP | IP or empty | Extra CORS IP. |
CORS_ALLOWED_ORIGINS | comma-separated full origins | Beyond first-party hosts. |
ADMIN_EMAIL / ADMIN_PASSWORD | email + password | Bootstrap only; never leave changeme in prod. |
Public site, locales, promo
| Variable | Format / values | Notes |
|---|---|---|
NEXT_PUBLIC_WEB_URL | URL | Player origin. |
NEXT_PUBLIC_API_URL | URL | Browser → API. Bake-time. |
NEXT_PUBLIC_SITE_NAME / _SHORT_NAME / _DESCRIPTION | string | Brand copy in the bundle. Unset short name defaults in code (not necessarily “OmadX”). |
NEXT_PUBLIC_SUPPORT_EMAIL | ||
NEXT_PUBLIC_LICENSE_ENTITY / _NUMBER / _REGULATOR | string | Footer license line. |
NEXT_PUBLIC_OPERATOR_LEGAL_NAME / _ADDRESS / _REGISTRATION | string | Optional operator identity override (footer defaults to Zenorix / C62637 in code). |
NEXT_PUBLIC_IMAGE_REMOTE_HOSTS | hostname list | Extra /_next/image hosts. Never * / **. |
DEFAULT_LANGUAGE | uz | en | es | ru | Default uz. |
DEFAULT_AFFILIATE_TAG | string | |
POST_REGISTER_PATH | path, default / | |
PLATFORM_ORIGIN | URL | Server-side player origin. |
PLAYER_WEB_URL | URL | Public player origin (admin slot images, Fundist launch). |
INTERNAL_API_ORIGIN | URL | Promo → API on Docker network. |
INTERNAL_WEB_URL | URL | Optional API→web. |
PROMO_TERMS_PATH / PROMO_PRIVACY_PATH | path | Promo legal links. |
WEBHOOK_BASE_URL | origin, no path | Public API origin for provider callbacks. |
OAuth, Telegram, pixels
Empty client ids disable that provider.
| Variable | Format / values | Notes |
|---|---|---|
GOOGLE_CLIENT_ID / _SECRET | OAuth | |
FACEBOOK_CLIENT_ID / _SECRET | OAuth | |
FACEBOOK_CAPI_ACCESS_TOKEN / _TEST_EVENT_CODE | secret / string | Conversion API. |
NEXT_PUBLIC_FACEBOOK_PIXEL_ID | pixel id | Bake-time. |
DISCORD_CLIENT_ID / _SECRET | OAuth | |
APPLE_CLIENT_ID / _SECRET | OAuth | |
TELEGRAM_BOT_TOKEN | bot token | Login widget / bot. |
TELEGRAM_BOT_USERNAME | username without @ | |
NEXT_PUBLIC_TELEGRAM_BOT_USERNAME | same | Bake-time. |
Wallet, KYC, uploads
| Variable | Format / values | Notes |
|---|---|---|
WALLET_ENCRYPTION_KEY | ≥32 char secret | Wallet material at rest. |
KYC_DOCUMENTS_DIR | path | Relative from repo root locally; production compose uses /app/uploads/kyc. |
NOTIFICATION_MEDIA_DIR | path, default ./uploads/notifications | |
NOTIFICATION_MEDIA_PUBLIC_BASE_URL | URL or empty | Admin draft URLs only. |
Game aggregators
| Variable | Format / values | Notes |
|---|---|---|
GAME_PROVIDER | alternative | fundist | Default alternative (Platform API). |
NEXT_PUBLIC_GAME_PROVIDER | same | Must stay aligned; bake-time Live Casino gating. |
GAME_SYNC_SECRET | secret | POST /game/catalog/sync. |
REVALIDATE_SECRET | secret | POST /api/revalidate/config (no fallback). |
Alternative (Platform API / CasinoMobule)
Required when GAME_PROVIDER=alternative.
| Variable | Format / values | Notes |
|---|---|---|
ALTERNATIVE_API_URL | URL | e.g. https://test.partners.casinomobule.com |
ALTERNATIVE_PARTNER_ALIAS | string | |
ALTERNATIVE_SECRET_KEY | secret | |
ALLOW_UNSIGNED_ALTERNATIVE_CALLBACKS | true | false | Default false. Never true in production. |
Fundist
Required when GAME_PROVIDER=fundist.
| Variable | Format / values | Notes |
|---|---|---|
FUNDIST_API_URL | URL | Test https://apitest.fundist.org/. Prod https://apiprod5.fundist.org/ (legacy https://api.fundist.org/ still accepted by some accounts). |
FUNDIST_API_KEY / FUNDIST_API_PWD | secret | |
FUNDIST_CASINO_SERVER_IP | IPv4 | Public IP Fundist must whitelist. Default 0.0.0.0. |
FUNDIST_OW_SECRET | secret | OneWallet HMAC; same value in Fundist backoffice. |
FUNDIST_OW_CALLBACK_PATH | path, default /fundist/onewallet | Public callback is https://api.{domain} + this path. |
FUNDIST_OW_PEER_URL | URL | Optional: forward “Invalid userid” callbacks to a peer (staging/prod sharing one merchant). |
FUNDIST_ALLOWED_IPS | IP list or * | * local-only. Production: Fundist egress IPs. |
FUNDIST_LAUNCH_BASE_URL | URL | Defaults to WEBHOOK_BASE_URL. |
FUNDIST_USERAUTH_REF_ORIGIN | URL | Optional ref= override when PLAYER_WEB_URL is not yet allowlisted. |
FUNDIST_DEFAULT_COUNTRY | ISO 3166-1 alpha-2 (XX) | Optional. |
Payments
| Variable | Format / values | Notes |
|---|---|---|
PAYMENT_PROVIDER_CREDENTIAL_ENCRYPTION_KEY | ≥32 char secret | Encrypts admin-managed provider rows. Same value on API and admin. |
PAYMENT_PROVIDER_CREDENTIAL_ENCRYPTION_KEY_PREVIOUS | secret | Rotation; remove after re-save. |
CRYPTOCLOUD_API_KEY / _SECRET_KEY / _SHOP_ID | secrets | Env is a temporary fallback; prefer DB rows. |
CRYPTOCLOUD_WEBHOOK_URL | HTTPS URL | Public postback. |
PAYOU_MERCHANT_ID / PAYOU_SECRET_KEY | secrets | Fiat. |
PAYOU_ENDPOINT | URL, default https://payou.pro/api/new/api.php |
Alanbase S2S (HTTPS required in production):
| Variable | Format / values | Notes |
|---|---|---|
ALANBASE_EVENTS_URL | HTTPS URL | https://{brand}.postback.alanbase.com/events/{client_key} |
ALANBASE_GOALS_URL | HTTPS URL or empty | Derived from events URL if empty (/events/ → /goals/). |
ALANBASE_TIMEOUT_MS | integer ms, default 5000 |
P2P / Mercado Pago
Configure URL and secret together. Production requires HTTPS and strong secrets.
| Variable | Format / values | Notes |
|---|---|---|
P2P_PUBLIC_URL | URL | Player-facing P2P origin. |
P2P_ADMIN_USERNAME / P2P_ADMIN_PASSWORD | string | P2P admin basic auth. |
P2P_UPLOAD_DIR | path | Local default ./apps/p2p/uploads. |
P2P_INTERNAL_API_SECRET | secret | Casino → P2P. |
P2P_PROVIDER_API_URL / P2P_PROVIDER_API_SECRET | HTTPS URL + ≥32 secret | |
P2P_PAYMENT_TTL_MINUTES | positive number, default 60 | |
P2P_CASINO_WEBHOOK_URL | URL | e.g. http://localhost:8787/webhook/p2p |
P2P_CASINO_WEBHOOK_SECRET / P2P_WEBHOOK_SECRET | ≥32 secret when P2P enabled | |
P2P_CASINO_RETURN_URL | URL | |
P2P_CREDENTIAL_ENCRYPTION_KEY / _PREVIOUS | secret | MP credentials at rest. |
P2P_MP_HEALTH_MAX_AGE_MINUTES | integer, default 30 | |
P2P_MP_RECONCILE_FAST_INTERVAL_SECONDS | integer, default 10 | |
P2P_MP_RECONCILE_SLOW_INTERVAL_SECONDS | integer, default 30 | |
P2P_MP_RECONCILE_FAST_WINDOW_MINUTES | integer, default 2 | |
P2P_MP_RECONCILE_BATCH_SIZE | integer, default 50 | |
P2P_MP_RECONCILE_CONCURRENCY | integer, default 5 | |
MERCADOPAGO_API_BASE | URL, default https://api.mercadopago.com |
Email, CRM, analytics, push
| Variable | Format / values | Notes |
|---|---|---|
EMAIL_PROVIDER | resend | mailersend | unione | Default resend. In-process in apps/api. |
RESEND_API_KEY / MAILERSEND_API_KEY / UNIONE_API_KEY | secret | Required for the selected provider. |
UNIONE_API_URL | URL | Default UniOne transactional v1 base. |
FROM_EMAIL | Must be a verified domain on the ESP. | |
SUPPORT_INBOX | Contact-us delivery override. | |
TRANSACTIONAL_EMAIL_VIA_CUSTOMERIO | true | unset | Skip ESP when CIO App API is not ready. |
ACTIVE_OPTIONAL_INTEGRATIONS | comma list: customerio, analytics, … | See format section. |
CUSTOMERIO_SITE_ID / CUSTOMERIO_TRACK_API_KEY | id + secret | Classic Track; both required to enable the worker. Site id is also injected into web for In-App. Never expose the track key to the browser. |
CUSTOMERIO_APP_API_KEY | secret | Bearer for App API (/v1/send/email and GET /v1/transactional/{id}/contents). |
CUSTOMERIO_TRANSACTIONAL_APP_API | true | 1 | yes | unset | Leave unset in production until Customer.io verifies the From domain. Unset = fetch CIO HTML and send through UniOne. |
CUSTOMERIO_TRANSACTIONAL_FROM | Name <email> or empty | Optional App API From override. Empty uses the template sender. |
CUSTOMERIO_TRANSACTIONAL_PASSWORD_RESET_ID / _EMAIL_VERIFICATION_ID | message id or trigger name | Password-reset default 8. Email-confirm is optional (not in the player catalog). |
CUSTOMERIO_TRANSACTIONAL_REGISTRATION_ID / _DEPOSIT_CREDITED_ID / _DEPOSIT_FAILED_ID / _WITHDRAWAL_REQUESTED_ID / _WITHDRAWAL_COMPLETED_ID / _WITHDRAWAL_REJECTED_ID / _BONUS_CREDITED_ID / _BONUS_WAGERED_ID / _ACCOUNT_RESTRICTED_ID | numeric id or trigger | Defaults 6 / 10 / 13 / 17 / 19 / 21 / 24 / 27 / 30. Override only if CIO ids change. |
CUSTOMERIO_REGION | us | eu (typical) | Default us. |
CUSTOMERIO_PORT | integer, default 8791 | |
CUSTOMERIO_WORKER_ID | string | |
CUSTOMERIO_BATCH_SIZE | integer, default 50 | |
CUSTOMERIO_CONCURRENCY | integer, default 10 | Per-user order preserved. |
CUSTOMERIO_POLL_INTERVAL_MS | integer, default 2000 | |
CUSTOMERIO_LOCK_TTL_MS | integer, default 300000 | |
CUSTOMERIO_TIMEOUT_MS | integer, default 10000 | |
CUSTOMERIO_RATE_LIMIT_PAUSE_MS | integer, default 5000 | |
CLICKHOUSE_URL / CLICKHOUSE_PASSWORD | URL + secret | Both required to enable analytics worker. |
CLICKHOUSE_USERNAME | string, default default | |
CLICKHOUSE_DATABASE | string, default default | |
CLICKHOUSE_BATCH_SIZE | integer, default 1000 | |
CLICKHOUSE_FLUSH_INTERVAL_MS / _POLL_INTERVAL_MS | integer, default 1000 | |
CLICKHOUSE_LOCK_TTL_MS | integer, default 300000 | |
STREAMER_WORKER_ID | string | |
STREAMER_PORT | integer, default 8789 | |
NOTIFIER_PORT | integer, default 8790 | |
NOTIFIER_WORKER_ID | string | |
NOTIFIER_BATCH_SIZE | integer, default 100 | |
NOTIFIER_POLL_INTERVAL_MS | integer, default 5000 | |
ONESIGNAL_APP_ID / NEXT_PUBLIC_ONESIGNAL_APP_ID | UUID | PWA web push. Prefer ONESIGNAL_APP_ID in compose so bake picks it up. |
GeoIP
| Variable | Format / values | Notes |
|---|---|---|
GEOIP_DATA_DIRECTORY | path | GeoLite2 Country MMDB dir. |
GEOIP_MMDB_PATH | path | Explicit file; skips auto update. |
GEOIP_AUTO_UPDATE | 0 to disable | Otherwise start refreshes from the redistributable mirror. |
App-host observability
| Variable | Format / values | Notes |
|---|---|---|
OTEL_ENABLED | true | false | Production setup sets true (--otel-disabled to leave false). |
OTEL_SERVICE_NAME | string | Leave empty in .env; each container overrides (swaggbet-api, …). |
OTEL_EXPORTER_OTLP_ENDPOINT | URL | Local http://localhost:4318; Docker http://alloy:4318. |
OBSERVABILITY_ENVIRONMENT | development | production | … | |
NEXT_PUBLIC_OBSERVABILITY_ENVIRONMENT | same | Bake-time. |
OBSERVABILITY_RELEASE / NEXT_PUBLIC_OBSERVABILITY_RELEASE | string | local until build.sh / setup writes a UTC timestamp. |
OBSERVABILITY_CLUSTER | omadx | test | … | Grafana series label. Derived from domain on setup. |
OBSERVABILITY_LOG_LEVEL | info | debug | … | Default info. |
OBSERVABILITY_OTLP_METRICS_ENABLED | true | false | Keep false; HTTP RED comes from /metrics. |
OBSERVABILITY_METRICS_ENABLED | true | false | Legacy alias of OTLP metrics. Do not enable both paths. |
OBSERVABILITY_TRACES_ENABLED | true | false | Default true. |
OBSERVABILITY_TRACE_SAMPLE_RATIO | 0–1 float | 1 local; 0.1 production. |
OBSERVABILITY_CENTRAL_ALLOY_ENDPOINT | URL | https://obs.{domain}:4318 in prod. |
OBSERVABILITY_CENTRAL_LOKI_ENDPOINT | URL | https://obs.{domain}:3100/loki/api/v1/push |
OBSERVABILITY_CENTRAL_MIMIR_ENDPOINT | URL | https://obs.{domain}:9009/api/v1/push |
Local Docker apps use http://host.docker.internal:… for the three central endpoints. Without them, Alloy stays standalone.
Compose image pins (production)
Required by docker/compose/docker-compose.yml. Format: name@sha256:<64 hex> (or a fully qualified digest reference). Floating :latest tags are not a production pin.
| Variable | Image |
|---|---|
WEB_IMAGE | Player Next.js |
API_IMAGE | Hono API (+ migrate/job sidecars that reuse it) |
ADMIN_IMAGE | Admin |
SUPPORT_IMAGE | Support |
P2P_IMAGE | P2P |
PROMO_IMAGE | Promo |
STREAMER_IMAGE | Analytics worker |
NOTIFIER_IMAGE | Notifier |
CUSTOMERIO_IMAGE | Customer.io worker |
REALTIME_IMAGE | Realtime worker |
SCHEDULER_IMAGE | Scheduler (8793) |
POSTGRES_IMAGE | Postgres |
Pin these in both current/.env and shared/main.env. See Production.
Observability host
File: observability/.env (example: observability/.env.example). Zip deploy also copies /opt/swaggbet/shared/observability.env.
| Variable | Format / values | Notes |
|---|---|---|
GRAFANA_ADMIN_USER | string, default admin | |
GRAFANA_ADMIN_PASSWORD | secret | Generated on first install. |
GRAFANA_HOST_PORT | integer | Local 3300; production behind nginx uses 3000. |
GRAFANA_ROOT_URL | URL | Public Grafana URL. |
GRAFANA_ALERT_WEBHOOK_URL | HTTPS URL or empty | Optional extra sink on ops-alerts. Never http://127.0.0.1:9. |
GRAFANA_ALERT_WEBHOOK_BEARER_TOKEN | secret or empty | Omit entirely if unused. |
TELEGRAM_ALERT_BOT_TOKEN | 123456:ABC… | Both Telegram vars required to provision the contact point. |
TELEGRAM_ALERT_CHAT_ID | integer string (may be negative) | Group ids like -100…. |
OBSERVABILITY_BIND_ADDRESS | IP, default 127.0.0.1 | Docker publish bind. |
OBS_INGEST_ALLOW_CIDRS | CIDR list | Extra public IPs allowed to hit 4318/3100/9009. |
ALLOY_HTTP_HOST_PORT | integer, default 12345 | Production remaps so nginx owns public ingest. |
ALLOY_OTLP_GRPC_HOST_PORT | integer, default 4317 | |
ALLOY_OTLP_HTTP_HOST_PORT | integer, default 4318 | |
LOKI_HOST_PORT / TEMPO_HOST_PORT / MIMIR_HOST_PORT | integers 3100 / 3200 / 9009 | |
MINIO_ROOT_USER / MINIO_ROOT_PASSWORD | string + secret | Object storage. |
LOKI_RETENTION_PERIOD | Go duration, default 336h | 14 days. |
TEMPO_RETENTION_PERIOD | default 168h | 7 days. |
MIMIR_RETENTION_PERIOD | default 720h | 30 days. |
POSTGRES_HOST / POSTGRES_PORT / POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DATABASE | connection parts | Marketing Campaigns datasource. Leave host/user/database empty to skip. |
POSTGRES_SSLMODE | disable | require | … | Compose default disable; production setup require. |
GRAFANA_POSTGRES_NAME | string, default Omadx | Datasource title when multiple clusters share Grafana. |
GRAFANA_POSTGRES_UID | string, default postgres-omadx | |
OBSERVABILITY_ENVIRONMENT | production typical | Label for the monitoring host itself. |
Alert routing and dashboards: Monitoring.