docker run -d --restart=unless-stopped -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2, open http://your-server-ip:3001 and create your admin account. For a public install, publish it on 127.0.0.1:3001 instead and serve it through Nginx with HTTPS and WebSocket headers.
Before you start
- Uptime Kuma is a self-hosted monitoring tool. It checks websites, ports, ping and more on a schedule and alerts you through email, Discord, Telegram and many other services. It can also publish status pages.
- Keep
/app/dataon local disk (a Docker volume or a local folder). Uptime Kuma’s docs warn that NFS shares can corrupt its SQLite database. - Uptime Kuma can’t alert you that its own server is down. To watch your main server, run it on a different server.
How to install Uptime Kuma with Docker Compose
1
Create a project folder
2
Create compose.yaml
127.0.0.1: keeps port 3001 off the internet, because ports published by Docker bypass ufw. If you won’t use a reverse proxy and accept plain HTTP, use "3001:3001".3
Start it
4
Create your admin account
Open the site (through the reverse proxy below, or
http://203.0.113.10:3001 if you published the port publicly). If setup asks which database to use, SQLite is the simplest choice for one server. Then create the admin username and password.docker run equivalent:
How to put Uptime Kuma behind Nginx with HTTPS
Uptime Kuma uses WebSockets, so the proxy must pass theUpgrade and Connection headers.
1
Point a domain at the server
Create an
A record such as status.example.com pointing to your server IP. See point a domain to your server.2
Create the Nginx site
Install Nginx (guide), then create
/etc/nginx/sites-available/uptime-kuma (Ubuntu/Debian) or /etc/nginx/conf.d/uptime-kuma.conf (AlmaLinux/Rocky):3
Enable it and test
On Ubuntu/Debian, enable the site first:Then test and reload:
4
Add a free certificate
5
Trust the proxy
In Uptime Kuma, open Settings > Reverse Proxy and set Trust Proxy to Yes, so it logs real visitor IPs.
How to check it worked
Up, and curl returns an HTTP response header. Add your first monitor with Add New Monitor, for example an HTTP(s) monitor for https://example.com.
How to update Uptime Kuma
Back up thedata folder first. Then:
docker run, pull louislam/uptime-kuma:2, then docker stop uptime-kuma, docker rm uptime-kuma and run the same docker run command again. Your data stays in the volume.
Frequently asked questions
What port does Uptime Kuma use?
Port 3001 (TCP) inside the container. You can map a different server port, for example"8081:3001".
Can I upgrade from Uptime Kuma 1 to 2?
Yes, by switching the image tag tolouislam/uptime-kuma:2. The upgrade converts the database and can take from minutes to hours on large installs. Back up data first and don’t interrupt it. Read the migration notes before you start.
How do I get email alerts?
Open Settings > Notifications, choose Setup Notification, pick Email (SMTP) and enter your mail provider’s SMTP details. Then attach the notification to each monitor.How do I make a public status page?
Open Status Pages, create a page, give it a slug and add monitors to it. The page is public at/status/<slug>.
Related guides
VPS and dedicated server guides
Every guide in this section.
Email alerts when your server goes down
Other ways to get downtime alerts.
Docker Compose tutorial
How compose.yaml works.
Nginx reverse proxy
Serve containers on your domain.
Netdata monitoring
Live CPU, memory and disk graphs.
Checked against the official Uptime Kuma wiki on 4 November 2026 (image tag
louislam/uptime-kuma:2); compose.yaml and the Nginx configuration syntax-tested on Ubuntu 24.04 LTS. Menu names can change between Uptime Kuma releases.Need Extra Help?
If you encounter any issues, our support team is ready to assist:- Live Chat: Quick assistance via our website.
- Support Ticket: Open a Ticket
- Discord: Join our Community
- Email: support@freakhosting.com
Last Updated: November 2026