Monitoring

Uptime Kuma VPS requirements: RAM, CPU, disk, and where to run it

By VPSfit · Sources checked · Uptime Kuma website · source code · MIT

Uptime Kuma is a self-hosted monitoring tool with about 93,000 stars on GitHub. It checks websites, ports, DNS records and other services every 20 seconds or more, sends alerts to 90+ notification services and serves public status pages. It is one of the best fits for a small VPS, for a reason that has nothing to do with RAM: a monitor that runs on the machine it watches can't tell you that machine is down. The app is light. Published tests put it at 100–160 MiB with dozens of monitors. The project publishes no minimum, and the practical floor is a 1 GB plan. What changes that are browser (Chromium) checks, the embedded MariaDB, and, before 2.5.5, a memory leak in TLS port checks.

Sizing guide

Our recommendations, derived from the sourced figures below. Not measurements.

ScenarioRAMvCPUWhy
Personal or small team: up to about 100 HTTP, TCP, DNS, ping or push monitors, SQLite1 GB1Three tests put the app at 102–159 MiB with up to 200 monitors, so RAM is not the limit. 1 GB leaves room for the OS, Docker, image updates and the v1 to v2 migration, and one user found v2 unstable at 512 MB. We haven't measured it on a 1 GB VPS yet.
A few hundred monitors, SQLite1–2 GB1–2Reports range from below 400 MiB for about 250 monitors to 600 MB for 110 monitors on a long-running 1 GB VM. Short intervals and ping checks raise CPU, so watch it before you add cores.
Browser Engine (Chromium) checks or the embedded MariaDB2 GB or more1–2No official figure. A maintainer named the embedded MariaDB the biggest memory user, and the embedded Chrome has a known leak that filled a 2 GB limit within a day. Keep browser checks few, and use SQLite or an external database if you can.
Hundreds of monitors with an external MariaDB4–8 GB4One user's report: 700 HTTP and keyword monitors on 4 cores and 6 GB with a tuned MariaDB. Not a requirement, just the only large-install data point we found.

Official requirements

ItemWhat the project saysSource
Minimum resourcesNone published. The README and install wiki list platforms and Node.js versions but no RAM, CPU or disk figure. A GitHub issue asking for them was answered with "highly depends on which monitors you are running", naming full Chromium (RAM) and pings (CPU) as the heavy onesGitHub issue #5884: What are the minimum and recommended system requirements
checked Oct 28, 2026
Install methodsDocker (image louislam/uptime-kuma:2, one container, web UI on port 3001) or Node.js >= 20.4 with pm2. Supported platforms: major Linux distributions and Windows 10 / Server 2012 R2 (x64) or newer; FreeBSD, OpenBSD, NetBSD, Replit and Heroku are not supportedUptime Kuma README: How to Install
checked Oct 28, 2026
StorageMap /app/data to a local directory or volume. SQLite needs POSIX file locks, so network file systems such as NFS are not supportedUptime Kuma wiki: How to Install
checked Oct 28, 2026
Image tags and sizesThe full 2 image includes an embedded MariaDB and Chromium (for the Browser Engine monitor type). The 2-slim image leaves both out. On Docker Hub the 2.5.8 images are 617 MB (full) and 185 MB (slim) compressed for amd64, with arm64 and armv7 builds too. The old latest tag is deprecated and still points to v1Uptime Kuma wiki: Docker Tags; Docker Hub louislam/uptime-kuma
checked Oct 28, 2026
DatabaseSQLite or MariaDB/MySQL, chosen with UPTIME_KUMA_DB_TYPE (since 2.0.0) or on a setup page at first start. The embedded-MariaDB switch is listed under "For Development only"Uptime Kuma wiki: Environment Variables
checked Oct 28, 2026
History retentionDefault keep period of 365 days in 2.x (180 days in 1.23.17), enforced by a daily clear-old-data job; set to 0 or less to keep everythingUptime Kuma source: server/jobs/clear-old-data.js at 2.5.8
checked Oct 28, 2026
Reverse proxyUptime Kuma is based on WebSocket, so a proxy has to pass the Upgrade and Connection headers. Set Settings → Reverse Proxy → Trust Proxy to Yes behind a proxyUptime Kuma wiki: Reverse Proxy
checked Oct 28, 2026
Upgrading from v1The v2 upgrade aggregates the heartbeat table into a new format. The maintainer's own 20 monitors with 90 days of data took about 7 minutes; the page warns it can take hours on slower hardware and must not be interrupted. Back up the data directory first; it is the only supported backup methodUptime Kuma wiki: Migration From v1 To v2
checked Oct 28, 2026
Current release2.5.8 (26 Oct 2026). 2.5.5 (16 Sep 2026) fixed a memory leak in TCP monitorsGitHub louislam/uptime-kuma releases
checked Oct 28, 2026

