NODE_ENV=production comingsoon=TRUE PORT=3010 API_UPSTREAM=http://127.0.0.1:6000 PUBLIC_ORIGIN=https://example.com BACKEND_PORT=6000 TSS_BATTLES_DB=./tss_battles.db TSS_TEAMS_DB=./tss_teams.db UPTIME_STORAGE_DIR=~/tsswebstorage UPTIME_DATABASE_FILE=uptime.sqlite UPTIME_SAMPLE_INTERVAL_MS=1800000 UPTIME_HISTORY_LIMIT=336 ANALYTICS_DATABASE_FILE=viewers.sqlite ANALYTICS_RETENTION_DAYS=30 ANALYTICS_ACTIVE_WINDOW_SECONDS=75 # Last.fm song of the day. Picks one non-repeated daily track from the configured user's last 7 days. LASTFM_API_KEY= LASTFM_USERNAME= LASTFM_HISTORY_FILE=lastfm-song-of-day.json API_CACHE_TTL_MS=15000 API_RATE_LIMIT_WINDOW_MS=60000 API_RATE_LIMIT_MAX=120 # Proxy trust. Set to "cloudflare" when the app is fronted by Cloudflare (possibly via nginx). # "generic" trusts X-Forwarded-* without CF-specific headers. "none" ignores all proxy headers. # Only honors trusted headers when the immediate TCP peer is in TRUSTED_UPSTREAM_IPS. TRUST_PROXY=cloudflare TRUSTED_UPSTREAM_IPS=127.0.0.1,::1,::ffff:127.0.0.1 WEBHOOK_PORT=3011 GITHUB_WEBHOOK_SECRET=change-me # Comma-separated refs allowed to trigger a deploy. Defaults to refs/heads/main. GITHUB_WEBHOOK_REFS=refs/heads/main # Optional: refuse pushes whose repository.full_name does not match (e.g. "owner/repo"). GITHUB_WEBHOOK_REPOSITORY= PM2_RESTART_TARGETS=tssbot-web,tssbot-backend DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/... # Set to "true" only if the Discord channel is private. Default omits the patch preview DISCORD_INCLUDE_PATCH=true # Cloudflare Turnstile. VITE_TURNSTILE_SITE_KEY is the public site key baked into the client bundle by Vite. # TURNSTILE_SECRET_KEY is the server-only secret used to call the Siteverify endpoint. VITE_TURNSTILE_SITE_KEY= TURNSTILE_SECRET_KEY=