Self-hosted uptime monitoring by Project Helena. Single binary, no external dependencies.
docker run -d -p 9090:9090 \
-v warden_data:/data \
ghcr.io/projecthelena/warden:latestOpen http://localhost:9090 and create your admin account.
| Variable | Default | Description |
|---|---|---|
LISTEN_ADDR |
:9090 |
Port Warden listens on. Change it if 9090 is already taken. |
DB_TYPE |
sqlite |
sqlite or postgres. Warden uses SQLite by default — no setup needed. Set to postgres if you want to use PostgreSQL. Takes precedence over DB_URL auto-detection. |
DB_PATH |
/data/warden.db |
Where the SQLite database file is stored. Only matters when using SQLite. |
DB_URL |
— | PostgreSQL connection string (e.g. postgres://user:pass@host:5432/warden). Setting this automatically switches to PostgreSQL. |
COOKIE_SECURE |
false |
Set true if you serve Warden over HTTPS. Tells browsers to only send login cookies over secure connections, preventing them from leaking on plain HTTP. |
TRUST_PROXY |
false |
Set true if Warden runs behind a reverse proxy (nginx, Traefik, Caddy). Lets Warden see users' real IPs for rate limiting. Leave false if Warden is exposed directly — otherwise anyone can fake their IP. |
ADMIN_SECRET |
— | For development and testing only. Enables the database reset endpoint and disables rate limits. Do not set in production. |
Ready-to-use compose files in deploy/:
- SQLite — simplest, no extra services
- PostgreSQL — for larger deployments
See the docs/ folder for detailed guides:
- API — REST API and Swagger docs
- Database — SQLite vs PostgreSQL configuration
- Load Testing (coming soon)
AGPL-3.0 — Project Helena
