A few weekends ago, I was hit with some overnight downtime that was unexpected. I didn’t discover this until a few days later when I attempted to use one of my services and found that it was refusing to sync. A few hours later, I diagnosed the issues and had them repaired. My worry though? What if I really really really needed those services and since I didn’t know they went down, I wouldn’t be prepared?
Of course, most people will preach the power of battery backups and ensuring your containers are set to always restart, likewise with VM hosts. There are always instances where those solutions won’t work, but in my case, I just wanted to know if something went down. A few of my must-haves were:
- Accessiable via outside internet.
- An alert system of some sort.
- Adjustable heartbeats and notification thresholds.
I finally landed on Uptime-Kuma. I used the free tier of Oracle VPS to host this lightweight uptime monitor (No point in having the uptime monitor at the same location of those items in my eyes) and with a simple cloudflared tunnel, outside access was set up easily. I set up my initial user and was on my way.
While the official Uptime-Kuma github runs it’s Docker container as a standalone run command, I converted it to docker-compose.yml for ease of management and use. A version of that can be found below.
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
You’ll be greeted by the dashboard at first, from here, you can manipulate different settings, add monitors and create status pages based on use. Some settings can be set as defaults so that all monitors follow those options.
While my use of Uptime-Kuma is rather simple, they do offer quite a few features and the ability to tie into Docker Hosts, Steam servers and a multitude of notification methods. Below is an example of what they tout on their main page.
- Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record / Push / Steam Game Server / Docker Containers.
- Fancy, Reactive, Fast UI/UX.
- Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and 90+ notification services, click here for the full list.
- 20 second intervals.
- Multi Languages
- Multiple Status Pages
- Map Status Page to Domain
- Ping Chart
- Certificate Info
- Proxy Support
- 2FA available
Uptime-Kuma offers possibly one of the simplest methods of providing an uptime monitor to your services. I currently have it set to notify me via a private discord server if a service becomes non-responsive, and the ability to create status pages allows me and friends to quickly check if a service went down recently. You can have multiple status pages, each customized with different services and the ability to have service alerts on those pages. You can also set your URL to redirect to a status page by default, keeping basic traffic away from your dashboard login.
So far, Uptime-Kuma has been one of the easiest services I’ve ever set up. Double that with its ability to integrate with notification methods, tie ins to hosting services, and status page support, I can’t image needing to find a new monitor anytime soon. While I haven’t had any outages since, all the testing that I’ve done by turning services off has been perfect. Insanely fast notifications and I have no more worries regarding being unaware if my stuff goes down.
I could see Uptime-Kuma being an easy addition to a business or service that needs to monitor multiple items – I’ve already contemplated methods of using this in my current line of business. I don’t think I have a single negative thing to say regarding Uptime-Kuma at this point in time, rather I’m excited to see where it goes from here.