Skip to content

Environment Variable Reference

Complete catalog of every environment variable across all three repositories and the root Docker Compose. Grouped by category, then alphabetical within each group. Security-sensitive variables are marked [SECRET].

How env vars are loaded

Repo Mechanism Template files
ebit-api env-cmd -f .env (via npm scripts); validated at startup by libs/shared/src/env-config/env.dto.ts .example.env, .local.env, .test.env
ebit-fe Next.js built-in process.env + NEXT_PUBLIC_* client-side injection .example.env
ebit-admin-fe Same as ebit-fe .example.env
Root compose docker-compose.yml environment blocks; ${VAR:-default} syntax for host-port overrides

Production uses Doppler (DOPPLER_TOKENrun_local.sh in each repo). Never commit real secrets to .env files.


Database

Name Services Default Format [SECRET] Effect if missing File:line
DATABASE_URL api, rt, bj, bo, sr postgresql://user:pass@host:port/db?schema=public Yes Prisma cannot connect; app crashes on first DB call env.dto.ts, compose:157
POSTGRES_DB infra (ebit-db) ebit string No Docker creates wrong DB name compose:16
POSTGRES_USER infra (ebit-db) ebit string No Docker creates wrong user compose:17
POSTGRES_PASSWORD infra (ebit-db) ebit string Yes Docker refuses to start compose:18

Redis — cache instance (port 6379)

Name Services Default Format [SECRET] Effect if missing File:line
REDISCLOUD_URL api, rt, bj, bo, sr redis://:password@host:port/db Yes Falls back to REDIS_HOST/PORT/PASSWORD env.dto.ts, utils.ts:50
REDIS_HOST api (fallback) localhost hostname No Fallback if REDISCLOUD_URL unset utils.ts:54
REDIS_PORT api (fallback) 6379 integer No Fallback utils.ts:55
REDIS_PASSWORD api (fallback) string Yes Fallback; Docker default: cache utils.ts:56, compose:38
REDIS_USERNAME api (fallback) string No Optional ACL username utils.ts:57
REDIS_DB api (fallback) 0 integer No Fallback DB index utils.ts:58

Redis — bot instance (port 6380)

Name Services Default Format [SECRET] Effect if missing File:line
REDISCLOUD_BOT_URL api, rt, bj, bo, sr redis://:password@host:port Yes Falls back to REDIS_BOT_HOST/PORT/PASSWORD env.dto.ts, utils.ts:63
REDIS_BOT_HOST api (fallback) localhost hostname No Fallback utils.ts:67
REDIS_BOT_PORT api (fallback) 6380 integer No Fallback utils.ts:68
REDIS_BOT_PASSWORD api (fallback) string Yes Fallback; Docker default: bot utils.ts:69, compose:56
REDIS_BOT_USERNAME api (fallback) string No Optional utils.ts:70
REDIS_BOT_DB api (fallback) 0 integer No Fallback utils.ts:71

RabbitMQ

Name Services Default Format [SECRET] Effect if missing File:line
BROKER_URI api, rt, bj, bo, sr amqp://user:pass@host:port Yes Fast Track module stub handles gracefully; no crash compose:165
RABBITMQ_DEFAULT_USER infra rabbitmq string No Docker default compose:98
RABBITMQ_DEFAULT_PASS infra rabbitmq string Yes Docker default compose:99
RABBITMQ_DEFAULT_VHOST infra ft string No Fast Track vhost compose:100
RABBITMQ_ERLANG_COOKIE infra SWQOKODSQALRPCLNMEQG string Yes Cluster auth cookie compose:97

Auth / JWT / Sessions

