About Uptime Kuma
Uptime Kuma is a self-hosted monitoring tool, developed by Louis Lam and its community under the MIT license. It polls your websites, APIs, TCP ports, hosts (ping), DNS records or Docker containers at regular intervals, then notifies you through Telegram, Discord, Slack, email or webhook when something stops responding. The interface is clean and easy to pick up without reading the documentation.
It is aimed at developers, agencies and small teams who want to know a service is down before their customers do, without paying a SaaS subscription per monitor. Running the tool on your own VPS also keeps your monitoring data under your control.
After delivery, the server contains Docker, Uptime Kuma (image louislam/uptime-kuma:2) and a Caddy reverse proxy. The application listens only on 127.0.0.1:3001, and Caddy publishes it over HTTPS on port 443 of the server's public IP, with a self-signed certificate. All that is left is to open the URL and create the administrator account.
What you can do with Uptime Kuma
Many monitor types
HTTP(S), keyword in a page, TCP, ping, DNS, Docker container and more. You choose the check interval and the number of failures before an alert is sent.
Alerts on your usual channels
Telegram, Discord, Slack, SMTP email, webhooks and many other notification services are available from the interface, with no plugin to install.
Public status pages
Publish a status page for your services, for your customers or your team, on your own domain if you like.
TLS certificate tracking
Uptime Kuma reads the expiry date of the certificates on the HTTPS sites it monitors and can warn you before they expire.
Docker and Caddy preinstalled
Two containers with automatic restart (
restart: always), described in adocker-compose.ymlfile that you can edit and keep under version control.Data in a dedicated volume
Configuration and monitor history are stored in the Docker volume
kuma_data, which keeps backups and updates simple.
Get started with Uptime Kuma
From order to production in a few minutes.
- 1
Order the VPS with Uptime Kuma
On the order form, choose a Linux VPS (Paris or Frankfurt) running Debian 12, Debian 13 or Ubuntu 20.04, 22.04, 24.04. In the "Applications" tab, tick Uptime Kuma.
- 2
Wait for delivery and open the interface
Once the server is delivered, the installation runs in the background for a few minutes (downloading Docker and the images). Then open the URL below. The browser shows a warning because the certificate is self-signed: accept the exception to continue.
Bashhttps://SERVER_IP:443 # Check the container status over SSH: ssh root@SERVER_IP cd /opt/uptime-kuma && docker compose ps - 3
Create the admin account and your first monitor
On first access, Uptime Kuma asks you to create the administrator user. Then add a monitor (for example HTTP(S) on your website) and set up a notification channel to receive alerts.
- 4
Secure it for production
Point a DNS A record for YOUR_DOMAIN to SERVER_IP, then replace the address in the Caddyfile with your domain: Caddy will obtain a trusted certificate. Ports 80 and 443 must stay open, and port 22 should be restricted to your own IPs if possible.
Bashcd /opt/uptime-kuma nano Caddyfile # YOUR_DOMAIN { # reverse_proxy 127.0.0.1:3001 # } docker compose restart caddy
Uptime Kuma use cases
Monitor your websites and APIs
One HTTP monitor per site or critical endpoint, with a Telegram or email alert as soon as the response code falls outside the expected range.
Status page for your customers
An agency or SaaS vendor publishes the state of its services on a dedicated page, so it no longer has to answer every question by message.
Check servers and internal ports
Ping your machines, run TCP checks on a database or an SSH service, verify a Docker container: a single view of your infrastructure.
Catch certificate expiries early
Track the expiry dates of your domains' certificates and get an alert before a failed renewal takes a site offline.
Uptime Kuma FAQ
The recipe configures Caddy with tls internal, which generates a self-signed certificate for the server's IP address. Encryption is active, but the browser cannot verify the issuer. Attach a domain to the server and edit the Caddyfile to get a trusted certificate.
More about Uptime Kuma
File locations
Everything lives in /opt/uptime-kuma: the installation script install-uptime-kuma.sh, the docker-compose.yml file and the Caddyfile. Caddy runs with network_mode: host and reads the Caddyfile read-only.
Do not rerun the installation script after editing the Caddyfile: it rewrites the file with the public IP address, and you would lose your domain configuration. To apply a change, use docker compose restart caddy.
Switching from an IP address to a domain
By default, the Caddyfile contains https://IP_PUBLIQUE:443 with tls internal, which is why the certificate is self-signed. When you replace that line with a domain name and remove tls internal, Caddy requests and renews a public certificate on its own. DNS must already point to the server, otherwise the request fails.
Backups
Uptime Kuma's data is stored in the Docker volume kuma_data. The safest approach is to stop the container while you copy the data, then archive it.
Bashcd /opt/uptime-kuma docker compose stop uptime-kuma docker volume ls | grep kuma_data docker run --rm -v uptime-kuma_kuma_data:/data -v $(pwd):/backup alpine \ tar czf /backup/kuma-backup.tar.gz -C /data . docker compose start uptime-kuma
The exact volume name depends on the project folder, so check it with docker volume ls. Then copy the archive off the server. A VPS snapshot is a useful complement.
Updates
The image uses the 2 tag, which follows the 2.x releases. To get the latest version, take a backup, then run:
Bashcd /opt/uptime-kuma docker compose pull docker compose up -d
Where to run your monitoring
A monitor hosted on the server it watches cannot warn you if that entire server goes down. For important services, install Uptime Kuma on a separate VPS, for example at the other location (Paris or Frankfurt). See our tutorials to go further.

