Self-Host Uptime Kuma on a Cheap VPS (2026)

Free, open-source, and your data stays on your box. Here's the whole setup.

Bottom line: if you run any service at all — a website, a home-server, an n8n automation, an API — you should know the moment it goes down. Uptime Kuma is the free, self-hosted way to do it, and it runs happily on a cheap VPS with just 1 GB of RAM.

Why self-host Uptime Kuma instead of paying for a monitor

The free-tier trap: hosted uptime monitors cap free tiers at a handful of monitors and nag you to upgrade. Uptime Kuma gives you unlimited monitors on your own box — the only cost is the VPS you likely already have or were already considering.
If you don't have a VPS yet, Vultr and DigitalOcean both run a 1 GB box comfortably. Affiliate disclosure: signups through these links may earn us a commission.

What you get

The one-command setup

With Docker Compose (see the uptime-kuma-stack repo for the full files), a single docker-compose.yml gets you running:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - ./uptime-kuma-data:/app/data

Then docker compose up -d and open http://your-vps:3001. First run asks you to set the admin password.

Put it behind HTTPS (free, auto-renewing)

Uptime Kuma is not a full web server, so put a reverse proxy in front. Caddy handles TLS automatically:

status.yourdomain.com {
    reverse_proxy uptime-kuma:3001
}

Caddy pulls a Let's Encrypt certificate on first request and renews it for you. The repo includes both files ready to run.

Hardware reality check

Uptime Kuma is light. On a 1 GB VPS it idles around 100–150 MB of RAM with a few dozen monitors. If you're also running n8n and a stack of automation tools, a 2 GB box gives you comfortable headroom. See our RAM sizing guide for the full workload table.

Back up the data

All monitor config and history live in ./uptime-kuma-data. Back up that folder (or use Uptime Kuma's built-in automatic backup to a remote endpoint) and you can restore the whole thing on a new box in minutes.

Get the full stack on GitHub →