Quickstart

Run oo-workers, the open-source self-hosted ObserveOne engine, with one docker compose up. Eight probe types, a scheduler, and an admin UI on your own infrastructure.

oo-workers is the open-source, self-hosted slice of ObserveOne: the monitoring engine, the scheduler, and a minimal admin UI. It runs eight probe types (HTTP uptime, API checks, full Playwright browser tests, TCP and UDP probes, database liveness, TLS certificate checks, and heartbeats) and starts with a single docker compose up. Licensed Apache-2.0.

Run it#

git clone https://github.com/Observeone1/oo-workers.git
cd oo-workers
./scripts/setup.sh # writes .env with random Postgres + Redis passwords
docker compose up -d

This pulls the prebuilt observeone/oo-workers:latest image from Docker Hub. To build from source instead, run docker compose -f docker-compose.build.yml up -d.

Five containers boot: worker (queue consumers and scheduler), ui (HTTP API and dashboard), postgres, redis, and rustfs (S3-compatible object storage for browser-test scripts and run artifacts). Schema migrations run automatically on first boot.

First login#

Open http://localhost:3001. On first visit a setup wizard asks you to create an admin account with an email and password; after that it is a normal email/password login. Click + Add monitor to create your first check.

The UI port binds to 127.0.0.1 by default. Put it behind TLS and a reverse proxy before exposing it publicly. The docker-compose.tls.yml overlay adds Caddy with Let's Encrypt certificates for that.

Compose files#

FileWhen to use
docker-compose.ymlDefault self-host stack (worker, UI, Postgres, Redis, RustFS).
docker-compose.build.ymlBuild the image from source instead of pulling from Docker Hub.
docker-compose.agent.ymlStart a regional agent for multi-region probing.
docker-compose.tls.ymlCaddy TLS termination via Let's Encrypt.
docker-compose.dev.ymlContributor dev setup (Postgres and Redis only).

Programmatic access#

For the CLI, regional agents, or CI, mint API keys in the dashboard under Settings → API keys, or from the shell:

docker compose exec worker bun scripts/create-api-key.ts --name ci

Send the printed oo_… key as Authorization: Bearer oo_….

Was this page helpful?