Deployment guide

Checkmate

Overview

Checkmate, by BlueWave Labs, is an open-source uptime, infrastructure and incident monitoring platform. It continuously checks the availability and response time of your websites, HTTP APIs, TCP ports, ping targets, DNS records and more. It shows their status, uptime percentage and response-time history in a clean React dashboard backed by a REST API.

You add a monitor for each endpoint you care about and set the check interval. Checkmate records every result, so you can see current status at a glance and be alerted the moment something goes down.

The SecureAnyCloud image installs Checkmate 3.9.2 from the pinned upstream release under /opt/checkmate and builds the React client and the Node.js server. The server runs as the dedicated checkmate system user, bound to loopback 127.0.0.1:52345. All monitoring data is stored in a local MongoDB 8.0, and nginx fronts the dashboard on port 80. Checkmate's check queue is MongoDB-backed, so there is no separate Redis to run.

Secure by default: the image ships with no default credential. On the first boot of every VM, a unique JWT signing secret and a unique MongoDB password are generated at random. MongoDB is bound to loopback with authorization enabled, and a single administrator account is registered for you with a random per-instance password written to a root-only file. Self-registration closes after that first account, so the dashboard is never left open.

What you get:

  • Checkmate 3.9.2 (AGPL-3.0) under /opt/checkmate (React client and Node.js server, built from source)
  • Local MongoDB 8.0 Community, bound to 127.0.0.1, authorization enabled, WiredTiger cache capped for the VM size
  • checkmate.service running as checkmate, bound to 127.0.0.1:52345
  • nginx reverse proxy on port 80, serving the static React client and proxying /api to the server, WebSocket-aware and ready for TLS
  • checkmate-firstboot.service, which rotates the per-VM secrets and registers your administrator on first boot
  • Node.js 22 runtime
  • Ubuntu 24.04 LTS base, patched at build time, unattended security upgrades enabled
  • 24/7 SecureAnyCloud support, 24h response SLA

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet with a subnet.

The recommended VM size is Standard_B2s. 4 GB RAM is comfortable for the dashboard, the server and a local MongoDB.

1

Deploy from the Azure Portal

Search the Marketplace for Checkmate on Ubuntu 24.04 and choose your VM size.

Attach a network security group (NSG) that allows TCP 22 (SSH) from your management network and TCP 80 and 443 (the dashboard) from the networks that need it. In production, front port 80 with TLS (see Step 12). Only nginx listens externally. The Node server and MongoDB are bound to loopback.

2

Deploy from the Azure CLI

RG="checkmate-prod"; LOCATION="eastus"; VM_NAME="checkmate-01" IMAGE_URN="sac1647283583153:checkmate-ubuntu-24-04:default:latest" SSH_KEY="$(cat ~/.ssh/id_rsa.pub)" az group create --name "$RG" --location "$LOCATION" az network vnet create -g "$RG" --name checkmate-vnet --address-prefix 10.90.0.0/16 --subnet-name checkmate-subnet --subnet-prefix 10.90.1.0/24 az network nsg create -g "$RG" --name checkmate-nsg az network nsg rule create -g "$RG" --nsg-name checkmate-nsg --name allow-ssh --priority 100 \
  --source-address-prefixes "<your-mgmt-cidr>" --destination-port-ranges 22 --access Allow --protocol Tcp az network nsg rule create -g "$RG" --nsg-name checkmate-nsg --name allow-web --priority 110 \
  --source-address-prefixes "<your-mgmt-cidr>" --destination-port-ranges 80 443 --access Allow --protocol Tcp
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:checkmate-ubuntu-24-04:default:latest
az vm create -g "$RG" --name "$VM_NAME" --image "$IMAGE_URN" \
  --size Standard_B2s --storage-sku StandardSSD_LRS \
  --admin-username azureuser --ssh-key-values "$SSH_KEY" \
  --vnet-name checkmate-vnet --subnet checkmate-subnet --nsg checkmate-nsg --public-ip-sku Standard
3

Connect via SSH

ssh azureuser@<vm-ip>
4

Verify the services are running

MongoDB and the Checkmate Node server listen on loopback. nginx fronts the dashboard on port 80 and proxies the API.

