Checkmate
Self-hosted uptime and infrastructure monitor with status pages and team roles

Our verdict
Tied #3 of 4 in Self-hosted uptime monitors · If you also watch server resources
Pros
- Server resource monitoring alongside uptime
- Separate logins with User, Admin and Superadmin roles
Cons
- Requires MongoDB, a separate database server
- Sends an anonymous usage report once a day unless you set
TELEMETRY_ENABLED=false - OpenID Connect sign-in is a feature request, not a documented feature
Who should skip:Anyone running it on a machine with less than 1 GB of memory.
Rankings and alternatives
- Tied #3 of 4 Self-hosted uptime monitors If you also watch server resources
- Uptime Kuma #1 Best for most self-hosters
- Kener #2 If customers read your status page
- Gatus Tied #3 If your monitors live in Git
Self-hosted uptime monitors scores
Evaluated Nov 7, 2026 Evidence ↓- Components to run 3
3/5 means: The app plus one required service, such as a database server or a cache
Two services are needed, the application and MongoDB, which is not embedded in the image.
- What it can check 4
4/5 means: Eight of the nine
HTTP with SSL certificate expiry, ping, port, DNS, Docker, heartbeat monitors for cron jobs, and CPU, memory and disk through the Capture agent make eight of the nine. Database queries are not listed.
Rests partly on what the sources don't mention, which is a weaker signal than what they say.
- Fastest check interval 5
5/5 means: 15 seconds or less
The interval dropdown starts at 15 seconds, and the documentation says the server accepts any interval.
- Alert channels 3
3/5 means: 10 to 24
The README lists 13 notification types, from e-mail and webhooks to Twilio SMS.
- Public status pages 2
2/5 means: Two of the five
Each status page gets its own URL and can be served on its own domain. Maintenance windows are documented as suppressing notifications, and incident notices on the page and visitor subscriptions are not documented.
Rests partly on what the sources don't mention, which is a weaker signal than what they say.
- Ways to manage monitors 4
4/5 means: Four of the five
Monitors are created in the web interface or through the API, imported from a JSON file and exported to one. No configuration file for monitors is documented.
- Sign-in and users 3
3/5 means: Two of the four
A login and three user roles are documented. Single sign-on through OpenID Connect is a feature request, and two-factor login is not documented.
- Getting data out 2
2/5 means: One of the four
A REST API with a Swagger reference is documented, but it uses login tokens rather than separate API keys. Prometheus metrics per monitor and badges are not documented.
Rests partly on what the sources don't mention, which is a weaker signal than what they say.
- Database choices 1
1/5 means: Only one kind of database, which runs as a separate server
Checkmate uses MongoDB, which runs as a separate service.
Evidence and sources
Self-hosted uptime monitors scores
Components to run 2 quotes
-
“It serves the React frontend from the API server, so only two services are needed: the application and MongoDB.”
checkmate.so/docs/getting-started/installation · checked -
“MongoDB is not embedded in the image and remains required.”
checkmate.so/docs/getting-started/installation · checked
What it can check 4 quotes
-
“It watches HTTP endpoints, ping/TCP targets, DNS records, Docker containers, gRPC and WebSocket services, game servers, PageSpeed scores, and machine-level metrics from the Capture agent, then sends alerts to email, Slack, Discord, Teams, Telegram, Twilio SMS, Matrix, PagerDuty, Rocket.Chat, Pushover, ntfy, or a webhook of your choice.”
checkmate.so/docs/getting-started/what-is-checkmate · checked -
“Heartbeat monitors for cron jobs, backups and other scheduled tasks”
github.com/bluewave-labs/checkmate · checked -
“Several monitoring options: HTTP (with SSL certificate expiry), Ping, Port, DNS, Docker, gRPC, WebSocket, Game server”
github.com/bluewave-labs/checkmate · checked -
“Infrastructure monitoring (memory, disk usage, CPU performance, network etc) - requires Capture agent”
github.com/bluewave-labs/checkmate · checked
Fastest check interval 3 quotes
-
“the server accepts any interval, the limit is purely the client-side dropdown.”
checkmate.so/docs/uptime-monitoring/intervals-timing · checked -
“The interval dropdown is the same for every monitor type”
checkmate.so/docs/uptime-monitoring/intervals-timing · checked -
“15 seconds”
checkmate.so/docs/uptime-monitoring/intervals-timing · checked
Alert channels 1 quote
-
“E-mail, Webhooks, Discord, Slack, PagerDuty, Matrix, Rocket.Chat, Microsoft Teams, Telegram, Pushover, ntfy, SignalGrid, Twilio (SMS) notifications”
github.com/bluewave-labs/checkmate · checked
Public status pages 3 quotes
-
“Since v3.9.1 a published status page can live on your own domain, e.g. status.example.com”
checkmate.so/docs/status-pages/sharing · checked -
“Each status page has a unique URL based on the slug you configured.”
checkmate.so/docs/status-pages/sharing · checked -
“A maintenance window suppresses notifications for one or more monitors during a scheduled time range.”
checkmate.so/docs/maintenance/creating-maintenance · checked
Ways to manage monitors 4 quotes
-
“Create a monitor (admin+)”
checkmate.so/docs/getting-started/api-reference · checked -
“Checkmate serves an interactive Swagger UI from every running server.”
checkmate.so/docs/getting-started/api-reference · checked -
“Checkmate imports monitors from a JSON file.”
checkmate.so/docs/uptime-monitoring/bulk-import · checked -
“The export downloads a JSON file with the configuration of every monitor in your team.”
checkmate.so/docs/settings/export-monitors · checked
Sign-in and users 3 quotes
-
“Checkmate has three roles: User, Admin, and Superadmin.”
checkmate.so/docs/getting-started/roles-permissions · checked -
“Every endpoint except registration, login, and invite acceptance requires a JWT bearer token:”
checkmate.so/docs/getting-started/api-reference · checked -
“Feature Request: Add OIDC authentication”
github.com/bluewave-labs/checkmate/issues/1689 · checked
Getting data out 3 quotes
-
“Checkmate serves an interactive Swagger UI from every running server.”
checkmate.so/docs/getting-started/api-reference · checked -
“Every endpoint except registration, login, and invite acceptance requires a JWT bearer token:”
checkmate.so/docs/getting-started/api-reference · checked -
“Tokens come from POST /api/v1/auth/login.”
checkmate.so/docs/getting-started/api-reference · checked
Database choices 2 quotes
-
“MongoDB is not embedded in the image and remains required.”
checkmate.so/docs/getting-started/installation · checked -
“Checkmate uses MongoDB, which supports two compression methods”
checkmate.so/docs/getting-started/server-requirements · checked
Facts
License 1 quote
-
“GNU AFFERO GENERAL PUBLIC LICENSE”
github.com/bluewave-labs/checkmate/blob/develop/LICENSE · checked
Runs on 1 quote
-
“The image is multi-arch (linux/amd64 and linux/arm64), so the same tag works on x86 servers, Apple Silicon, and ARM devices such as a Raspberry Pi 4/5.”
checkmate.so/docs/getting-started/installation · checked
Needs 1 quote
-
“MongoDB is not embedded in the image and remains required.”
checkmate.so/docs/getting-started/installation · checked
Other quotes
Not cited by a score or fact 14 quotes
-
“Any Linux VPS with 1+ GB RAM”
checkmate.so/docs/getting-started/server-requirements · checked -
“Geo checks run a monitor's request from multiple locations in addition to the Checkmate server.”
checkmate.so/docs/uptime-monitoring/distributed-monitoring · checked -
“tag_name: v3.13.1, published_at: 2026-10-22T18:55:29Z”
api.github.com/repos/bluewave-labs/checkmate/releases/latest · checked -
“Checkmate sends one anonymous heartbeat per installation every 24 hours so we can see how many instances are running.”
github.com/bluewave-labs/checkmate · checked -
“Checkmate is used in production to monitor 1,600+ servers on a single deployment.”
github.com/bluewave-labs/checkmate · checked -
“You can see the memory footprint of MongoDB on the same server (398Mb) for the same amount of servers”
github.com/bluewave-labs/checkmate · checked -
“Pick a check interval: 5, 10, 15, or 30 minutes.”
checkmate.so/docs/uptime-monitoring/distributed-monitoring · checked -
“To opt out, set TELEMETRY_ENABLED=false on every server container and restart.”
github.com/bluewave-labs/checkmate · checked -
“Create, edit, and delete monitors”
checkmate.so/docs/getting-started/roles-permissions · checked -
“the memory usage of a Node.js instance running on a server that monitors 323 servers every minute”
github.com/bluewave-labs/checkmate · checked -
“A heartbeat monitor is passive: your job pings Checkmate when it runs, and the monitor goes down if no ping arrives within its alert window.”
github.com/bluewave-labs/checkmate · checked -
“No URLs, hostnames, IP addresses, emails, names, monitor details or any other data you've entered are sent.”
github.com/bluewave-labs/checkmate · checked -
“Use it to restore a backup or to move monitors from another Checkmate instance.”
checkmate.so/docs/uptime-monitoring/bulk-import · checked -
“Use them to catch regional outages and DNS or routing problems that a single vantage point would miss.”
checkmate.so/docs/uptime-monitoring/distributed-monitoring · checked