Getting started

Run PingBoard in one container and have your first monitor live in under a minute.

PingBoard ships as a single Docker image with an embedded SQLite database. One container, one volume, one port — no Redis, no queue, no external database.

Run it

With docker run:

docker run -d --restart=always \
  -p 3000:3000 \
  -v pingboard:/data \
  --name pingboard \
  ghcr.io/steiner-co/pingboard:latest

Or with Docker Compose (clone the repo, then):

docker compose up -d

All configuration is optional — no environment variables are required to boot. See Self-hosting when you're ready to set a public URL, change the port, or put PingBoard behind a reverse proxy.

First run

  1. Open http://localhost:3000.
  2. You're prompted to create the admin account — email and a password of at least 8 characters. Setup is one-shot: once the first account exists, the setup screen is gone.
  3. Click Add monitor, pick a type (HTTP(S) is the common one), paste a target URL, and save. The first check runs immediately.

That's it — you're monitoring. From here the dashboard updates live over Server-Sent Events, with no polling and no page refreshes.

Where next

  • Monitors — intervals, timeouts, retries, tags, pausing, and per-monitor alert routing.
  • Monitor types — what each of the 7 check types actually verifies and how to configure it.
  • Notifications — wire up email, webhooks, Discord, Slack, or ntfy so downs reach you.
  • Status pages — publish a public page at /your-slug.
  • API tokens and the CLI — script PingBoard instead of clicking it.
  • MCP server — query and control your monitors from Claude, Cursor, or any MCP client.
Edit on GitHub·Found an issue? Open a PR.