Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Shells Virtual Desktop
BMail.ag - Secure Email Service
Server.net
CPLicense.net
VPS Server
Buy VPN
Vultr
VMs for AI
HostDare
ReliableSite White-Label Dedicated Hosting for Resellers
InterServer VPS
BMail.ag - Secure Email Service
Best VPN
High-Performance Bare Metal Server Solutions
Karvl.com
Server Mania Cloud Hosting
DataWagon Hosting
AlphaVPS Hosting
Evoxt.com
Clouvider
VPS Hosting with NVMe
Residential IPs in the US & 4G Mobile Proxies in EU & US with Unlimited Bandwidth
ReliableSite White-Label Dedicated Hosting for Resellers
Rabisu - Hosting Solutions
Shells Virtual Desktop
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

Set Up Your Own 24/7 Monitoring Dashboard with Uptime Kuma

AndreixAndreix Member, Host Rep

I saw a topic about Uptime Kuma here the other day and I thought a little tutorial on how to install it won't hurt. Aleady searched on LET and I couldn't find one already written.

So, as many of you already know, downtime can mean lost revenue and frustrated users/clients. Instead of relying only on expensive third-party services (like uptimerobot), you can host your own powerful, FOSS monitoring tool called Uptime Kuma. It is a fantastic tool, with a really intuitive dashboard, that gives you a real-time view of your services' health, complete with notifications and simple (but beautiful) status pages.

This small tutorial I made, will show you how to install it on your own VPS Hosting plan, giving you full control over your monitoring setup.

Step 1: Prepare Your Server

First, connect to your server using SSH. It's always a good practice to ensure your system's package manager is up to date.

For Debian/Ubuntu systems:

sudo apt update && sudo apt upgrade -y

For RHEL/CentOS/Rocky Linux systems:

sudo dnf update -y

Step 2: Install Docker and Docker Compose

We'll use Docker for a clean, simple, and isolated installation. The official convenience script works on most Linux distributions.

# This command works for both Debian and RHEL-based systems
curl -sSL https://get.docker.com/ | sh

Start and enable the Docker service

sudo systemctl start docker
sudo systemctl enable docker

Next, you'll need the Docker Compose plugin to manage the application configuration.

For Debian/Ubuntu systems:

sudo apt-get install docker-compose-plugin -y

For RHEL/CentOS/Rocky Linux systems:

sudo dnf install docker-compose-plugin -y

Step 3: Install Uptime Kuma

The installation process is incredibly straightforward.

First, create a dedicated directory for Uptime Kuma to keep its data organized, and then move into it:

mkdir uptime-kuma
cd uptime-kuma

Next, create the docker-compose.yml file. This file is a configuration that tells Docker exactly how to run Uptime Kuma.

nano docker-compose.yml

Paste the following content into the file. This defines the Uptime Kuma service, tells it to use the latest official image, maps a local directory for persistent data storage, and opens the necessary port.

version: '3.3'

services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- ./uptime-kuma-data:/app/data
ports:
- '3001:3001'
restart: always

Save the file and exit the editor (Ctrl+X, then Y, then Enter).

Now, launch Uptime Kuma in detached mode (so it runs in the background):

sudo docker compose up -d

Step 4: Access and Configure Your Dashboard

Uptime Kuma is now running! You can access its web interface by navigating your browser to http://Your_Server_IP:3001.

You'll be greeted with a setup screen to create your admin username and password. Once you've done that, you can log in and start adding your websites and services ("monitors") to keep an eye on.

Step 5: (Recommended) Making It Production-Ready

While using the IP address works, it's not secure or professional. To take your setup to the next level, you should put it behind a domain name with a secure SSL certificate.

A. Point a Domain Name
First, you'll need a domain name. After a quick domain registration, go to your DNS provider and create an 'A' record. Point a subdomain (like status.yourdomain.com) to your server's IP address.

B. Install Nginx
Nginx will act as a reverse proxy, directing traffic from your domain to the Uptime Kuma application.

For Debian/Ubuntu systems:

sudo apt install nginx -y

For RHEL/CentOS/Rocky Linux systems:

sudo dnf install nginx -y

C. Configure Nginx
Create a new Nginx configuration file:

sudo nano /etc/nginx/sites-available/uptime-kuma.conf

Paste in the following configuration, replacing status.yourdomain.com with your actual subdomain. This tells Nginx to listen for traffic on your domain and forward it to Uptime Kuma's local port (3001).

server {
listen 80;
server_name [suspicious link removed];

location / {
    proxy_pass http://localhost:3001;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}


}

Enable this new site configuration:

sudo ln -s /etc/nginx/sites-available/uptime-kuma.conf /etc/nginx/sites-enabled/

D. Secure with Let's Encrypt SSL

Finally, let's get a free SSL certificate using Certbot.

For Debian/Ubuntu systems:

sudo apt install certbot python3-certbot-nginx -y

For RHEL/CentOS/Rocky Linux systems:

sudo dnf install certbot python3-certbot-nginx -y

Now, run Certbot. It will automatically detect your Nginx configuration, get a certificate, and configure Nginx to use it.

sudo certbot --nginx

Follow the on-screen prompts. You can now access your secure dashboard at https://status.yourdomain.com.

Enjoy your new monitoring dashboard!

NOTE: This guide is only about installing Uptime Kuma. If you want to add an extra layer of security, consider hardening your server with modsecurity for nginx.

Sign In or Register to comment.