24observe
checking… Sign in Start free
Self-host

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.

Five-minute quickstart

Clone. Env. Up. Migrate. Go.

01 · Clone
git clone https://github.com/vikasswaminh/observe24.git && cd observe24
02 · Generate secrets
cat > .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
03 · Build
docker compose build
04 · Bring up data stores
docker compose up -d postgres redis clickhouse — wait for healthy.
05 · Migrate
docker compose exec -T postgres psql -U upstat -d upstat < packages/db/drizzle/0000_*.sql
06 · Start everything
docker compose up -d
07 · Register
curl -X POST http://localhost/api/v1/auth/register \ -H 'content-type: application/json' \ -d '{"email":"you@example.com","password":"secretLongEnough"}'
08 · First monitor
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}'
What you get on port 80

The whole stack, behind one reverse proxy.

API + APP

Fastify on :3000 · behind Caddy on :80

REST API, OpenAPI spec at /openapi.json, Swagger UI at /docs, Prometheus at /metrics.

OBSERVABILITY

Grafana :3002 · Prometheus :9090 · Loki :3100

Grafana comes with Prometheus and Loki datasources pre-wired. Your monitoring tool is itself fully observed.

DATA STORES

Postgres 16 · ClickHouse 24 · Redis 7

Postgres for entities, ClickHouse for time-series check results (90-day TTL), Redis for BullMQ queues and JWT revocation.

BACKUPS

pg_dump cron · 7-day retention

Daily dump at 02:30 UTC to a dedicated Docker volume. Gzipped. Rotated. Nothing you have to remember.

System requirements

One modest VPS is enough.

CPU
2 cores (4 recommended)
RAM
4 GB (8 GB recommended)
Disk
20 GB (90-day ClickHouse TTL dominates usage)
OS
Any Linux with Docker Engine 20+ and Compose v2
Ports
80 and 443 outbound (for ACME if you enable TLS); inbound as you prefer
Network
Outbound HTTPS to the endpoints you monitor; that's it

If we vanish tomorrow, your monitors keep watching.

MIT licensed. Your DB, your backups, your domain. Sovereignty is the default.