sudo systemctl is-active mongod checkmate nginx
sudo ss -tln | grep -E ':80 |127.0.0.1:52345 |127.0.0.1:27017 ' curl -s -o /dev/null -w 'GET /api/v1/health -> HTTP %{http_code}\n' http://127.0.0.1/api/v1/health

All three services report active. MongoDB is bound to 127.0.0.1:27017, the Node server to 127.0.0.1:52345, and nginx to :80. The health endpoint returns HTTP 200 through nginx.

5

Retrieve your administrator credentials

The image ships with no default credential. On first boot, Checkmate generates a per-VM JWT signing secret and MongoDB password. It also registers a single administrator with a random password stored in a root-only file. Read it over SSH:

sudo grep -E 'bindIp|authorization' /etc/mongod.conf
sudo stat -c '%n perms=%a owner=%U:%G' /root/checkmate-credentials.txt curl -s http://127.0.0.1/api/v1/auth/users/superadmin; echo
sudo cat /root/checkmate-credentials.txt

MongoDB is bound to loopback with authorization enabled, and the credentials file is 600 root:root. Exactly one superadmin exists, so self-registration is closed. The file gives you the URL, admin email and admin password for this VM:

CHECKMATE_URL=http://<vm-ip>/ CHECKMATE_ADMIN_EMAIL=admin@checkmate.local CHECKMATE_ADMIN_PASSWORD=<unique-per-vm-password>
6

Sign in

Open http://<vm-ip>/ in your browser. Enter the email and password from /root/checkmate-credentials.txt and click Login.

7

The uptime dashboard

After signing in you land on the Uptime dashboard. It summarizes how many monitors are up, down, paused or initializing. It also lists each monitor with its live status, response time and uptime percentage.

8

Add your first monitor

Click Create. Choose the monitor Type (HTTP(S), Ping, Docker, Port, Game, gRPC, WebSocket or DNS). Enter the URL or address to watch, give it a display name, set the check interval, and save.

9

Watch it live

Checkmate starts checking immediately. Open a monitor to see how long it has been active, its last check and last response time, and the certificate expiry for HTTPS targets. Charts show uptime and response time over your chosen window.

10

The runtime stack

node -v nginx -v mongod --version | head -1
node -p "require('/opt/checkmate/client/package.json').version"

Node.js 22 runs the server, nginx fronts it, MongoDB 8.0 stores the data, and the pinned Checkmate release is 3.9.2.

11

Data and persistence

All monitoring data lives in the local MongoDB under /var/lib/mongodb, which is captured into the image and carried onto every instance.

sudo du -sh /var/lib/mongodb systemctl is-enabled checkmate-firstboot.service checkmate.service apt-mark showhold

The database directory is present, the services are enabled for the next boot, and there are no held packages. The OS security baseline is intact.

12

Enable HTTPS

nginx already fronts Checkmate on port 80 and is ready for TLS. Point a DNS record at your VM, then obtain a certificate with certbot:

sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d <your-domain> --agree-tos -m <your-email> --redirect

certbot installs the certificate, rewrites the nginx server block for TLS, and sets up automatic renewal.

If you serve the dashboard on a custom domain, set CLIENT_HOST in /etc/checkmate/checkmate.env to your https:// URL. Then run sudo systemctl restart checkmate so the server accepts requests from that origin.

Managing the service

sudo systemctl status checkmate
sudo systemctl restart checkmate
sudo journalctl -u checkmate -f

The Node server logs to the journal, and nginx logs are under /var/log/nginx/. After you sign in as the administrator, add more users from Settings in the dashboard.

Back up the instance by snapshotting the OS disk, or run mongodump against the local database while the service is stopped.

Support

SecureAnyCloud provides 24/7 support for this image by email and live chat. Support covers deployment, nginx TLS termination, upgrades, notification integrations and performance tuning. Email sales@secureanycloud.com.

This is a repackaged open-source software product with additional charges for SecureAnyCloud support services. Checkmate is licensed under the GNU AGPL-3.0 and is a trademark of its respective owner. All product and company names are trademarks or registered trademarks of their respective holders. Their use does not imply any affiliation with or endorsement by them.

Deploy on Azure

Launch Checkmate on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure