I was looking for some simple and clean status page for monitoring various azure services as well as having an external status page that I can share with another team. When I started researchin, I came across Uptime Kuma, which is an open-source, self-hosted monitoring tool, developed by Louis Lam. More details you can find on his Github repo. I am absolutely delighted with this quite simple but truly powerful tool and its straightforward implementation.
Techno Tim is giving a nice walkthru of uptime-Kuma, so if you have time to spend and want to see all of the features, check the video down below.
There is also an image on docker-hub, which can easily be pulled with the latest tag, mount needed volume, and voila, you have it up and running. As simple as that.
If you’d like to deploy it on Azure Container Instance, but you don’t want to use another service to enable a TLS endpoint like Azure Application Gateway, then this could be a nice solution.
Keep in mind that exposing an endpoint like this without some security boundary in front might not be smart, but since we are using a container we can also destroy it with two clicks if needed, or even automate self-destruct with some conditional logic and functions.
Deployment to Azure
We will use two containers in a group, deployed on a single ACI instance, also using a dummy self-generated certificate just for a test purpose, you can replace this with your own later.
In this part, we will configure Nginx.conf file to use the TLS certificate (created in the steps above), and set it up as a reverse proxy. It will listen for incoming traffic on HTTPS port and forward everything to uptime-kuma container on port 3001.
In deployment.yaml file we need to paste the full output of base64 encoded files that will be added to secret volume in the container group, we also need to create volume Uptime-Kuma with an empty directory and mount it in the container Uptime-Kuma-app.