← Harden & defendUptime Kuma: free self-hosted uptime monitoring and alerts

Uptime Kuma: free self-hosted uptime monitoring and alerts

here's a fun fact nobody enjoys learning the hard way: most people find out their server is down because a customer emails them, or because they happen to refresh their own site at 2am for no reason. that's not monitoring, that's luck. uptime kuma fixes this for free, self-hosted, and with almost zero setup pain.

what uptime kuma actually is

uptime kuma is an open source monitoring tool you run yourself. it pings your stuff on a schedule and tells you the second something stops responding. think of it as the free, self-hosted cousin of those paid "is my site up" services, except your data stays on your own box instead of feeding someone else's dashboard.

for defenders, this matters more than it sounds. a monitoring tool isn't just about "is the website up." it's an early warning system. a service that suddenly drops offline, a port that unexpectedly closes, or a tls cert that's about to expire can all be signs of something going wrong, whether that's a crashed process, a misconfigured firewall, or an attacker messing with your box. you want to know first, not last.

running it in docker

you don't need to install a pile of dependencies or fight with node versions. docker handles all of that isolation for you, which also means if something's misconfigured, it's contained to the container and not smeared across your whole system.

docker run -d --restart=unless-stopped \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:1

quick breakdown so you're not just copy pasting blind:

-d runs it in the background. --restart=unless-stopped means if your server reboots, kuma comes back up on its own, which matters because a monitoring tool that's also down defeats the whole purpose. -p 3001:3001 maps the web dashboard to a port on your machine. -v uptime-kuma:/app/data stores your monitor configs and history in a named volume so you don't lose everything if you rebuild the container. once it's running, you hit your server's ip on port 3001 and set up your admin account.

what to actually monitor

once it's up, add monitors for the things that matter on your network: ping checks for servers and devices, http checks for websites and web apps, tcp port checks for services like ssh, databases, or self-hosted apps, and tls expiry checks so you're not the person who finds out their cert expired because a user screenshotted a browser warning at you.

the tls expiry check alone is worth setting up kuma for. expired certs are one of the most common, most avoidable self-inflicted outages out there, and they're completely silent until they're not.

getting alerted where you'll actually see it

a monitoring tool that just sits on a dashboard nobody's looking at is useless. kuma can push alerts to telegram, discord, ntfy, or plain email, so pick whatever you actually check throughout the day. the point is you hear it from the tool, not from an angry customer, a confused coworker, or a user tweeting at you.

set up at least one alert channel that doesn't live on the same network you're monitoring. if your home internet goes down, an email alert to your phone on cellular data still reaches you. an alert that only lives inside your own network is a monitoring tool that fails exactly when you need it most.

the bonus: a public status page

kuma can generate a clean, shareable status page showing current uptime for whatever services you choose to expose. this is genuinely useful for small teams or homelab folks who are tired of answering "hey is the server down?" in five different chat threads. it also builds a little trust if other people depend on something you host.

the takeaway

monitoring isn't glamorous, but it's one of the highest-value things you can set up in under ten minutes. it costs nothing, it runs in a single container, and it turns "i found out my service was down from a stranger" into "i got a push notification before anyone noticed." if you're running anything on a server, a vps, or a homelab, this is the kind of boring, unsexy defense that actually saves you a bad day. set it up once, point it at the things you care about, and let it do the worrying for you.

watch the reel ↗
the weekly drop

one command a week that makes you harder to hack.

a single tool, explained in plain english, every week. straight to your inbox.

no spam. one email a week. unsubscribe anytime.