01Not Everything Needs Prometheus
I love my Prometheus + Grafana stack. It gives me detailed metrics, custom dashboards, and powerful alerting. But it's overkill for the basic question most self-hosters care about: "Are my services up?"
Uptime Kuma answers that question beautifully. It's a single container that monitors your services via HTTP, TCP, DNS, Docker, and more. When something goes down, it alerts you via Telegram, Discord, Slack, email, or any of 90+ notification channels. The setup takes less than 2 minutes, the interface is gorgeous, and it uses almost no resources.
I run both: Prometheus for detailed infrastructure metrics, and Uptime Kuma as the first line of defense that tells me if something is actually broken.
02One-Minute Setup
Uptime Kuma is a single container with a single volume:
[docker-compose.yml]
1services: 2 uptime-kuma: 3 image: louislam/uptime-kuma:14 container_name: uptime-kuma5 restart: unless-stopped6 volumes: 7 - uptime_data:/app/data8 ports: 9 - "3001:3001"1011volumes: 12 uptime_data: 03Setting Up Monitors
After starting the container, open http://localhost:3001 and create your first monitor. Here are the monitor types I use most:
HTTP(S): Check that a web service responds with a 200 status code. Add the URL and set the check interval (I use 60 seconds for most services, 30 seconds for critical ones).
TCP Port: For non-HTTP services like databases or Redis. Just specify the host and port — if the connection succeeds, the service is up.
Docker Container: Monitor a container's running state directly. Requires mounting the Docker socket, but it catches crashes that network checks might miss.
DNS: Verify that your DNS records are resolving correctly. Useful if you're using custom DNS or have had DNS issues before.
For each monitor, set up at least one notification channel. I use Telegram for instant phone notifications and email as a backup. Uptime Kuma also generates beautiful status pages that you can share with users if you run services for others.
Use Uptime Kuma's built-in Docker monitoring by adding /var/run/docker.sock:/var/run/docker.sock:ro to your volumes. This lets you monitor container status directly without network checks.
04Public Status Pages
One of Uptime Kuma's best features is built-in status pages. You can create a public page showing the uptime of your services, complete with incident history and uptime percentages.
This is useful even for personal services — when someone in your household asks "is Jellyfin down?", you can point them to the status page instead of debugging over text messages.
For a more comprehensive monitoring setup, pair Uptime Kuma with a Prometheus + Grafana stack. Uptime Kuma handles the "is it up?" question with instant notifications, while Prometheus handles the "why is it slow?" question with detailed metrics. Check our monitoring recipes for configurations of both tools.