Files
events-hub/backend/.env.example
joshuaandClaude Opus 5.5 e72330893a Hub v1: install API, licences, health dashboard, alerts
- Protocol 1 (docs/hub-protocol.md): public key, register, signed heartbeats
- Ed25519 licence tokens (30-day validity, status, expiry, grace, limits)
- Dashboard: installs, install detail, customers and licences, alerts,
  settings and audit log; two-factor login required
- Alert checks every 5 minutes, emailed once; heartbeat roll-up after 30 days
- Unit tests for encryption, tokens, signatures, TOTP and alert rules

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012mt6TCv85T9VKRq3cV7rXq
2026-10-26 12:12:51 +02:00

32 lines
1.3 KiB
Bash

# ─── Hope 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