Name Services Default Format [SECRET] Effect if missing File:line
SESSION_SECRET api, rt, bj, bo, sr string Yes Express session insecure / broken env.dto.ts:41
JWT_SECRET all (incl. FEs) string Yes Auth completely broken; FEs can't verify tokens env.dto.ts:48, fe .example.env
JWT_EXPIRES_IN api 7d duration string No Token lifetime .example.env:14
JWT_MFA_TEMP_SECRET api string Yes MFA flow broken env.dto.ts:51
JWT_VERIFICATION_TOKEN_SECRET api string Yes Email verification broken env.dto.ts:98
JWT_VERIFICATION_TOKEN_EXPIRATION_TIME api 1200 seconds (integer) No Verification token TTL env.dto.ts:101
JWT_USERNAME_SETUP_SECRET api string Yes Post-registration username setup broken env.dto.ts:107
JWT_USERNAME_SETUP_EXPIRES_IN api 5m duration string No Username setup token TTL env.dto.ts:110
COOKIE_DOMAIN / BASE_DOMAIN api localhost domain string No Session cookie scope env.dto.ts:77

OpenTelemetry

Name Services Default Format [SECRET] Effect if missing File:line
OTEL_EXPORTER_OTLP_ENDPOINT api, rt, bj, bo, sr, FEs URL No No traces/metrics exported pre-otel.main.ts:3, compose:162
OTEL_EXPORTER_OTLP_PROTOCOL all http/protobuf http/protobuf or grpc No Protocol mismatch → export fails silently compose:163
OTEL_SERVICE_NAME all string No Traces labeled "unknown_service" pre-otel.main.ts:4, compose:167
OTEL_RESOURCE_ATTRIBUTES all key=value,key=value No No resource attributes on spans compose:164
OTEL_METRIC_EXPORT_INTERVAL api 15000 ms (integer) No Metric push interval pre-otel.main.ts:27
NEXT_PUBLIC_OTEL_EXPORTER_OTLP_ENDPOINT ebit-fe (browser) http://localhost:4318 URL No Browser RUM traces not exported otel-client.ts:26, compose:424
NEXT_PUBLIC_OTEL_SERVICE_NAME ebit-fe (browser) ebit-fe-browser string No Browser traces mislabeled otel-client.ts:24, compose:425
NEXT_PUBLIC_APP_VERSION ebit-fe (browser) 0 string No Version tag missing on browser spans otel-client.ts:40

Sentry

Name Services Default Format [SECRET] Effect if missing File:line
SENTRY_DSN_API api Sentry DSN URL Yes No error reporting for api pre-sentry.main.ts:6
SENTRY_DSN_RT rt Sentry DSN URL Yes No error reporting for rt pre-sentry.main.ts:6
SENTRY_DSN_BJ bj Sentry DSN URL Yes No error reporting for bj pre-sentry.main.ts:6
SENTRY_DSN_BO bo Sentry DSN URL Yes No error reporting for bo pre-sentry.main.ts:6
SENTRY_DSN_SPEED_ROULETTE sr Sentry DSN URL Yes No error reporting for sr pre-sentry.main.ts:6
NEXT_PUBLIC_SENTRY_DSN ebit-fe Sentry DSN URL No No error reporting for player FE fe .example.env
SENTRY_ORG ebit-fe dropbet string No Source-map upload fails fe next.config.js:103
SENTRY_PROJECT ebit-fe stage-dropbet-fe string No Source-map upload fails fe next.config.js:104
SENTRY_AUTH_TOKEN ebit-fe string Yes Source-map upload fails (build-time only) fe next.config.js:110

Fast Track CRM (stubbed)

Name Services Default Format [SECRET] Effect if missing File:line
FAST_TRACK_API_KEY api string Yes Stub absorbs; no effect locally .local.env:198
FAST_TRACK_RABBITMQ_URL api amqp://rabbitmq:rabbitmq@localhost:5672/ft AMQP URL Yes Stub absorbs .local.env:199
FAST_TRACK_RABBITMQ_QUEUE_NAME api rtevents string No Stub absorbs .local.env:200
FAST_TRACK_REGISTER_CONSUMERS api false boolean No Stub absorbs fast-track.config-service.ts:39
FASTTRACK_JWT_PRIVATE_KEY api, rt, bj, bo, sr local-stub-not-used RSA PEM Yes Stub absorbs locally; required in prod env.dto.ts:234, compose:160
FASTTRACK_JWT_PUBLIC_KEY api, rt, bj, bo, sr local-stub-not-used RSA PEM No Stub absorbs env.dto.ts:237, compose:161

