Checked against
- Uptime Kuma Docker image: louislam/uptime-kuma:2 (major-version tag) [readme]
Before you start
- A Linux server or VM with Docker and the Docker Compose plugin installed.
- A local disk or Docker volume for the data directory (not a network file system, see below).
Option A: Docker Compose
The README offers a ready-made compose file. It defines one service using the image louislam/uptime-kuma:2, restarts it unless stopped, stores data in ./data mounted at /app/data and publishes port 3001.[readme][compose]
mkdir uptime-kuma
cd uptime-kuma
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
docker compose up -dOption B: a single docker run command
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2Uptime Kuma then listens on port 3001 on all network interfaces. The README shows how to bind it to localhost only by publishing the port as 127.0.0.1:3001:3001, which is what you want when a reverse proxy on the same host is the only way in.[readme]
Storage: no network file systems
The README states that network file systems such as NFS are not supported. Map /app/data to a local directory or a Docker volume.[readme]
First run
- Open http://<server-ip>:3001 (or http://localhost:3001 on the host itself).
- Create the first account in the setup screen before anyone else can reach the port.
- Add your first monitor and check that data survives a container restart (docker restart uptime-kuma).
These first-run steps are general practice, not taken from the README.
Not covered by this guide
- TLS and a reverse proxy in front of port 3001.
- Backups of the data directory and upgrades between major versions.
Sources
- Uptime Kuma README (installation) (retrieved 2026-10-29)
- Uptime Kuma compose.yaml (retrieved 2026-10-29)