Getting Started with Cluster Uptime in 5 Minutes: From Zero to Monitored
The fastest way to set up your own monitoring stack. Docker Compose, configuration, and your first check in under 300 seconds.
Turn your Raspberry Pi 4 or 5 into an enterprise-grade monitoring station. A complete step-by-step tutorial with Docker Compose.
One of the most satisfying projects for any HomeLab enthusiast is building your own monitoring station. There is something visceral about having a physical device on your desk that glows green when the internet is up and red when it’s down.
The Raspberry Pi (especially the Pi 4 or the new Pi 5) is the perfect candidate for this. It’s low power, silent, and powerful enough to run a full monitoring stack.
In this guide, we will turn a fresh Raspberry Pi into a dedicated Cluster Uptime instance that can monitor your Plex server, Home Assistant, Pi-hole, and external websites.
First, ssh into your Pi. We always start by updating the packages to ensure we have the latest security patches.
sudo apt update && sudo apt upgrade -yWe will use Docker to keep our system clean. The official convenience script is the easiest way to install it on a Pi.
curl -fsSL https://get.docker.com -o get-docker.shsh get-docker.shsudo usermod -aG docker $USERLogout and log back in for the group changes to take effect.
We provide multi-arch Docker images, meaning the exact same image tag works on amd64 (Intel/AMD) and arm64 (Raspberry Pi/M1 Mac).
Create a directory for your monitoring stack:
mkdir ~/uptime-monitorcd ~/uptime-monitorCreate a docker-compose.yml file:
version: '3.8'
services: clusteruptime: image: clusteruptime/clusteruptime:latest container_name: uptime-core restart: unless-stopped ports: - "3000:3000" volumes: - ./data:/app/data environment: - DATA_DIR=/app/data - DISABLE_TELEMETRY=true # Optional: Privacy focusStart the stack:
docker compose up -dNavigate to http://raspberrypi.local:3000 in your browser. You should see the Cluster Uptime welcome screen.
Raspberry Pis run on SD cards, which have limited write cycles. A monitoring tool writing logs every second can kill an SD card in a few months.
./data volume.Now, let’s add some local monitors. Since the Pi is inside your network, it can see things the outside internet can’t.
http://192.168.1.5/adminhttp://192.168.1.10:32400/webhttp://192.168.1.1 (Check for simple Ping)Since we are on a Pi, let’s use the GPIO pins! You can wire a simple LED to GPIO Pin 18.
Here is a simple Python script (using libraries usually available on Pi) to sync the LED with your status:
import RPi.GPIO as GPIOimport timeimport requests
GPIO.setmode(GPIO.BCM)GPIO.setup(18, GPIO.OUT)
while True: try: # Check Cluster Uptime API r = requests.get('http://localhost:3000/api/status') status = r.json()['status']
if status == 'up': GPIO.output(18, GPIO.HIGH) # Green Light On else: GPIO.output(18, GPIO.LOW) # Light Off (or Red) except: pass time.sleep(10)Now you have a physical monitoring appliance for under $50.
Founder
The fastest way to set up your own monitoring stack. Docker Compose, configuration, and your first check in under 300 seconds.
Stop paying for basic monitoring. A step-by-step guide to exporting your monitors from UptimeRobot and importing them into self-hosted Cluster Uptime.
How to shrink your Docker images from 1GB to 5MB. Multi-stage builds, static linking, and security benefits.
Get uptime monitoring and incident response tactics delivered weekly.