Uptime Kuma on the host it watches
Dies with the host.
Kernel panic, full disk, power cut: the monitor goes down in the same second as everything it monitors. The last state it ever showed was all green, and nothing is left to send the alert.
Comparison
Uptime Kuma is a good, free uptime monitor, and for plenty of setups it is enough. This page is about what changes when the things you monitor are Docker containers published on a tailnet.
Same DockTail agent · one environment variable · runs next to Uptime Kuma without conflict
The same outage, twice
Grafana gets OOM-killed at 14:22. Both tools notice within a minute. Here is what each one hands you.
docker ps, check the Tailscale admin console, is the box even up?
14:22:06 fatal: runtime: out of memory The process died. Cloud attaches the Docker event: exit code, OOM kill, failing healthcheck, restart loop, and a log tail captured at the moment it happened.
The container answers, nobody can reach it. The Tailscale control plane says the service is awaiting approval, not advertised by this host, or gone. An uptime check on the tailnet FQDN cannot tell this from a crash.
The box went silent. Heartbeats stop, and the tailnet confirms whether the machine is gone or only the agent is. Every service on it is reported as one host outage, not twelve.
Blast radius
Alerting has to sit outside the thing it alerts on. That is not a knock on Uptime Kuma, it is a property of any monitor you host yourself.
Uptime Kuma on the host it watches
Kernel panic, full disk, power cut: the monitor goes down in the same second as everything it monitors. The last state it ever showed was all green, and nothing is left to send the alert.
Uptime Kuma on a second box
Now there are two machines to keep up, the second one needs tailnet reachability to every service, and it still only sees the tailnet FQDN from the outside. When the whole host goes, you get one alert per service and no word on the host itself.
DockTail Cloud
The agent dials out; nothing dials in. Silence from a host is itself the signal, and other agents on the tailnet report whether the device is still in their netmap. One host incident, with the vitals from right before it stopped talking.
Configuration
In Uptime Kuma every service is a monitor you create: a type, a URL or host and port, an interval, a notification. It is quick the first time and stale the third time a container gets renamed, moves to another host, or comes up on a different Docker IP.
Cloud has no monitor to create. The docktail.* labels that publish the service are the monitor definition, and the target is read from Docker on the host, on every pass. Add a labeled container and it is watched. Remove it and its monitor retires with it.
grafana:
image: grafana/grafana:11.3.0
labels:
- docktail.service.enable=true
- docktail.service.name=grafana
- docktail.service.port=3000 Side by side
The honest comparison is against the two free tools people actually use together: Uptime Kuma for liveness and the Tailscale admin console for exposure. Cloud is the intersection.
| DockTail Cloud | Uptime Kuma | Tailscale admin console | |
|---|---|---|---|
| Monitors derived from Docker labels | ✅ Nothing to define | ❌ One monitor per service, by hand | — Not a monitor |
| Tells container, exposure and host apart | ✅ Two vantages read together | ❌ Up or down | ❌ Exposure only |
| Docker evidence on the incident | ✅ Exit code, OOM, healthcheck, restart loop, log tail | ⚠️ Container monitor: running or not | ❌ |
| Tailscale service approval state | ✅ Read from the control plane, alerts on it | ❌ | ⚠️ Shown, but nothing alerts you |
| Keeps detecting when the host dies | ✅ Detection runs in Cloud | ⚠️ Only if hosted somewhere else | ⚠️ Device shows offline, no alert |
| Host vitals without a metrics stack | ✅ CPU, memory, load, temperature | ❌ | ❌ |
| Funnel services probed from the public internet | ✅ Cloud probes them itself | ⚠️ If Kuma runs outside your tailnet | ❌ |
| Alert channels | ✅ Slack, Telegram, ntfy, webhook, email | ✅ 90+ providers | ❌ |
| Public status pages | ❌ | ✅ | ❌ |
| Monitors things that are not Docker containers | ❌ DockTail services and the hosts they run on | ✅ HTTP, ping, DNS, TCP, certificates | ❌ |
Uptime Kuma column is based on the project's own documentation. If we got something wrong, tell us.
Keep Uptime Kuma if
Add Cloud if
Both run side by side. Cloud publishes no ports and touches no monitor of yours, so it never gets in Uptime Kuma's way.
Questions
docktail.* labels that publish a service are its monitor definition, and the target is read from Docker on the host on every pass. Add a labeled container and it is watched. Remove it and its monitor retires with it.DOCKTAIL_CLOUD_KEY. It publishes no ports and touches none of your monitors, so Uptime Kuma stays exactly where it is.Other comparisons
Getting Docker containers onto a tailnet, or onto the internet.
Set DOCKTAIL_CLOUD_KEY on an agent you already run and leave Uptime Kuma exactly where it is. Homelab and Team start with a 30-day trial of the full plan; cancel before it ends and you are not charged.