Uptime Kuma is a self-hosted monitoring tool that lets you monitor the uptime and performance of your websites and services. It also lets you create a public status page that displays the current status and history of your monitors.

Note: It is always recommended that you host your monitoring services on a separate server because if your main server goes down, your monitoring infrastructure will also go down.

To host Uptime Kuma on RunCloud Docker, you need to follow these steps:

Step 1: Create a New Web Application Owner

Before creating the web application, you’ll need to create a new user with the sudo privileges. You can do this easily under the “System User” tab of your server settings. If you need detailed instructions, you can read our article on creating a system user on Docker.

Step 2: Create an Empty Web Application on RunCloud

Next, you’ll need to create an empty web application on RunCloud. This will be the web application that will host your Uptime Kuma container.

To create an empty web application on RunCloud, log in to your RunCloud account and go to the “Web Application” tab in your server dashboard. Click on “Create Web App” and enter the following details:

  • Web Application Name: A name for your web application.
  • Web Application Owner: Select the owner that we created in the last step from the drop-down menu.
  • Domain Name: The domain name of your web application (e.g., status.example.com).
  • PHP Version: Choose any PHP version. It doesn’t matter because you won’t be using PHP for this web application.
  • Web Application Stack: Choose Native NGINX for better performance.

Click “Create Web Application” and wait for RunCloud to create your web application. You can see the creation progress in the Web Application Summary.

Step 3: SSH Into Your Server

After creating the application, you need to log in to your server via SSH using the credentials that we created in the first step. You can use any SSH client to connect to your server. On most computers, you can use the following command to create a connection:

ssh [email protected]

In the above command, replace the uptime-user with the name of the account that we created in the step 1, and replace 0.0.0.0 with the IP address of the server. If you need detailed instructions, read our post on creating a connection via SSH to RunCloud.

After logging in, execute the sudo docker ps command. This will give you a list of running containers along with some pertinent information. If you get an output similar to the following screenshot, then you can move to the next step.

Step 4: Create a Docker Container for Uptime Kuma on Your RunCloud Server

The fourth step is to create a Docker container for Uptime Kuma on your RunCloud server. A Docker container is an instance of a Docker image that runs your application and environment.

To deploy the container, you can run the following command. Before executing the command, make sure to replace /home/runcloud/webapps/app-cartwright with the root path of your web application that we created in step 2. You can find this in your RunCloud web application dashboard.

sudo docker run -d --restart=always -p 3001:3001 -v /home/runcloud/webapps/app-cartwright:/app/data --name my-uptime-kuma louislam/uptime-kuma:1

If you want to monitor Docker containers inside Uptime Kuma, you can map the Docker socket by creating a new volume. You can specify the volume by adding the following code snippet to the previous command -v /run/docker.sock:/var/run/docker.sock.

If you want to monitor sites that are using self-signed certificates (such as RunCloud’s Self-Signed Certificate), you will need to save the public certificate of the site somewhere on your server (for example, /etc/rc-root.pem). After this, you can map this certificate using a new volume in the container, and then specify an environment variable.

This can be done by adding the following code snippet to the previous command: -v /etc/rc-root.pem:/etc/rc-root.pem -e NODE_EXTRA_CA_CERTS='/etc/rc-root.pem'.

After adding the above code snippets, your command should look something like this:

sudo docker run -d --restart=always -p 3001:3001 -v /home/runcloud/webapps/app-cartwright:/app/data -v /run/docker.sock:/var/run/docker.sock -v /etc/rc-root.pem:/etc/rc-root.pem -e NODE_EXTRA_CA_CERTS='/etc/rc-root.pem' --name my-uptime-kuma louislam/uptime-kuma:1

Execute the above command in your SSH terminal. This will download and install the necessary dependencies. You can put this window in the background and continue to the next step.

Step 5: Configure Your Web Application on RunCloud

While the application is being deployed, you can go to your RunCloud web application settings and deploy a free SSL/TLS certificate for your web application.

The final step is to configure Nginx proxy on RunCloud to use the Docker container as its web stack. This will make your web application serve the Uptime Kuma status page instead of the default empty web application.

In your RunCloud account, select the web application that we created in step 2 and go to the NGINX Config tab. Click on the “Add a new config” button. On the next screen, change the type to location.root and write a name for this config. Finally, add the following lines to the config content block:

proxy_set_header   X-Real-IP $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header   Host $host;
proxy_pass         http://$host:3001/;
proxy_http_version 1.1;
proxy_set_header   Upgrade $http_upgrade;
proxy_set_header   Connection "upgrade";

After adding the text, click “Run and Debug“. If you get a success message, click on “Save Config“.

To learn more about Proxy settings on Uptime Kuma, refer to the official documentation.

Step 6: Access Your Uptime Kuma Status Page in Your Browser

You have successfully deployed your own free website monitoring tool using Uptime Kuma on RunCloud Docker. You can now access your Uptime Kuma status page in your browser by visiting your application URL. If you followed the steps correctly, you should see something like this:

You can configure your admin account and then add, edit, or delete monitors by clicking on the “Monitors” button at the top left corner.

You can also customize your status page by clicking on the “Status Page” button at the top right corner. After you have added a few monitors and created a status page, it will look something like this.

We hope this guide helps you host your own free website monitoring status page using Uptime Kuma on RunCloud Docker.

If you have any other questions or need help – please feel free to get in touch with our 24/7 support team. We’re here to help!