What people report in practice

Individual reports, not controlled tests. Versions, hardware and settings differ, so treat these as data points, not guarantees.

  • Uptime Kuma 2.5.7 (full image, SQLite) idled at 129 MiB with an admin account and no monitors, peaked at 146 MiB with 30 monitors (25 HTTP, 3 TCP, 2 ping) checking every 20 seconds, and hit 159 MiB at startup. CPU averaged 1.5% of one core under that load. The image is 617 MB compressed and 1.7 GB unpacked

    Third-party test site, median of three runs on a 2 vCPU GitHub Actions runner, 26 Oct 2026. Ten-minute window against a local nginx, so no DNS or TLS work and no long-term history

    Test site Self Host Bench: Uptime Kuma Docker Compose, 129 MiB idle, 30 monitors · checked Oct 28, 2026

  • Uptime Kuma 1.x used 104.7 MiB with no monitors and 114–132 MiB with 60 monitors at a 60-second interval, about 0.19 MiB per monitor. CPU bursts reached 23.2% on a 2 vCPU VPS. The database grew about 359 bytes per heartbeat, about 30 MB a day for 60 monitors

    Blog test on a live 2 vCPU, 7.8 GiB VPS that also served five sites, 6 Sep 2026. Image tag louislam/uptime-kuma:1, so the disk figures describe v1 (see what drives disk use, below)

    Blog StackRecipes: Uptime Kuma on a $9 VPS, what 60 monitors actually cost · checked Oct 28, 2026

  • Container RSS went from 102 MiB with 0 monitors to 106, 116 and 126 MiB with 50, 100 and 200 HTTP monitors, about 0.12 MiB per monitor, at 2–3% of 2 vCPUs. Another commenter runs about 250 monitors on a v2 beta as a systemd service with SQLite, averaging below 400 MiB. The original poster hit out-of-memory crashes on a 2 GB box with about 50 monitors on the embedded MariaDB, which a maintainer called "the biggest contributor"

    GitHub issue thread, June 2025 to Sep 2026. The 0–200 monitor test used 1.23.17 with SQLite and HTTP monitors only

    GitHub GitHub issue #5884: What are the minimum and recommended system requirements · checked Oct 28, 2026

  • "We have an uptime instance running more than 110 monitors. It's been running on a 1 cpu/1gb VM for years now. Currently using 600mb of ram." Another user ran about 30 monitors on v1 in a 512 MB VM; after moving to v2 it "appeared to struggle more" with sporadic outages, needed 1 GB for the database migration, and has been "rock solid" at 1 GB since

    r/UptimeKuma thread, Feb 2026

    Reddit Reddit r/UptimeKuma: RAM on Proxmox for Uptime Kuma? · checked Oct 28, 2026

  • "I have tested 700 (http + keyword) monitors on 4core and 6gb Ram with tunning mariadb work fine." Other replies run from 19 to 800+ monitors

    r/UptimeKuma thread, Feb 2025. One user's report; no memory figure given

    Reddit Reddit r/UptimeKuma: How many monitors? · checked Oct 28, 2026

  • Memory grew from about 150 MB to more than 1 GB over days (3 GB and 6 GB in two reports) on 2.x installs with 12–23 monitors, and dropped back after each restart. The cause the maintainer reproduced was TCP monitors with a TLS or STARTTLS certificate check that left closed sockets referenced (one user counted about 4,900 socket handles). The maintainer released the fix in 2.5.5

    GitHub issue thread, June to Sep 2026, versions 2.2.1 to 2.5.4

    GitHub GitHub issue #7537: Memory of Uptime Kuma Slim is increasing over time · checked Oct 28, 2026

  • With 34 monitors, 4 of them Browser Engine checks, and the embedded MariaDB and Chromium, a 2 GB container limit was reached within 24 hours and the container was OOM-killed repeatedly. A maintainer replied that the embedded Chrome has a memory leak "which we did not have time to debug"

    GitHub issue thread, Mar 2025, version 2.0.0-beta.1 (same on 1.23.16)

    GitHub GitHub issue #5654: too much virtual memory usage · checked Oct 28, 2026

