Quick Start
This page gets Observer Lite running with Docker, then walks through the first login and first monitor.
Requirements
- Docker Engine 24+ or Docker Desktop
- A host port for the web UI, usually
3000 - A persistent volume for
/data - A long random
SECRET_KEY
Generate a secret:
openssl rand -hex 32
Run With Docker
docker run -d \
--name observer-lite \
--restart unless-stopped \
-p 3000:3000 \
-v observer_data:/data \
-e SECRET_KEY="$(openssl rand -hex 32)" \
-e DATABASE_PATH="/data/observer.db" \
-e DATABASE_URL="sqlite+aiosqlite:////data/observer.db" \
ghcr.io/cagatayuresin/observer-lite:latest
Open http://localhost:3000.
Default credentials:
| Field | Value |
|---|---|
| Username | admin |
| Password | admin |
You will be asked to set a new password immediately.
Run With Docker Compose
Create docker-compose.yml:
services:
observer-lite:
image: ghcr.io/cagatayuresin/observer-lite:latest
container_name: observer-lite
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- observer_data:/data
environment:
PORT: "3000"
SECRET_KEY: "replace-with-a-long-random-secret"
DATABASE_PATH: "/data/observer.db"
DATABASE_URL: "sqlite+aiosqlite:////data/observer.db"
volumes:
observer_data:
Start it:
docker compose up -d
View logs:
docker compose logs -f observer-lite
Create Your First HTTP Monitor
- Log in to the dashboard.
- Open Monitors.
- Choose Create Monitor.
- Use these values:
| Field | Example |
|---|---|
| Name | Website homepage |
| Type | HTTP GET |
| URL | https://example.com |
| Interval | 60 seconds |
| Timeout | 10 seconds |
| Expected status | 2xx |
Save the monitor. The scheduler will start checking it automatically.
Create a Notification Channel
- Open Notifications.
- Add an email or Telegram channel.
- Use the Test action before assigning it to production monitors.
- Assign the channel to a monitor and choose which events should notify:
- Down
- Recovery
- SSL warning
Verify the Container
Check that the app responds:
curl -fsS http://localhost:3000/api/docs >/dev/null
Check the image version label:
docker image inspect ghcr.io/cagatayuresin/observer-lite:latest \
--format '{{ index .Config.Labels "org.opencontainers.image.version" }}'
Stop and Remove
docker rm -f observer-lite
Remove the data volume only when you intentionally want to delete all persisted data:
docker volume rm observer_data