docker compose up. That's it.Everything is in the repo. Postgres, ClickHouse, Redis, Prometheus, Grafana, Loki, Caddy, Promtail, pg_dump cron — all wired, all health-checked, all yours.
git clone https://github.com/vikasswaminh/observe24.git && cd observe24cat > .env <<EOF
JWT_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 16)
POSTGRES_PASSWORD=$(openssl rand -hex 20)
CLICKHOUSE_PASSWORD=$(openssl rand -hex 20)
EOF
chmod 600 .env docker compose builddocker compose up -d postgres redis clickhouse — wait for healthy.docker compose exec -T postgres psql -U upstat -d upstat < packages/db/drizzle/0000_*.sqldocker compose up -dcurl -X POST http://localhost/api/v1/auth/register \
-H 'content-type: application/json' \
-d '{"email":"you@example.com","password":"secretLongEnough"}' curl -X POST http://localhost/api/v1/monitors \
-H 'authorization: Bearer $TOKEN' \
-H 'content-type: application/json' \
-d '{"name":"Site","url":"https://example.com","type":"https","intervalSec":60,"timeoutMs":10000}' REST API, OpenAPI spec at /openapi.json, Swagger UI at /docs, Prometheus at /metrics.
Grafana comes with Prometheus and Loki datasources pre-wired. Your monitoring tool is itself fully observed.
Postgres for entities, ClickHouse for time-series check results (90-day TTL), Redis for BullMQ queues and JWT revocation.
Daily dump at 02:30 UTC to a dedicated Docker volume. Gzipped. Rotated. Nothing you have to remember.
MIT licensed. Your DB, your backups, your domain. Sovereignty is the default.