As a developer, there’s nothing worse than finding out from an angry user that your website is down. Usually, you don’t know your server has crashed until someone complains.
And while many SaaS tools can monitor your site, they often charge high monthly fees for simple alerts.
My goal with this article is to help you stop paying those expensive fees by showing you a powerful, free, open-source alternative called Uptime Koma.
In this guide, you’ll learn how to use Docker to securely deploy UptimeComma to a local Ubuntu machine.
By the end of this tutorial, you’ll have your personal server monitoring dashboard set up in less than 10 minutes and an automatic discard alert set up to ping your phone if your website goes offline.
Table of Contents
Conditions
Before you begin, make sure you have:
An Ubuntu machine (such as a local server, VM, or desktop).
Docker and Docker Compose installed.
Basic knowledge of Linux terminal.
Step 1: Update the packages and prepare the firewall.
First, you’ll want to make sure your system has the latest updates. Then, you’ll install Uncomplicated Firewall (UFW) and open the network “door” (port) that Uptime Coma uses for the dashboard. You’ll also need to allow SSH so you don’t lock yourself out.
Run these commands in your terminal:
- Update your packages:
sudo apt update && sudo apt upgrade -y
- Install the firewall:
sudo apt install ufw -y
- Allow SSH and open port 3001:
sudo ufw allow ssh
sudo ufw allow 3001/tcp
- Enable the firewall:
sudo ufw enable
sudo ufw reload
Step 2: Create the Docker Compose file
Using a docker-compose.yml File is a professional way to manage Docker containers. It keeps your setup organized in one place.
To get started, create a new folder for your project and enter it:
mkdir uptime-kuma && cd uptime-kuma
Then create the configuration file:
nano docker-compose.yml
Paste the following code into the editor:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
volumes:
- ./data:/app/data
ports:
- "3001:3001"
Note: gave ./data:/app/data The line is very important. This saves your database to a common folder on your machine, making it easy to back up later.
Finally, press Save and Exit: CTRL + Xthen Ythen Enter.
Step 3: Start the application.
Now, tell Docker to read your file and start the monitoring service in the background.
docker compose up -d
How to verify: Docker will download the files. When it’s finished, your terminal should print. Started uptime-kuma.
Step 4: Access the dashboard.
To access the dashboard, first open your web browser and go to (or your machine’s local IP address).
When prompted to select a database, select SQLite. It’s easy, fast, and requires no additional setup.
Then create an account and choose a secure admin username and password.

Step 5: Use Case – Monitor the website and send Discord Alerts.
Now you’ll put Uptime Kuma to work by monitoring a live website and setting up alerts. Just follow these steps:
Click Add New Monitor.
Set the monitor type.
HTTP(s).Give it a friendly name (for example, “My Blog”) and enter the URL of your website.

Pro Tip: How to Fix “Bottom” Errors (Boot Protection)
If your site uses strict security, it may block the uptime comma and say your site is “down” with a 403 Forbidden error.
Accuracy: Scroll down to Advanced, find the User Agent box, and paste this text to make the uptime comma look like a normal Chrome browser:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Add a discard alert.
To get a message on your phone when your site goes down:
On the right side of the monitor screen, click Setup Notifications.
Select Discord from the drop-down list.
Paste the Discord webhook URL (you can create one in your Discord server settings under Integration).
Click Test to get a test ping, then click Save.
The result
Congratulations! You’ve just taken control of your server’s health. By deploying Uptime Kuma, you’ve replaced an expensive SaaS subscription with a powerful, free monitoring tool that alerts you when another project goes offline.
Let’s connect! I’m a developer and technical writer specializing in writing step-by-step guides and workflows. You can find my latest projects on my Technical writing portfolio Or contact me directly. LinkedIn.