Configuration
Authentication
Section titled “Authentication”Either ADMIN_API_KEY or AUTH0_DOMAIN must be set.
| Variable | Description | Example |
|---|---|---|
ADMIN_API_KEY | Bootstrap admin API key (enables API-key-only mode) | pong_mykey |
AUTH0_DOMAIN | Auth0 tenant domain (optional, for hosted service) | your-tenant.us.auth0.com |
AUTH0_AUDIENCE | Auth0 API identifier (required if AUTH0_DOMAIN is set) | https://your-api-identifier |
For self-hosted deployments, ADMIN_API_KEY is the simplest option — no Auth0 setup needed.
Optional
Section titled “Optional”| Variable | Description | Default |
|---|---|---|
BASE_URL | Public URL for email verification links | http://localhost:8080 |
PORT | HTTP server port | 8080 |
DATABASE_PATH | Path to SQLite database | data/ghm.db |
WORKER_COUNT | Number of concurrent check workers | 20 |
CHECK_TICK_SECONDS | Scheduler tick interval | 1 |
RETENTION_DAYS | Days to keep check results and alert logs | 90 |
ENFORCE_PLAN_LIMITS | Enable plan-based resource limits | false |
REQUIRE_EMAIL_VERIFICATION | Require email contacts to verify before receiving alerts | false |
Encryption
Section titled “Encryption”| Variable | Description | Default |
|---|---|---|
ENCRYPTION_KEY | 64-character hex string (32 bytes) for AES-256-GCM encryption of monitor credentials | (not set) |
Generate a key:
openssl rand -hex 32Required if you want to use HTTP authentication (Basic Auth or custom headers) on monitors. Credentials are encrypted at rest in the database and only decrypted when running checks.
Email (SMTP)
Section titled “Email (SMTP)”| Variable | Description |
|---|---|
SMTP_HOST | SMTP server hostname |
SMTP_PORT | SMTP server port (typically 587) |
SMTP_USER | SMTP username |
SMTP_PASS | SMTP password |
SMTP_FROM | Sender email address |
SMTP_FROM_NOREPLY | Sender address for verification emails (falls back to SMTP_FROM if not set) |
All SMTP variables are optional. If not set, email alerts will fail silently.
Example .env
Section titled “Example .env”ADMIN_API_KEY=pong_mykeyBASE_URL=https://your-domain.comPORT=8080DATABASE_PATH=data/ghm.dbWORKER_COUNT=20CHECK_TICK_SECONDS=1RETENTION_DAYS=90# ENCRYPTION_KEY=your-64-char-hex-key# SMTP_HOST=smtp.example.com# SMTP_PORT=587# SMTP_USER=your-smtp-user# SMTP_PASS=your-smtp-password# SMTP_FROM=alerts@yourdomain.com# SMTP_FROM_NOREPLY=noreply@yourdomain.com