Monitorr - a Free, Open Source, Web App Status Monitor

I'm always looking for simple, useful tools, and came across this one in my various scrolling through the internet.  Monitorr is a really nicely laid out, simple, free, open source, and self hosted Web Status Monitor.

Want to know if your self hosted web sites and applications are up in a glance, then Monitorr is your dashboard for a simple view of all your sites.

It also does ping checks if you want to use it.  

Setup in Docker is quite straight forward.  

What you'll Need

  • Docker

Let's get Docker installed

If you are using Ubuntu 18.04 or 20.04, then you can use the instructions below to make a simple script that will install Docker for you.  IF you prefer, you can simply copy the lines from the script (except the first line #!/bin/bash and any line with a # in front of it) and run then one by one.

If you want to create the script first you want to make a file called "install_docker.sh"

nano install_docker.sh

Once in the file, you want to add the following lines:

#!/bin/bash
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# for Ubuntu 20.04 use this line and put a # in front of the line below for 18.04
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

#for Ubuntu 18.04 use this line and put a # in front of the line above for 20.04
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce -y

# add current user to docker group so sudo isn't needed
sudo usermod -aG docker ${USER}

Once this runs, you need to log out and back in so that the changes will allow your user to run the docker command without sudo.

Let's Install Monitorr

First, we need to make a directory for a volume mapping (essentially keeping the data persisted from inside the docker container) called "monitorr/app".

mkdir -p monitor/app

Next, we need to get our Group ID and User ID to set as an environment variable in the docker command.   Use the command:

cat /etc/passwd | grep <your username>

Replace <your username> with your actual username (login name for your machine.

brian:x:1000:1000:brian,,,:/home/brian:/bin/bash

Mine looks like the above, and my Group ID is the first 1000, and User ID is the second 1000.

Now we can run the command to startup Monitorr:

docker run -d --name=monitorr --restart=always -v /home/<your user>/monitorr/app:/app -e TZ=<your time zone> -e PGID=<groupid> -e PUID=<userid> -p 8011:80 monitorr/monitorr

Once it's done, as long as you get no errors, you'll be able to reach your Monitorr site at the IP address of the machine you install it on, and port 8011.  In my case the IP was 192.168.7.125, so I visited:

http://192.168.7.125:8011

You'll want to visit your own IP and port you used, of course.

Once, there you'll see a message saying the site needs some setup.

Click the link, and you'll be taken to the settings page.  Once there, you'll see another message about creating the directories needed.  Just click the 'Create' button, and let it run.

After it's done, you should see a form where you enter a username, email, and password for your user.  Once entered, you will save the values you enter, and then be given a pop-up saying it was successful.  Click the "Login" link on the pop-up and user your recently entered details to login.

Now you should see an overview settings page, with a menu on the left so you can navigate through the rest of the settings.

Setup a Site to Monitor

In the settings menu on the left, click the Services Configuration option.

From here, you can click the "Add Service"

Fill in the details for the URL you want to hit.  Give it  a name to identify it, and then you can add a custom icon, the logo for the service (if they have it), or upload your own.    You have to copy and paste the path info to use the Logo, so don't get frustrated when clicking it doesn't actually select it.

Select whether to monitor through http, ping, or both.  Then provide the URL for the site in each of the boxes.  Click Save, and then click Ok in the pop up.

The main page will update within about 30 seconds.

Now, just repeat this process for all of the sites you want to monitor.