Configuration Reference
All services are configured via environment variables. No configuration files.
Error Tracker
| Variable | Required | Default | Description |
API_KEY | Yes | – | API key for authentication |
DATABASE_PATH | No | ./data/errors.db | SQLite database path |
LOG_LEVEL | No | info | error, warn, info, debug |
RETENTION_DAYS | No | 90 | Days before resolved errors are deleted |
POSTMARK_API_TOKEN | No | – | Postmark token for email alerts |
POSTMARK_FROM_EMAIL | No | – | Sender email for alerts |
ALERT_EMAILS | No | – | Comma-separated alert recipients |
Log Viewer
| Variable | Required | Default | Description |
API_KEY | Yes | – | API key for authentication |
DATABASE_PATH | No | ./data/logs.db | SQLite database path |
CONTAINERS | No | (empty = all) | Comma-separated container names to monitor |
LOG_SOURCES | No | /var/lib/docker/containers | Docker containers directory |
MAX_ENTRIES | No | 100000 | Max log entries (ring buffer) |
POLL_INTERVAL | No | 2 | Seconds between log file polls |
TAIL_BUFFER | No | 65536 | Bytes to read from file end on first run |
LOG_LEVEL | No | info | error, warn, info, debug |
Metrics Collector
| Variable | Required | Default | Description |
API_KEY | Yes | – | API key for authentication |
DATABASE_PATH | No | ./data/metrics.db | SQLite database path |
RETENTION_RAW | No | 1 | Hours to keep raw data |
RETENTION_MINUTE | No | 24 | Hours to keep minute aggregates |
RETENTION_HOURLY | No | 30 | Days to keep hourly aggregates |
AGGREGATION_INTERVAL | No | 60 | Seconds between aggregation runs |
LOG_LEVEL | No | info | error, warn, info, debug |
Browser Relay
| Variable | Required | Default | Description |
ADMIN_API_KEY | Yes | – | API key for admin endpoints |
ERROR_TRACKER_URL | Yes | – | Internal error tracker URL |
ERROR_TRACKER_API_KEY | Yes | – | Error tracker API key |
METRICS_COLLECTOR_URL | Yes | – | Internal metrics collector URL |
METRICS_COLLECTOR_API_KEY | Yes | – | Metrics collector API key |
DATABASE_PATH | No | ./data/browser-relay.db | SQLite database path |
CORS_ORIGINS | No | – | Comma-separated allowed origins |
MAX_BODY_SIZE | No | 65536 | Max request body in bytes |
RATE_LIMIT | No | 300 | Requests per minute per key |
RETENTION_DAYS | No | 90 | Days to keep source maps |
LOG_LEVEL | No | info | error, warn, info, debug |
secrets.env template
# Required - generate with: openssl rand -hex 16
ERROR_TRACKER_API_KEY=<random-32-char-string>
LOG_VIEWER_API_KEY=<random-32-char-string>
METRICS_COLLECTOR_API_KEY=<random-32-char-string>
BROWSER_RELAY_ADMIN_API_KEY=<random-32-char-string>
# Optional
# CORS_ORIGINS=https://yourdomain.com,https://www.yourdomain.com
# CONTAINERS=my_app,my_worker
# LOG_LEVEL=info
# Email alerts (optional)
# POSTMARK_API_TOKEN=
# POSTMARK_FROM_EMAIL=errors@example.com
# ALERT_EMAILS=admin@example.com