Uptime Kuma

Uptime Kuma
Photo by Daniel Korpai / Unsplash

I had a thought that a monitoring tool would come in handy. Getting a notification when a website or an application goes down is always handy. My first challenge with setting up a monitoring tool is how worthless it is if it is on the same host, network, and internet connection. So I would need to have the monitoring tool somewhere else. Thankfully we're in an age of cloud providers like Amazon Web Services, Microsoft Azure, Google Cloud Platform, Oracle Cloud, a thousand smaller choices. I've been working in the "Cloud" for twelve years now, so it was easy enough to spin up a cheap virtual private server running Ubuntu.

I first took a look at OneUptime, but it looks like it will be a little more resource intensive than I need or want. I also took a look at Uptime Kuma, which seems much more my speed for this project.

Install Uptime Kuma

Steps performed on VPS

  • sudo mkdir /apps
  • sudo mkdir /apps/Uptime-Kuma
  • cd /apps/Uptime-Kuma
  • sudo nano /docker-compose.yml
# Simple docker-compose.yml for Uptime-Kuma
# You can change your port or volume location

version: '3.3'

services:
  Uptime-Kuma:
    image: louislam/uptime-kuma:latest
    container_name: Uptime-Kuma
    volumes:
      - ./uptime-kuma-data:/app/data
    ports:
      - 3001:3001  # <Host Port>:<Container Port>
    restart: always
  • I saved the docker-compose.yml file
  • sudo docker-compose pull
  • sudo docker-compose up -d
  • sudo docker-compose ps
    • Uptime-Kuma /usr/bin/dumb-init –- extr ... Up (healthy) 0.0.0.0:3001->3001/tcp,:::3001->3001/tcp

Ok, I have it running now, but I run into some trouble accessing the application via a web browser. Each cloud provider always seems to do it just a little bit differently but was able to get it opened and working after a few minutes. I set up a quick monitor for Monica CRM as a test before I stop to eat some lunch.

After coming back from lunch I set up a DNS A record for status.domain.com and point it to my VPS. Then I proceed with setting up a monitor for each of my homelab's applications.