# ─── Cross Events Hub — backend ──────────────────────────────────────────────── PORT=5200 DATABASE_URL=postgresql://postgres:password@localhost:5432/events_hub # Where the Hub's dashboard runs (CORS, links in alert emails) FRONTEND_URL=http://localhost:3200 # Signs admin login sessions. Long random string. JWT_SECRET=change-me # Encrypts install secrets and two-factor secrets. 32+ random characters; never change it # once installs are registered (their secrets couldn't be read any more). HUB_ENCRYPTION_KEY=change-me-to-32-or-more-random-characters # Licence signing key (Ed25519, PEM). Create with `npm run generate-keys`. Keep the private # key only on the Hub server and back it up: losing it means every install needs a new # release with the new public key. Either a file path or the PEM itself (\n for newlines). HUB_SIGNING_KEY_FILE=./keys/hub-signing-key.pem # HUB_SIGNING_KEY= # Behind a reverse proxy (nginx), so rate limits see real client IPs TRUST_PROXY=1 # Alert emails (install offline, backups failing, disk low, licences expiring) SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASS= SMTP_FROM=hub@crosscode.co.za ALERT_EMAIL= # Background checks (alerts, heartbeat roll-up). false to switch off. JOBS_ENABLED=true