Skip to main content

Uptime Kuma Shows Down but the Container Is Running: How to Diagnose It

GuideWritten by oncall.fyi editorialPublication approved by Burak YApproval recorded 11 September 2026
Sources and verification
Source dates
Oldest source check: 10 September 2026.
Technical verification
Separate technical verification has not been recorded.

Publication approval and technical verification are recorded separately. Automated link checks establish reachability, not accuracy. A checked example verifies only its stated test cases, not the whole article or your production setup.

In short

Repeat the failing request from the monitoring container’s network context, using the same scheme, hostname, port and path as the monitor. Compare DNS resolution, connection, TLS and the actual HTTP response. A running container only confirms a process exists. Fix the layer that fails, then stop the demo application deliberately to verify the corrected monitor still detects a real outage.

Key takeaways

  • Localhost inside Kuma normally refers to Kuma itself.
  • Host-published ports and container ports are different access paths.
  • A browser success may depend on cookies, redirects or a different network.

Capture the exact failing request

Write down the monitor type, URL, accepted status codes, redirect behavior, timeout, authentication and latest error. Redact credentials before sharing diagnostics. “Container is running” is a process observation; a healthy HTTP check additionally requires an address that resolves, a reachable listener and an acceptable response.

Before changing anything, compare the host's result with the monitor's result at the same time. A browser can use a different DNS answer, saved session or public proxy route.

Check from the monitoring container

For an example deployment whose Kuma container is named uptime-kuma, this uses its Node runtime to make a bounded request. Replace the example URL and container name. It prints response metadata, not the body or credentials.

bash
docker exec uptime-kuma node -e '
fetch(process.argv[1], {
  signal: AbortSignal.timeout(10000), redirect: "manual"
}).then(r => {
  console.log("status", r.status);
  console.log("redirect", r.headers.get("location"));
  if (!r.ok) process.exitCode = 1;
}).catch(e => {
  console.error(e.message, e.cause?.code || "");
  process.exitCode = 1;
});
' 'http://app:8080/health'

This tests the network context and a basic HTTP request. It does not reproduce every Kuma monitor setting: match authentication, method and redirect policy separately. Node's fetch support is required; if unavailable, use an approved diagnostic tool in that same network context.

Interpret the result

ObservationInspect nextTypical correction
Name does not resolveNetwork membership and service nameUse a resolvable name on a shared user-defined network
Connection refusedListener and portUse the port where the application listens
Connection times outRoute and firewallPermit the intended monitor-to-service path
TLS validation errorHostname, chain and trust storeCorrect the certificate or install the appropriate trusted CA
Redirect or login responsePath and authenticationMonitor the intended authenticated or public health endpoint
HTTP 200 with wrong contentHealth endpoint semanticsAssert the expected readiness signal

Docker's network documentation (opens in a new tab) explains container network isolation and DNS. With a mapping such as 8088:8080, a client using the host's published address connects to port 8088; a peer reaching the container directly uses its listening port 8080. localhost inside Kuma refers to that container unless you deliberately use a networking mode that changes this behavior.

Do not disable certificate validation or accept every HTTP status to turn the dashboard green. If a private CA is intended, configure trust. If authentication is required, give the checker a narrowly scoped account.

Verify the fix both ways

Record the failing observation, make one configuration change and repeat it. Then stop a disposable demo service. Kuma should report the failure and the expected responder should receive it. Restore the service and confirm recovery. A fix that only makes the success case green may have disabled the check's ability to detect failure.

Keep the target URL and network choice in the service runbook, along with a redacted copy of the error. The upstream troubleshooting page (opens in a new tab) is useful for version-specific investigation after locating the failing layer.

Did this help?

Your answer helps us improve this guide. We save only the page and your choice for 30 days.

No name, email, or incident details are requested.

Frequently asked

Should I use localhost in the monitor URL?
Only when the service really shares Kuma’s network namespace. For separate containers, use the intended reachable service address and port.
Does this mean Uptime Kuma is broken?
Not necessarily. The failure may be in DNS, reachability, TLS, authentication or the service response. Capture the specific error before attributing the cause.

Sources

Vendor facts change. Each source below shows the date this page last checked it.

  1. Networking overview Docker. Checked 10 September 2026.
  2. Uptime Kuma troubleshooting Uptime Kuma. Checked 10 September 2026.

Related

One practical idea, occasionally

The On-Call Brief: short field notes, templates, and operational lessons.

Follow the field guide

Email subscriptions are not open yet. Read new guides in your feed reader — no email address needed.

Subscribe with RSS