Minimal uptime monitor with a public status page, admin dashboard, incidents, and SSE live updates.
- Public status page with live monitor data and incidents
- Admin dashboard to manage monitors and incidents
- Settings page for branding text on the status page
- SQLite storage (easy to run anywhere)
- SSE stream for real-time status updates
docker pull mzulfanw/upwatch:latest
docker run -d \
-e ADMIN_USER=admin \
-e ADMIN_PASSWORD=admin \
-p 8080:8080 \
mzulfanw/upwatch:latestDefault port is 8080. Open:
http://localhost:8080/(public status)http://localhost:8080/login(admin login)
docker build -t upwatch .
docker run -d \
-e ADMIN_USER=admin \
-e ADMIN_PASSWORD=admin \
-p 8080:8080 \
upwatchdocker compose up -dMake sure .env exists (see .env.example).
Environment variables:
PORT(default8080)DB_PATH(defaultdata/upwatch.db)ADMIN_USER(required)ADMIN_PASSWORD(required)SESSION_TTL(default24h)SMTP_HOST(optional, enable email notifications)SMTP_PORT(default587)SMTP_USERNAMESMTP_PASSWORDSMTP_FROM(defaults toSMTP_USERNAME)SMTP_TO(comma-separated list)
Email notifications trigger when a monitor goes down and when it recovers.
Open http://localhost:8080/settings after login to update:
- Brand name
- Tagline
- Status headline
- Status subtitle
Changes apply to the public status page automatically.
SQLite is stored at DB_PATH. For Docker, mount a volume:
docker run -d \
-e ADMIN_USER=admin \
-e ADMIN_PASSWORD=admin \
-v $(pwd)/data:/data \
-e DB_PATH=/data/upwatch.db \
-p 8080:8080 \
mzulfanw/upwatch:latestgo run ./cmd- Static assets are served from
/assets(seeassets/upwatch.png). - SSE endpoint:
/api/status/stream.