reCAPTCHA

Name Services Default Format [SECRET] Effect if missing File:line
RECAPTCHA_SECRET api string Yes Captcha validation fails; bypass with "pass" token in local env.dto.ts:104
NEXT_PUBLIC_RECAPTCHA_SITE_KEY ebit-fe Google test key string No Client-side captcha widget broken fe .example.env

EOS blockchain

Name Services Default Format [SECRET] Effect if missing File:line
EOS_NODE_HOST_1 api, bj, sr https://eos.greymass.com URL No Uses default public node env.dto.ts:54
EOS_NODE_AUTH_HEADER_1 api, bj, sr login:pass Yes Public node works without auth env.dto.ts:57
EOS_NODE_HOST_2 api, bj, sr https://eos.greymass.com URL No Fallback node env.dto.ts:60
EOS_NODE_AUTH_HEADER_2 api, bj, sr login:pass Yes Fallback auth env.dto.ts:63

SendGrid (email)

Name Services Default Format [SECRET] Effect if missing File:line
SENDGRID_API_KEY api string Yes Email sending fails; bypassed in local env.dto.ts:152
SENDGRID_FROM_EMAIL api no-reply@playebit.com email No Wrong sender address env.dto.ts:155
SENDGRID_VERIFY_EMAIL_TEMPLATE_ID api d-7db4ff41... SendGrid ID No Wrong template env.dto.ts:167
SENDGRID_WELCOME_EMAIL_TEMPLATE_ID api d-d4f09288... SendGrid ID No Wrong template env.dto.ts:161
SENDGRID_RESET_PASSWORD_EMAIL_TEMPLATE_ID api d-38baf07b... SendGrid ID No Wrong template env.dto.ts:164
SENDGRID_DEPOSIT_SUCCESSFUL_EMAIL_TEMPLATE_ID api d-8405bd1c... SendGrid ID No Wrong template env.dto.ts:158

Skindeck (skin deposits)

Name Services Default Format [SECRET] Effect if missing File:line
SKINDECK_API_KEY api string Yes Deposit inventory calls fail env.dto.ts:254
SKINDECK_API_SECRET api string Yes Webhook signature validation fails env.dto.ts:257

Payment providers

CCPayment

Name Services Default Format [SECRET] Effect if missing File:line
PROVIDER_CCPAYMENT_APP_ID api 33DKMfeUiCPDryja string No Payment processing broken env.dto.ts:113
PROVIDER_CCPAYMENT_SECRET api string Yes Payment signing broken env.dto.ts:116
PROVIDER_CCPAYMENT_URL api https://ccpayment.com/ccpayment/v2 URL No Wrong endpoint env.dto.ts:119
NEXT_PUBLIC_CCPAYMENT_SITE_VERIFICATION ebit-fe string No Missing verification meta tag fe layout.tsx:98

NowPayments

Name Services Default Format [SECRET] Effect if missing File:line
PROVIDER_NOWPAYMENTS_API_URL api https://api.nowpayments.io/v1 URL No Wrong endpoint env.dto.ts:122
PROVIDER_NOWPAYMENTS_API_KEY api string Yes Payment API auth fails env.dto.ts:125
PROVIDER_NOWPAYMENTS_IPN_KEY api string Yes Webhook validation fails env.dto.ts:128
PROVIDER_NOWPAYMENTS_CALLBACK_URL api https://localhost:4000 URL No Webhooks sent to wrong URL env.dto.ts:131
PROVIDER_NOWPAYMENTS_AUTH_CREDENTIALS api email:password:mfa Yes Auto-login for payout fails env.dto.ts:141
USE_PROXY_FOR_PAYMENT_PROVIDER api false boolean No Direct connection (no proxy) env.dto.ts:148

Slot game providers

Softswiss / BGaming

