Uptime Kuma: self-hosted uptime monitoring in Docker

Uptime Kuma checks your sites and services and alerts you when one goes down. How to run it with Docker Compose in a couple of minutes.

Uptime Kuma is a monitoring tool with a clean web interface. It checks HTTP(S) endpoints, TCP ports, ping, DNS records, Docker containers and more, draws response-time charts, sends notifications through dozens of channels such as Telegram, email and Slack, and can publish a status page.

What you need

  • A server with Docker and the Compose plugin
  • A local directory for data. The project states that network file systems such as NFS are not supported.

A monitor that lives on the same server as the services it watches goes down together with them. If you can, run it on a separate machine or a small VPS.

Install

Create a folder and a compose.yaml. This is the file from the project repository:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    volumes:
      - ./data:/app/data
    ports:
      # <Host Port>:<Container Port>
      - "3001:3001"

Start it:

docker compose up -d

First run

Open http://<host>:3001, go through the setup page and create the admin account. Then add the first monitor: choose the type, enter the address and the check interval.

Set up at least one notification channel straight away under Settings, Notifications. A monitor that nobody hears from is only a chart.

To listen only on the server itself, for use behind a reverse proxy, change the port line to "127.0.0.1:3001:3001".

Backup

Everything is in the ./data folder next to the compose file.

Updating

docker compose pull && docker compose up -d

The image tag 2 follows the 2.x releases. Moving from 1.x to 2.x is a migration; read the project’s migration guide before changing the tag on an old install.