- 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
32 lines
1.3 KiB
Bash
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
|