
Uptime Kuma
Fancy self-hosted monitoringOpen source
About Uptime Kuma
Uptime Kuma is a self-hosted uptime monitor started by Louis Lam: one Node.js service on a self-managed machine checks websites, ports, databases and containers on a schedule, sends alerts (the README cites 90+ notification services), and publishes status pages. As of 2026-10-25: 92,888 stars, 196,202,927 Docker Hub pulls, latest stable 2.5.7, MIT license, free software with no paid tier.
The Uptime Kuma interface
What it is
Uptime Kuma is an open-source, self-hosted monitoring tool. Its GitHub description reads "A fancy self-hosted monitoring tool", and the README opens with "an easy-to-use self-hosted monitoring tool". The approach: a service started with Docker or Node.js on a self-managed server serves port 3001 in a browser; once monitors are added, it probes each target at the set interval, draws heartbeat bars and response-time charts, and sends a notification when status changes.
The README lists the basic monitor types: HTTP(s), TCP, HTTP(s) keyword, HTTP(s) JSON query, WebSocket, Ping, DNS record, Push, Steam game server and Docker container. The server/monitor-types folder on the 2.5.X branch holds more type files, covering gRPC, MongoDB, MQTT, MySQL, PostgreSQL, SQL Server, Oracle, Redis, RabbitMQ, SMTP, SNMP, SFTP, NTP, SIP OPTIONS, Tailscale Ping, system services, a real browser and more; the monitor model code also has Kafka producer and RADIUS types.
For notifications, the README says "90+ notification services"; the providers in the server/notification-providers folder on 2.5.X range from Telegram, Discord, Slack and email to regional SMS gateways. UI translations are done through Weblate.
As of 2026-10-25 the repository has 92,888 stars and 8,605 forks; the louislam/uptime-kuma image on Docker Hub has 196,202,927 pulls, and the image page was registered at 2021-07-10 12:16 (UTC+8). The latest stable release is 2.5.7, published 2026-10-23 13:16 (UTC+8); package.json on master already reads 3.0.0-beta.0.
A fancy self-hosted monitoring tool
Core capabilities
First, monitor types. Beyond HTTP and TCP, databases, message queues, game servers, DNS records, certificate expiry and system services can be set up directly, while the Push type reverses the flow so the monitored side reports in on a schedule. The README gives 20-second intervals as the shortest check; the 2.5.0 notes say the interval is no longer capped at 24 days.
Second, notifications. The README says "90+ notification services"; 2.1.0 added Jira Service Management and Google Sheets, and 2.5.0 added Plivo SMS and voice, an NTP monitor type and custom SMTP headers.
Third, status pages. The README lists multiple status pages, mapping status pages to their own domains, ping charts, certificate info, proxy support and 2FA.
Fourth, database choice. The 2.0.0-beta.0 notes list MariaDB support and a rootless Docker image, so data can live in a database other than SQLite. The same notes list improved uptime calculation and 1-year uptime, and the migration guide says 2.0 aggregates the heartbeat table into a new, more optimised format.
Fifth, deployment options. The homepage shows a single docker run command, and the README gives a Docker Compose version plus a non-Docker route with pm2; the live demo wipes its data after 10 minutes, so the UI can be seen without any setup.
Who it's for / Not for
For: individual site owners, self-hosting hobbyists and small technical teams with an always-on machine who want one dashboard for dozens of websites, APIs, databases and containers, with alerts sent to the chat tools they already use.
For: teams already on Docker. The official compose.yaml has a single service with the data folder mounted locally, and upgrading means changing the image tag.
For: projects that need a public status page on a small budget. Status pages can use their own domain, and the software costs nothing.
Not for: teams that need to probe from several regions at once to tell a regional outage from a global one.
Not for: teams that need on-call rotations, phone escalation and incident review workflows; those belong to hosted platforms such as Better Stack.
Not for: setups where the data folder can only sit on NFS. The README warns that network file systems like NFS are not supported; FreeBSD, OpenBSD, NetBSD, Replit and Heroku are also on the unsupported list.
Not for: contributors planning to submit AI-generated code in bulk. The repository's AGENTS.md says the project does not accept AI-generated code that has not been reviewed and tested, and offenders get banned; using AI as an assistant to understand the code is allowed.
How it compares
Versus Gatus: TwiN/gatus is an open-source status page and alerting tool written in Go, with 12,401 stars as of 2026-10-25, the Apache-2.0 license, and latest release v5.37.0 published 2026-09-24 08:00 (UTC+8). Gatus also has a hosted version; the gatus.io pricing page lists monthly billing at $10 for Standard, $20 for Premium, $50 for Business and $500 for Enterprise (as of 2026-10-25). Uptime Kuma is configured mainly through its web UI; the Gatus repository description stresses that it is developer-oriented.
Versus UptimeRobot: the UptimeRobot pricing page (as of 2026-10-25) gives the free plan 50 monitors at a 5-minute interval; Solo costs $13 a month billed monthly or $12 a month billed yearly, with 10 monitors at 60 seconds; Team costs $46 a month billed monthly or $39 billed yearly, with 100 monitors at 30 seconds; Scale starts at $98 a month billed monthly. Uptime Kuma does not charge per monitor and the README gives 20-second intervals, with users running and maintaining the machine themselves.
Versus Better Stack: the Better Stack pricing page (as of 2026-10-25) includes 10 monitors and heartbeats plus 1 status page on the free plan; each responder license costs $34 a month billed monthly or $29 billed yearly, and 50 extra monitors cost $25 a month billed monthly; checks run as often as every 30 seconds, with multi-location checks and phone and SMS alerts. Uptime Kuma covers probing, notifications and status pages.
Getting started
The Docker route. The README command is docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2; once it starts, the admin account is created at http://localhost:3001. With the port mapping set to 127.0.0.1:3001:3001, only the local machine can reach it.
The Docker Compose route uses compose.yaml from the repository, started with docker compose up -d; the file mounts ./data as the data folder with an unless-stopped restart policy. The data folder must sit on a local disk or volume, not NFS.
Without Docker, the README lists major Linux distributions such as Debian, Ubuntu, Fedora and ArchLinux, plus Windows 10 x64 and Windows Server 2012 R2 x64 or later, as supported platforms; package.json on the 2.5.X branch requires Node.js 20.4.0 or later. The README route clones the repository and runs npm run setup, a script that checks out the 2.5.7 tag and downloads the built frontend; pm2 then starts server/server.js.
Upgrading from 1.x to 2.x has its own migration guide. It requires stopping the service and backing up the data folder first, and explains that migration aggregates the heartbeat table into a new format and must not be interrupted; the maintainer's own instance with 20 monitors and 90 days of data took about 7 minutes, and slower hardware or more monitors can take hours. 2.0 removed JSON backup and restore, leaving copying the data folder as the only backup method; Alpine images were dropped; the default retry count for new monitors went from 1 to 0.
The official security policy lists 2, 2-slim, next and next-slim as the upgradable Docker tags; the migration guide warns that switching straight to a rootless image when upgrading from 1.x can cause startup failures.
When the machine running Uptime Kuma goes down, Uptime Kuma cannot send alerts either. Push monitors are reported in by private machines and cron jobs.
Pricing & license
The Uptime Kuma software is free, with no paid tier and no official hosted service; users pay for their own servers. The project is funded by donations: the Open Collective page (as of 2026-10-25) shows $5,897.69 raised in total, $1,547.53 disbursed, a balance of $4,350.16 and an estimated annual budget of $1,644.05, and lists fixed costs of $11 a month for a VPS, about $15 a year for a domain and $2.5 every six months for SMTP. The README says Atlas Cloud sponsors the project with $400 a month for using its AI models (as reported by the vendor).
The license is MIT. The root LICENSE file was created by Louis Lam at 2021-07-11 16:02 (UTC+8) in commit 6bb4f92, titled Create LICENSE, with a 2021 copyright line; the license field in package.json is also MIT. Commit 540f230 on master at 2026-10-25 17:05 (UTC+8) vendored the prometheus-api-metrics module, whose folder carries its own Apache-2.0 license; that commit is only on the master and 3.0.X branches, not 2.5.X.
Risks & limits
Security advisories. As of 2026-10-25, the latest, GHSA-wf2j-5mc7-5c4w, published 2026-10-09 10:30 (UTC+8), describes unauthenticated resource exhaustion through the badge endpoint; CVE-2023-36821 from 2023 was remote code execution through a malicious plugin install. There was one server-side template injection advisory on notification templates in 2025-10 and another in 2026-03.
Security policy scope. SECURITY.md says it does not accept SSRF reports, nor upstream issues found only by dependency scanners without a proof of concept, and takes reports only through GitHub security advisories. A 2025 advisory also notes that some cloud providers expose metadata endpoints to the local network, so an instance on a cloud host with no limit on reachable addresses can be used to read that metadata.
Contributors. The GitHub contributors API (anon=0, default branch) shows 2,928 commits for the account of project author Louis Lam and 329 for the second-placed account (as of 2026-10-25). The README also says there are too many pull requests for the maintainer to test them all, and asks the community to help test.
Release lines. The 2.5.X branch requires Node.js 20.4.0 or later, while package.json on master reads 3.0.0-beta.0 and requires Node.js 26.2.0 or later, and commit 9998be2 at 2026-07-15 22:16 (UTC+8) brought in the Better Auth library and its API key plugin.
Metrics defaults. Commit 540f230 on master at 2026-10-25 17:05 (UTC+8) turned the /metrics endpoint off by default to reduce CPU usage, and the same commit added a toggle to the settings page.
As of 2026-10-25, GitHub shows 5,041 issues and 2,888 PRs in total, with 739 issues and 116 PRs open.
How it got here
The earliest commit in the repository, d9cd2c3, is titled init and dated 2021-06-24 21:42 (UTC+8); the GitHub repository was created at 2021-07-03 09:02 (UTC+8). The README's motivation section is blunt: Louis Lam wanted a self-hosted monitoring tool like Uptime Robot, and the closest option, statping, was unstable and no longer maintained; the other goals were a fancy UI, learning Vue 3 and Vite, showing off Bootstrap 5, trying WebSocket with a single-page app instead of a REST API, and publishing a first Docker image.
The 1.0.0 release is timestamped 2021-07-11 23:13 (UTC+8), and the LICENSE file landed the same day.
The 2.0 cycle. 2.0.0-beta.0 came out at 2024-10-29 21:10 (UTC+8), its notes opening with the maintainer's disbelief at how many pull requests had been merged, and its main additions were MariaDB support, a rootless image, and SNMP and RabbitMQ monitors; after 5 betas, the stable 2.0.0 shipped at 2025-10-20 20:40 (UTC+8). The 2.1.0 notes say that release merged 250 pull requests (as reported by the vendor).
In 2026, stable releases ran from 2.1.0 to 2.5.7. 2.5.0 set a 14-day cooldown on npm dependency updates to reduce supply-chain attack risk; 2.5.7 moved the Docker images to Node.js 22.23.4 so they reject a leaked eMudhra root certificate. At 2026-03-26 12:31 (UTC+8) the repository added AGENTS.md, which explicitly rejects unreviewed AI-generated code.
Our verdict
Uptime Kuma deploys with one Docker command, the README cites 90+ notification services, status pages can use their own domain, and the software is free. As of 2026-10-25 the repository has 92,888 stars and the Docker Hub image has 196,202,927 pulls.
Limits: probes come only from the machine it runs on; the repository has published multiple security advisories; the top account by default-branch commits is Louis Lam's; and 3.0.0-beta.0 on master brings in the Better Auth library and requires Node.js 26.2.0 or later.
Why it stands out
Uptime Kuma is a self-hosted monitoring tool that people install because it looks good and keep because it is reliable. HTTP, TCP, DNS, Docker, and dozens of notification channels ship in a Node application you can run on a spare box.
Louis Lam built it and watched it become the default recommendation for status pages in nearly every self-hosting community. The interface remains its quiet advantage: dense, legible, and kind to a phone screen at three in the morning.
It is self-hosted and monitors HTTP, TCP, DNS and Docker, with dozens of notification channels.
Sources
Official
- louislam/uptime-kuma on GitHub · Accessed Oct 25, 2026
- Uptime Kuma README · Accessed Oct 25, 2026
- Uptime Kuma LICENSE · Accessed Oct 25, 2026
- Uptime Kuma commit 6bb4f92: Create LICENSE · Accessed Oct 25, 2026
- Uptime Kuma commit d9cd2c3: init · Accessed Oct 25, 2026
- Uptime Kuma package.json on master · Accessed Oct 25, 2026
- Uptime Kuma package.json on the 2.5.X branch · Accessed Oct 25, 2026
- Uptime Kuma releases · Accessed Oct 25, 2026
- Uptime Kuma release 2.5.7 · Accessed Oct 25, 2026
- Uptime Kuma release 2.5.0 · Accessed Oct 25, 2026
- Uptime Kuma release 2.1.0 · Accessed Oct 25, 2026
- Uptime Kuma release 2.0.0 · Accessed Oct 25, 2026
- Uptime Kuma release 2.0.0-beta.0 · Accessed Oct 25, 2026
- Uptime Kuma wiki: Migration From v1 To v2 · Accessed Oct 25, 2026
- Uptime Kuma contributors · Accessed Oct 25, 2026
- Uptime Kuma issues · Accessed Oct 25, 2026
- Uptime Kuma security policy (SECURITY.md) · Accessed Oct 25, 2026
- Uptime Kuma AGENTS.md contribution policy · Accessed Oct 25, 2026
- Uptime Kuma commit 540f230: disable the /metrics endpoint by default (#8041) · Accessed Oct 25, 2026
- Uptime Kuma commit 9998be2: Better Auth implementation (#6276) · Accessed Oct 25, 2026
- Uptime Kuma notification providers on 2.5.X · Accessed Oct 25, 2026
- Uptime Kuma monitor types on 2.5.X · Accessed Oct 25, 2026
- Uptime Kuma homepage · Accessed Oct 25, 2026
Security advisories
- Uptime Kuma security advisories · Accessed Oct 25, 2026
Media & third party
- Uptime Kuma on Open Collective · Accessed Oct 25, 2026
Related products
- TwiN/gatus on GitHub · Accessed Oct 25, 2026
- Gatus pricing · Accessed Oct 25, 2026
- UptimeRobot pricing · Accessed Oct 25, 2026
- Better Stack pricing · Accessed Oct 25, 2026
Data
- louislam/uptime-kuma on Docker Hub · Accessed Oct 25, 2026