Monitor Your Self-Hosted Services with Uptime Kuma

Know when your services go down โ€” before your users do

Once you start self-hosting things, you quickly realise you need a way to know when they stop working. Uptime Kuma is a lightweight, self-hosted monitoring dashboard that runs beautifully on a Raspberry Pi and gives you a clean, real-time view of whether your services are up or down โ€” with alerts when things go wrong.

It monitors websites, services, and ports; sends alerts via email, Telegram, Slack, Discord, and a dozen other channels; and produces a clean status page you can share publicly if you want. The whole thing is a single Docker container and takes about five minutes to get running.

What you’ll need

  • Any Raspberry Pi running Docker (Pi 3B or newer)
  • Something to monitor โ€” your own websites, a Nextcloud instance, a Pi-hole, anything with a URL or open port

Installation

Create a docker-compose.yml:

version: '3'

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

volumes:
  uptime-kuma:

Bring it up:

docker compose up -d

Browse to http://<your-pi-ip>:3001, create an admin account, and you’re in. The dashboard is clean and immediately usable.

Adding monitors

Click “Add New Monitor” and you’ll see a range of monitor types:

  • HTTP(s) โ€” the most common; checks a URL and optionally verifies the returned status code or looks for specific text in the response
  • TCP Port โ€” checks whether a specific port is open on a host; useful for non-HTTP services
  • Ping โ€” basic ICMP ping to check a host is alive
  • DNS โ€” monitors a DNS record and alerts if it changes
  • Docker Container โ€” if Uptime Kuma has access to your Docker socket, it can monitor container health directly

Set a check interval โ€” 60 seconds is a sensible default for most services. You can tighten that for critical things or loosen it for less important ones.

Notifications

Before adding monitors, configure at least one notification channel. Go to Settings > Notifications. Telegram is particularly easy to set up โ€” create a bot via BotFather, grab the token and chat ID, and you’ll get instant messages on your phone whenever something goes down or recovers. Email works well too if you’d rather not use a messaging app for this.

Status pages

Uptime Kuma’s status page feature lets you create a public-facing page showing the status of your chosen services. It’s optional, but nice if you run anything others depend on. You can pick a subdomain for it and even assign a custom domain.

What to monitor

Some things worth throwing in straight away:

  • Your Pi-hole admin interface (confirms your Pi-hole Pi is still alive)
  • Any websites or services you’re self-hosting
  • Your Nextcloud instance
  • Your router’s local admin page (ping monitor)
  • External sites you depend on โ€” your email provider, your domain registrar

Over time, the history graphs Uptime Kuma builds up become genuinely useful. You’ll start to spot patterns โ€” a service that goes briefly down at the same time every day, or response times creeping up as a disk fills.

This is part four of our “Things to do with your old Raspberry Pi” series. Next week: turning your Pi into a lightweight network file server with Samba.


Leave a Reply