Deployment guide

CheckCle

Overview

CheckCle is an open-source, self-hosted monitoring platform for uptime and infrastructure. It watches servers, HTTP and TCP services, SSL certificates, ping targets and scheduled jobs, tracks incidents, sends alerts, and publishes public operational status pages, all from one dashboard.

Its backend is PocketBase, a single Go binary with an embedded SQLite database and a realtime API. CheckCle ships as a single Docker image that also bundles the CheckCle web frontend and a Go monitoring worker.

The SecureAnyCloud image installs Docker CE from the official Docker repository and runs CheckCle 1.6.0 as a container, managed by Docker with a restart policy. The container is bound to the loopback connector 127.0.0.1:8090, behind an nginx reverse proxy on port 80. nginx is configured with the WebSocket/SSE upgrade that CheckCle's realtime dashboards use.

CheckCle's data lives on a dedicated Azure data disk. The factory admin that the upstream image seeds is rotated to a unique, strong password on the first boot of every VM, before the port 80 proxy is opened. No instance is ever reachable with a known default login.

What you get:

  • CheckCle 1.6.0 running as a container managed by Docker
  • Docker CE preinstalled from the official Docker apt repository
  • The CheckCle web UI on :80, fronted by nginx with the WebSocket/SSE upgrade proxied
  • A unique admin password generated on first boot and recorded in a root-only file, with the well-known factory login rotated away
  • A dedicated Azure data disk at /opt/checkcle/pb_data that holds the SQLite database, monitoring history and file storage
  • docker.service and nginx.service as systemd units, enabled and active
  • An unauthenticated /healthz endpoint for Azure Load Balancer health probes
  • 24/7 SecureAnyCloud support

Prerequisites

  • An active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.
  • Standard_B2s (2 vCPU, 4 GiB RAM) is a reasonable starting size. Size up for many monitored services or shorter check intervals.
  • NSG inbound rules that allow 22/tcp from your management network and 80/tcp.

CheckCle serves plain HTTP on port 80. For production, terminate TLS in front of it with your own domain (see Maintenance).

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for CheckCle by SecureAnyCloud, and select Create.

On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80).

Review the dedicated data disk on the Disks tab, then choose Review + create and Create.

Step 2 - Deploy from the Azure CLI

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:checkcle-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name checkcle \
  --image sac1647283583153:checkcle-ubuntu-24-04:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name checkcle --port 80 --priority 1010

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the services are running

systemctl is-active docker.service nginx.service

Both report active. Docker manages the CheckCle container, which is bound to the loopback connector 127.0.0.1:8090. nginx fronts it on port 80 with the WebSocket/SSE upgrade that CheckCle's realtime dashboards require.

CheckCle's SQLite database, monitoring history and file storage live on the dedicated Azure data disk mounted at /opt/checkcle/pb_data.

Step 5 - Retrieve your admin password

CheckCle signs in with an email and password. On first boot, the well-known factory admin is rotated to a unique password for your VM, and the password is written to a root-only file:

sudo cat /root/checkcle-credentials.txt

The file contains CHECKCLE_ADMIN_EMAIL (admin@example.com), the generated checkcle.admin.pass, and the URL to open.

Store the password somewhere safe.

Step 6 - Confirm the health endpoints

nginx serves an unauthenticated static health endpoint for load balancers and probes. CheckCle's PocketBase backend exposes its own health API:

curl -s http://localhost/healthz

It returns ok. This endpoint never requires authentication, so you can use it for an Azure Load Balancer health probe.

Step 7 - Confirm access is protected

The upstream image ships a well-known factory login (admin@example.com / Admin123456). On first boot, SecureAnyCloud rotates that password to the unique per-VM value from Step 5 before nginx opens port 80, so the default login never works on your instance.

Confirm that a superuser-only resource refuses an unauthenticated request:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8090/api/collections/_superusers/records

It prints 403, which means the resource is protected.

The screenshot below shows the full proof captured on a live VM. The health probe returns ok, the unauthenticated superuser request is refused with 403, and the factory password is rejected with 400. Only the per-VM password issues an authentication token.

Step 8 - Sign in to the console

Browse to http://<vm-public-ip>/. CheckCle shows a sign-in page. Enter admin@example.com and the password from Step 5.

Step 9 - Explore the monitoring dashboard

Once you are signed in, the Overview dashboard is your home page. It summarises up, down, paused and warning services and lists everything you are currently monitoring.

Select New Service to add an uptime check for an HTTP endpoint, TCP port, ping target or scheduled job.

Step 10 - Monitor SSL certificates and domains

Open SSL & Domain in the sidebar to track certificate validity across your domains. CheckCle groups certificates into valid, expiring-soon and expired, and can alert you before a certificate lapses.

Select Add Domain to start monitoring one.

Step 11 - Plan maintenance and track incidents

Open Schedule & Incident to record planned maintenance windows and manage incidents. Scheduled maintenance is grouped into upcoming, ongoing and completed. Incidents that you open here can be surfaced on your public operational status page.

Step 12 - Confirm data lives on the dedicated disk

CheckCle's SQLite database, monitoring history and file storage are stored under /opt/checkcle/pb_data on the dedicated Azure data disk, which is bind-mounted into the container as /mnt/pb_data. The data survives OS changes, and the disk can be resized independently:

findmnt /opt/checkcle/pb_data

The mount is backed by a separate Azure data disk that is captured into the image and re-provisioned on every VM.

Maintenance

  • Admin password: the admin password is rotated on first boot. To change it again, sign in and use the account menu, or update the superuser with sudo docker exec checkcle /app/pocketbase superuser update admin@example.com '<new-password>' --dir /mnt/pb_data.
  • Add monitors: use New Service on the dashboard to add HTTP, TCP, ping and scheduled-job checks. Configure per-service intervals, thresholds and notifications.
  • Notifications: configure alert channels (email, Telegram, Slack, Discord and webhooks) under the settings panel, then attach them to services and incidents.
  • Status pages: publish a public operational status page from Operational Page to share uptime with your users.
  • Upgrades: CheckCle runs as the checkcle container from the pinned operacle/checkcle:v1.6.0 image. To upgrade, pull a newer tag, remove the container, and re-run it with the same -v /opt/checkcle/pb_data:/mnt/pb_data mount so that your data is preserved.
  • Storage: all CheckCle state lives under /opt/checkcle/pb_data on the data disk. Back up that volume to protect your monitoring history.
  • TLS: CheckCle serves plain HTTP on port 80. Front it with TLS (for example, certbot with your own domain) before running it in production.
  • Security patches: unattended-upgrades remains enabled, so the OS continues to receive security updates automatically.

Support

SecureAnyCloud provides 24/7 expert support for this image. Contact sales@secureanycloud.com.

Deploy on Azure

Launch CheckCle 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