Name Services Default Format [SECRET] Effect if missing File:line
SOFTSWISS_API_LIST_GAMES api https://cdn.softswiss.net/l/ URL No Game catalog fetch fails env.dto.ts:189
SOFTSWISS_API_URL api https://casino.int.a8r.games/ URL No Game launch fails env.dto.ts:192
SOFTSWISS_API_SECRET api string Yes Request signing fails env.dto.ts:195
BGAMING_DEV_PROXY_ENABLED api false boolean No Dev proxy disabled bgaming.module.ts:15
BGAMING_DEV_PROXY_TO_URL api ngrok URL URL No Dev proxy target dev-proxy.wallet.controller.ts:23

PM8

Name Services Default Format [SECRET] Effect if missing File:line
PM8_DATA_API_URL api staging gateway URL No API calls fail env.dto.ts:260
PM8_LAUNCH_URL api staging gateway URL No Game launch fails env.dto.ts:262
PM8_PARTNER_KEY api 9o0 string No Partner mismatch env.dto.ts:264
PM8_CLIENT_ID api evoverse-9o0 string No Auth fails env.dto.ts:266
PM8_CLIENT_SECRET api string Yes Auth fails env.dto.ts:268
PM8_SIG_SECRET_KEY api string Yes Signature validation fails env.dto.ts:270
PM8_OPERATOR_LOGIN api pm8-slots string No Operator login env.dto.ts:272
PM8_OPERATOR_PASSWORD api string Yes Operator auth fails env.dto.ts:274
PM8_MAX_BET_CENT api 10000 integer No Max bet limit env.dto.ts:278
PM8_DEV_PROXY_ENABLED api false boolean No Dev proxy disabled dev-proxy.wallet.controller.ts
PM8_DEV_PROXY_TO_URL api ngrok URL URL No Dev proxy target dev-proxy.wallet.controller.ts:33

ST8

Name Services Default Format [SECRET] Effect if missing File:line
ST8_LAUNCHER_URL api URL No Game launch fails env.dto.ts:291
ST8_API_URL api URL No API calls fail env.dto.ts:295
ST8_SITE api string No Site identifier missing env.dto.ts:299
ST8_PRIVATE_KEY_FOR_ENCRYPTION api RSA PEM Yes Message encryption fails env.dto.ts:303
ST8_PUBLIC_KEY_FOR_DECRYPTION api RSA PEM No Message verification fails env.dto.ts:307
ST8_CDN_HOST api hostname No CDN URLs wrong env.dto.ts:311
ST8_OPERATOR_CODE api string No Operator identification fails env.dto.ts:315

KYC / Compliance (SumSub)

Name Services Default Format [SECRET] Effect if missing File:line
SUMSUB_APP_TOKEN api string Yes KYC verification unavailable env.dto.ts:204
SUMSUB_SECRET_KEY api string Yes API auth fails env.dto.ts:201
SUMSUB_WEBHOOK_SECRET_KEY api string Yes Webhook validation fails env.dto.ts:207

OAuth providers

Name Services Default Format [SECRET] Effect if missing File:line
GOOGLE_CLIENT_ID api string No Google OAuth login unavailable env.dto.ts:83
GOOGLE_CLIENT_SECRET api string Yes Google OAuth broken env.dto.ts:86
GOOGLE_CALLBACK_URL api http://localhost:4000/auth/google/callback URL No OAuth redirect wrong env.dto.ts:89
STEAM_WEB_API_KEY api string Yes Steam login unavailable env.dto.ts:80

GeoIP / Pricing / Support

Name Services Default Format [SECRET] Effect if missing File:line
MAXMIND_ID api 1087968 string No GeoIP lookups fail env.dto.ts:174
MAXMIND_KEY api string Yes GeoIP lookups fail env.dto.ts:177
COINGECKO_MODE api demo demo or free No Pricing API mode env.dto.ts:180
COINGECKO_API_KEY api string Yes Crypto pricing unavailable env.dto.ts:183
INTERCOM_SECRET_KEY api string Yes Intercom webhook fails env.dto.ts:171
NEXT_PUBLIC_INTERCOM_APP_ID ebit-fe gbxp7u2x string No Support widget missing fe IntercomScript/index.tsx:9

Sportsbook

Name Services Default Format [SECRET] Effect if missing File:line
SPORTSBOOK_X_BRAND api string No Sportsbook unavailable env.dto.ts:214
SPORTSBOOK_X_OPERATOR_ID api string No Sportsbook unavailable env.dto.ts:217
SPORTSBOOK_JWT_PRIVATE_KEY api RSA PEM Yes Sportsbook auth broken env.dto.ts:220
SPORTSBOOK_JWT_PUBLIC_KEY api RSA PEM No Sportsbook token verification broken env.dto.ts:223
SPORTSBOOK_CLIENT_NAME api string No Optional env.dto.ts:227
SPORTSBOOK_CLIENT_SECRET api string Yes Optional env.dto.ts:231
NEXT_PUBLIC_SPORTSBOOK_IFRAME_DOMAIN ebit-fe staging URL URL No Sportsbook iframe broken fe .example.env

Feature flags

Name Services Default Format [SECRET] Effect if missing File:line
FEATURE_FLAGS_USE_LOCAL api false boolean No Uses in-memory flags (no Unleash) env.dto.ts:26
FEATURE_FLAGS_API_URL api GitLab Unleash endpoint URL No Feature flags unavailable env.dto.ts:30
FEATURE_FLAGS_API_KEY api string Yes Feature flags unavailable env.dto.ts:34
ENABLE_SLOTS api false boolean No Slot games module not loaded env.dto.ts:247
RACE_ENABLED api false boolean No Leaderboard/race feature disabled leaderboard.controller.ts

Ports & URLs

Name Services Default Format [SECRET] Effect if missing File:line
PORT api 4000 integer No API binds to wrong port compose:166
PORT_RT rt 4001 integer No RT binds to wrong port compose:216
PORT_BJ bj 4002 integer No BJ binds to wrong port compose:263
PORT_BO bo 4003 integer No BO binds to wrong port compose:313
PORT_SPEED_ROULETTE sr 4004 integer No SR binds to wrong port compose:367
APP_BE_ORIGIN api http://localhost:4000 URL No CORS / slot redirects wrong env.dto.ts:13, compose:168
APP_FE_ORIGIN api http://localhost:3000 URL No CORS wrong env.dto.ts:16
APP_FE_ORIGIN_ADMIN api http://localhost:3001 URL No Admin CORS wrong env.dto.ts:19
NEXT_PUBLIC_API_URL ebit-fe http://localhost:4000 URL No API calls broken fe .example.env
VITE_API_URL ebit-admin-fe http://localhost:4000 URL No Admin API calls broken admin-fe .env.example, src/config/env.ts:22
VITE_FE_URL ebit-admin-fe http://localhost:3000 URL No Admin links to player FE broken admin-fe .env.example, src/config/env.ts:23
SSR_API_URL ebit-fe http://localhost:4000 URL No SSR API calls broken fe .example.env
NEXT_PUBLIC_FE_URL ebit-fe http://localhost:3000 URL No Sharing / affiliate links wrong fe .example.env
NEXT_PUBLIC_FE_URL_ADMIN ebit-fe http://localhost:3001 URL No Admin link wrong compose:409
NEXT_PUBLIC_SOCKET_CHAT_URL ebit-fe staging WS URL URL No Real-time events broken fe .example.env

Compose host-port overrides

These ${VAR:-default} variables in docker-compose.yml let operators remap host ports without editing the file:

Name Default Maps to
HOST_PORT_API 4000 ebit-api HTTP
HOST_PORT_RT 4001 ebit-rt WebSocket
HOST_PORT_BJ 4002 ebit-bj HTTP
HOST_PORT_BO 4003 ebit-bo HTTP
HOST_PORT_SPEED_ROULETTE 4004 ebit-speed-roulette HTTP
HOST_PORT_FE 3000 ebit-fe Next.js
HOST_PORT_DB 5555 Postgres
HOST_PORT_REDIS 6379 Redis cache
HOST_PORT_REDIS_BOT 6380 Redis bot
HOST_PORT_RABBIT 5672 RabbitMQ AMQP
HOST_PORT_RABBIT_UI 15672 RabbitMQ management UI
HOST_PORT_JAEGER_UI 16686 Jaeger UI
HOST_PORT_OTEL_OTLP_HTTP 4318 OTel Collector OTLP/HTTP
HOST_PORT_OTEL_OTLP_GRPC 4317 OTel Collector OTLP/gRPC
HOST_PORT_OTEL_PROM 8889 OTel Collector Prometheus scrape
HOST_PORT_OTEL_HEALTH 13133 OTel Collector healthcheck
HOST_PORT_PROMETHEUS 9090 Prometheus UI
HOST_PORT_LOKI 3100 Loki push API
HOST_PORT_GRAFANA 3003 Grafana UI

