Uptime Kuma: Self-Hosted Uptime Monitoring Tool
Uptime Kuma is a self-hosted monitoring app you run on your own server to watch sites, APIs, and Docker containers, then get alerted when one goes down. It checks every 20 seconds by default and notifies through 90+ services, including Telegram, Discord, and SMTP email. Reach for it if you run infrastructure already and want one dashboard for uptime and alerts, no SaaS fee; skip it if you'd rather not host the monitoring tool too.
Understanding Uptime Kuma
Uptime Kuma is a self-hosted monitoring tool built with Vue 3 and Socket.IO that runs as a single web app on your own server. It checks endpoints over HTTP(s), TCP, DNS, ping, WebSocket, and Docker container status, then shows results on a status page you control. The interface updates live over WebSocket rather than polling a REST API, a design choice the README calls out directly as one of the project's original goals.
The Motivation Behind Uptime Kuma
Louis Lam built Uptime Kuma because he wanted a self-hosted stand-in for Uptime Robot and couldn't find one that held up. The closest option he found, Statping, had stopped being maintained and wasn't stable enough to rely on, according to the motivation section of the README. Uptime Kuma also doubled as a personal project: learning Vue 3 and vite.js, trying out Bootstrap 5, and building a WebSocket-driven single-page app instead of a typical REST API. Those choices still show up in how Uptime Kuma behaves today, not just in its origin story.
Key Monitoring Features
- ✓Monitors HTTP(s), TCP, HTTP(s) Keyword, HTTP(s) JSON Query, WebSocket, Ping, DNS records, Push, Steam Game Server, and Docker container targets, per the README's feature list.
- ✓Checks run on a 20-second interval by default.
- ✓Notification integrations include Telegram, Discord, Gotify, Slack, Pushover, and SMTP email, among 90+ services documented in the source tree.
- ✓Supports multiple independent status pages, and a status page can be mapped to its own domain.
- ✓Built-in ping charts and TLS certificate info for each monitor.
- ✓Proxy support for checks that need to route through one.
- ✓Two-factor authentication (2FA) on the admin login.
- ✓Ships with multi-language support maintained through a Weblate-based translation process, per the README.
Installation Options
The README documents three install paths. Docker Compose is the one it leads with: create a folder, download the project's compose.yaml, and run `docker compose up -d`; Uptime Kuma then listens on port 3001 on all network interfaces. A plain `docker run` command works too, using the `louislam/uptime-kuma:2` image with a named volume for data, and you can bind it to 127.0.0.1 instead of exposing it externally. NFS-backed volumes don't work with either Docker path. The README calls NFS unsupported and says to map to a local directory instead. For a non-Docker install, the README lists Node.js 20.4 or newer, Git, and pm2 as requirements, then has you `git clone` the repo, run `npm run setup`, and start the server either directly with `node server/server.js` or, as the recommended path, under pm2 with `pm2 start server/server.js --name uptime-kuma`. Supported platforms are major Linux distros (Debian, Ubuntu, Fedora, Arch) and Windows 10 x64 or Windows Server 2012 R2 x64 and up; FreeBSD, OpenBSD, NetBSD, Replit, and Heroku are explicitly listed as unsupported. Reverse-proxy setup and update steps live in a separate wiki page the README links to, not inline.
Typical Monitoring Scenarios
- •Homelab or small-team operators who want an uptime dashboard for self-hosted services without sending data to a third-party SaaS.
- •Watching a Docker Compose stack's container health alongside its HTTP endpoints on the same dashboard.
- •Running a status page for a project or service, mapped to its own subdomain.
- •Catching TLS certificate expiry early using the built-in certificate info per monitor.
- •Monitoring a Steam Game Server or another non-web service where a plain ping or TCP check is what you actually need.
Strengths
- ✓Notification coverage includes Telegram, Discord, Gotify, Slack, Pushover, and SMTP email, among 90+ services listed in the source tree.
- ✓Monitor types go past simple HTTP pings: DNS records, Docker container status, Steam Game Server, and push-based heartbeats are all supported.
- ✓Docker Compose install is three commands and it's listening on port 3001.
- ✓MIT license, so there's no ambiguity about using it commercially or modifying it.
- ✓2FA and per-monitor TLS certificate info are built in rather than left to a plugin.
Known Limitations
- △The README doesn't state a minimum RAM or CPU footprint, or give scaling guidance for monitoring hundreds of endpoints, so capacity planning is on you.
- △NFS-backed volumes are explicitly unsupported for the Docker install, which rules out a common shared-storage setup.
- △Non-Docker installs are limited to major Linux distros and Windows; the README lists FreeBSD, OpenBSD, NetBSD, Replit, and Heroku as unsupported.
- △It's self-hosted only. The README doesn't describe a hosted or managed option, so you run and maintain the server it lives on.
- △The README mentions a backlog of pull requests the maintainer doesn't have time to test alone, which is worth weighing before you count on a fast merge.
- △Non-Docker installs need Node.js 20.4 or newer plus pm2 to run persistently, which is more setup than a single binary.
Alternatives to Uptime Kuma
Frequently Asked Questions
Uptime Kuma can monitor HTTP(s) endpoints, TCP ports, HTTP(s) with keyword or JSON-query checks, WebSocket connections, ping, DNS records, push-based heartbeats, Steam Game Servers, and Docker container status, per its feature list.
Uptime Kuma installs through Docker Compose, a single `docker run` command using the louislam/uptime-kuma image, or a non-Docker setup with Node.js 20.4+, Git, and pm2 to keep it running in the background.
Uptime Kuma sends alerts through Telegram, Discord, Gotify, Slack, Pushover, and SMTP email, among more than 90 notification services documented in its source tree.
Uptime Kuma is released under the MIT license, which permits commercial use, modification, and redistribution without a license fee.
Uptime Kuma can run without Docker: the README documents a manual setup with Node.js 20.4+, Git, and pm2, using `npm run setup` and then starting the server directly or under pm2.
Uptime Kuma ships with multi-language support, and the README links to a Weblate-based process for translating it into more languages.
Who should try it — and who should skip
Try Uptime Kuma if you already run a home server or a handful of VPS instances and want one dashboard that pings you the moment an HTTP endpoint, a Docker container, or a DNS record stops behaving, without paying a monthly fee for it. Skip it if you don't want another service to patch and back up yourself, or if what you actually need is deep infrastructure metrics rather than up-down and certificate checks; that's more a job for something like Zabbix or a Prometheus-and-Grafana stack.
Related repositories
Want a second opinion on uptime-kuma?
Ask an AI that can read this page — one click and you get its take on uptime-kuma.