Our measurements: coming soon

We haven't measured Uptime Kuma yet, so there are no VPSfit lab numbers on this page. When we do, they'll show the app version, the plan it ran on, the date, and the raw data. Here's what we'll record:

  • Idle and 24-hour RAM of Uptime Kuma 2 (full and slim) on a 1 GB plan with 25, 100 and 250 HTTPS monitors against real sites
  • Database size per day with 50 monitors at a 60-second interval on v2, to check the summary-table design against v1's growth
  • RAM with one, five and ten Browser Engine monitors over 24 hours
  • CPU on one shared vCPU with 100 ping monitors at a 20-second interval

How we measure →

What drives Uptime Kuma's RAM use

The Node.js floor, not the monitor count

An empty install sits at 100–130 MiB, and each ordinary monitor adds roughly 0.1–0.2 MiB in the tests above (#5884, StackRecipes). Going from 10 to 100 HTTP monitors barely changes the RAM line. What does change it is the kind of check.

Browser checks, big keyword pages and the database

The Browser Engine monitor runs a full Chromium, the heaviest thing Uptime Kuma can do. Keyword monitors keep the whole response in memory while they search it, so watching a large page every 20 seconds costs more than a small one. The embedded MariaDB in the full image is the largest single contributor, according to a maintainer in #5884. SQLite, the default, is the light option.

Disk: v2 keeps far less raw history than v1

Our reading of the 2.5.8 source, not a measurement: v2 deletes ordinary heartbeats older than 24 hours and keeps the last 100 per monitor plus status changes (database.js). Long-term charts come from summary tables: per-minute data for 24 hours, per-hour for 30 days, and per-day for the 365-day keep period (uptime-calculator.js). A SQLite incremental vacuum runs every 5 minutes. The multi-gigabyte projections you'll see for 50–200 monitors (2.2 GB to 8.8 GB at 180 days) were made on v1, which stored every heartbeat for the whole retention period. We haven't measured v2's database growth. The full image itself takes about 1.7 GB unpacked (Self Host Bench).

CPU is spiky, not heavy

Average CPU stayed at 1.5% of one core with 30 monitors at a 20-second interval, with short spikes when monitors start (Self Host Bench). Ping checks and short intervals cost the most CPU. One shared vCPU is enough for most personal setups.

Gotchas on a VPS

  • Don't run it on the server it watches. A status page on the monitored machine reports everything fine until that machine dies, and then reports nothing (StackRecipes). Put Uptime Kuma on a separate small VPS, ideally at a different provider from your other servers. Checks from a single VPS come from one location, so an outage that only hits one region can be missed.
  • It can't see your home network on its own. A VPS can check public URLs and ports, but not devices behind your router. For services at home, use Push monitors (your service calls Uptime Kuma on a schedule, and silence means down), or reach them over a tunnel or VPN such as Pangolin, Tailscale or WireGuard.
  • Update to 2.5.5 or later. TCP port monitors with a TLS or STARTTLS certificate check leaked sockets and memory in 2.x releases before 2.5.5; users saw 150 MB grow to several GB (#7537). On a 1 GB VPS that ends in swapping or an OOM kill. Pin a current 2.x tag and set a container memory limit so a leak restarts the app instead of freezing the server.
  • The first start waits for a database choice. Without UPTIME_KUMA_DB_TYPE, v2 opens a setup-database page on first visit and doesn't start monitoring until someone answers it. The container still reports healthy while it waits (Self Host Bench). Set UPTIME_KUMA_DB_TYPE=sqlite in the compose file if you deploy unattended.
  • Port 3001 is public by default. The official compose file publishes 3001:3001 on every interface, and Docker's port rules bypass UFW, so a firewall that says "deny" doesn't protect it (StackRecipes). Bind it to 127.0.0.1 and put a reverse proxy with HTTPS and WebSocket headers in front (wiki), or use the provider's firewall.
  • Use the slim image if you don't need Chromium. The 2-slim image is about 185 MB compressed against 617 MB for the full one, and leaves out the embedded MariaDB and Chromium (Docker Tags). On a 25 GB disk that difference adds up with every update.
  • Keep the data folder on local disk. SQLite needs real file locks, so the docs rule out NFS (install wiki). Use the VPS's own disk or an attached block volume, not a network share.

Cheapest plans that fit

Uptime Kuma 2 with SQLite, ordinary monitors: 1 GB RAM and 1+ vCPU

Threshold: No official figure. Tests reported 102–159 MiB with up to 200 monitors, and a v2 user found 512 MB unstable and 1 GB solid (source). Only plans with at least 1 vCPU are listed.

Provider & planRAMvCPUDisk Price / monthTermsSource
Contabo Cloud VPS 4 8 GB 4 shared 100 GB SSD €4.40
excl. VAT · ≈ $4.93
24-month term (effective monthly rate) contabo.com
checked Oct 28, 2026
Vultr Cloud Compute Regular 1 GB 1 GB 1 shared, previous-gen Intel 25 GB SSD $5.00
before tax
Monthly price, hourly billing vultr.com
checked Oct 28, 2026
DigitalOcean Basic 1 GiB 1 GB 1 shared 25 GB SSD $6.00
before tax
Monthly cap, per-second billing digitalocean.com
checked Oct 28, 2026
Contabo Cloud VPS 6 12 GB 6 shared 200 GB SSD (or 100 GB NVMe) €6.00
excl. VAT · ≈ $6.73
24-month term (effective monthly rate) contabo.com
checked Oct 28, 2026

Uptime Kuma 2 with Browser Engine checks or embedded MariaDB: 2 GB RAM and 1+ vCPU

Threshold: No official figure. Embedded MariaDB was named the biggest memory user, and four Chromium checks filled a 2 GB limit within a day, so 2 GB is a floor, not a guarantee (source). Only plans with at least 1 vCPU are listed.

Provider & planRAMvCPUDisk Price / monthTermsSource
Contabo Cloud VPS 4 8 GB 4 shared 100 GB SSD €4.40
excl. VAT · ≈ $4.93
24-month term (effective monthly rate) contabo.com
checked Oct 28, 2026
Contabo Cloud VPS 6 12 GB 6 shared 200 GB SSD (or 100 GB NVMe) €6.00
excl. VAT · ≈ $6.73
24-month term (effective monthly rate) contabo.com
checked Oct 28, 2026
Vultr Cloud Compute Regular 2 GB 2 GB 1 shared, previous-gen Intel 55 GB SSD $10.00
before tax
Monthly price, hourly billing vultr.com
checked Oct 28, 2026
Hostinger KVM 1 4 GB 1 AMD EPYC 50 GB NVMe $11.99
intro $6.49
before tax
Prepaid intro rate; renews at $11.99/mo hostinger.com
checked Oct 28, 2026

Prices checked Oct 28, 2026 on each provider's official pricing page. EUR prices converted at the ECB rate of Oct 27, 2026 (1 € = $1.115) only for ranking. See all plans on the cheapest 4 GB VPS page.