Logging & debug

Name Services Default Format [SECRET] Effect if missing File:line
NODE_ENV all local, development, staging, production No Controls isLocal checks, Sentry, email bypass env.dto.ts:22, utils.ts:7
DEFAULT_LOG_LEVEL api, rt debug (local) / log (prod) pino level No Log verbosity env.dto.ts:45
DEBUG_LOGS_PRETTY api, rt, bj, bo, sr false boolean No Pretty-print JSON logs app.module.ts:108
DEBUG_LOG_DECORATOR all NestJS false boolean No Request/response decorator logging utils.ts:25
DEBUG_MODE all NestJS false boolean No Prisma query logging prisma.service.ts:40
DEBUG_NETWORK_DEVTOOLS ebit-fe false boolean No Node.js inspector on port 5270 fe next.config.js:8
DEBUG_SOCKET_IO_ADMIN rt false boolean No Socket.IO admin UI gateway module
DEBUG_SOCKET_IO_CREDENTIALS rt admin:${randomUUID()} user:pass No Socket.IO admin credentials gateway module
DEBUG_SEED_LOCAL api (seed) false boolean No Create demo user on seed seed/index.ts:42, compose:132
DEBUG_SEED_TEST api (seed) false boolean No Create test data on seed seed/index.ts:51
ADMIN_DEFAULT_PASSWORD api (seed) admin string Yes Admin user password on seed seed/admin.ts:7, compose:133

WebSocket throttling

Name Services Default Format [SECRET] Effect if missing File:line
WS_THROTTLER_DISABLE api, rt false boolean No Rate limiting disabled ws-throttler.module.ts:11
WS_THROTTLER_TTL api, rt 60000 ms No Throttle window ws-throttler.module.ts:15
WS_THROTTLER_LIMIT api, rt 120 integer No Max msgs per window ws-throttler.module.ts:16
WS_THROTTLER_BLOCK_DURATION api, rt 600000 ms No Block duration after exceeding limit ws-throttler.module.ts:18
MAX_CONNECTIONS_PER_IP api, rt 10 integer No Max concurrent WS connections per IP ws-throttler/const.ts:4

File upload

Name Services Default Format [SECRET] Effect if missing File:line
BUCKET_NAME api development string No S3 bucket name env.dto.ts:92
FILE_UPLOAD_MAX_FILE_SIZE_KB api 4096 integer No Max upload size env.dto.ts:95
FILE_UPLOAD_NAME_PREFIX api development string No S3 object prefix upload-const.utils.ts:28
FILESTACK_API_KEY api string Yes Upload service auth .example.env:16

Miscellaneous

Name Services Default Format [SECRET] Effect if missing File:line
EXP_MULTIPLIER api 1 decimal No XP multiplier env.dto.ts:198
WITHDRAW_WAGER_MULTIPLIER api 2 decimal No Wager requirement multiplier env.dto.ts:211
TELEGRAM_BOT_API_KEY api string Yes Telegram notifications broken env.dto.ts:251
MAINTENANCE_API_TOKEN api string Yes Maintenance mode toggle token env.dto.ts
TMT_POSTBACK_SERVER api http://150.241.95.217 URL No TMT callback URL env.dto.ts:281
XMR_POSTBACK_SERVER api URL No XMR callback URL env.dto.ts:284
QUOTAGUARDSTATIC_URL api URL Yes Static proxy for outbound calls .example.env:18
HTTPS_PROXY api URL Yes HTTPS proxy .example.env:19