# Public site origin used for SEO metadata, sitemap, and robots.txt. BASE_URL=https://guide.sudloh.com # Public AdSense publisher client ID. Leave unset to disable ads locally. NEXT_PUBLIC_GOOGLE_ADSENSE_CLIENT_ID=ca-pub-9687404323559597 # PostgreSQL DATABASE_URL=postgresql://buzz_sheet:replace-me@postgres.example.internal:5432/buzz_sheet?sslmode=require DATABASE_POOL_SIZE=10 # Better Auth email/password administrator and customer login BETTER_AUTH_URL=http://localhost:3000 BETTER_AUTH_SECRET=replace-with-at-least-32-random-bytes # Separate trusted browser origins with commas for local development or proxies. BETTER_AUTH_TRUSTED_ORIGINS=http://localhost:3000 # Cloudflare Turnstile login and public registration protection TURNSTILE_SITE_KEY=replace-with-turnstile-site-key TURNSTILE_SECRET_KEY=replace-with-turnstile-secret-key # Redis remote cache, event transport, and outbox worker REDIS_URL=rediss://default:replace-me@redis.example.internal:6379 REDIS_CACHE_PREFIX=buzz:next-cache REDIS_EVENT_PREFIX=buzz:events REDIS_PRESENCE_PREFIX=buzz:presence REDIS_SECURITY_PREFIX=buzz:security REDIS_CACHE_MAX_ENTRY_BYTES=5242880 OUTBOX_BATCH_SIZE=20 OUTBOX_POLL_MS=1000 OUTBOX_LEASE_MS=30000 CATALOG_SYNC_CONCURRENCY=12 # Discord-triggered Lunaris catalog sync DISCORD_BOT_TOKEN=replace-with-discord-bot-token DISCORD_CHANNEL_ID=replace-with-private-channel-id DISCORD_LOG_CHANNEL_ID=1547193755772125184 COMMISSION_DISCORD_WEBHOOK_URL=replace-with-commission-discord-webhook-url # Generate a stable pair with: bunx web-push generate-vapid-keys --json WEB_PUSH_PUBLIC_KEY=replace-with-vapid-public-key WEB_PUSH_PRIVATE_KEY=replace-with-vapid-private-key WEB_PUSH_SUBJECT=mailto:admin@example.com # S3-compatible media storage; guide and commission uploads use public CDN objects. S3_ENDPOINT=https://s3.example.internal S3_PUBLIC_URL=https://buzz-cdn.astrxl.dev S3_REGION=auto S3_BUCKET=buzz-sheet-media S3_ACCESS_KEY_ID=replace-with-access-key S3_SECRET_ACCESS_KEY=replace-with-secret-key S3_VIRTUAL_HOSTED_STYLE=false # Commission payment. Use the recipient number format accepted by Slip2Go. COMMISSION_PROMPTPAY_TYPE=mobile COMMISSION_PROMPTPAY_VALUE=0812345678 COMMISSION_RECEIVER_ACCOUNT_NUMBER=0812345678 # Use the complete verification URL supplied by your Slip2Go API Connect account. SLIP2GO_VERIFY_URL=https://your-slip2go-api-host/api/verify-slip/qr-image/info SLIP2GO_API_SECRET=replace-with-slip2go-secret # Stable across replicas. Generate once and store only in the external secret. NEXT_SERVER_ACTIONS_ENCRYPTION_KEY=replace-with-a-stable-32-byte-base64-key # Set to the immutable image revision for version-skew protection. NEXT_DEPLOYMENT_ID=local-development # Shared with CI to authenticate deployment lifecycle notifications. DEPLOYMENT_WEBHOOK_SECRET=replace-with-a-strong-random-secret # Readiness dependency timeout. HEALTHCHECK_TIMEOUT_MS=2500 # Set only when Traefik overwrites this header and direct pod ingress is denied. TRUSTED_CLIENT_IP_HEADER=