Uptime Kuma with ntfy is uptime monitoring and its own alert delivery in one instance, so a failing check reaches you without any third party service in the path.
Uptime Kuma with ntfy pairs a self hosted uptime monitor with its own push notification server so that watching your systems and being told when they break are one product rather than two you have to connect. Uptime Kuma runs the checks: HTTP and HTTPS endpoints, TCP ports, DNS records, ping, certificate expiry and more, on whatever schedule you choose, with a clear dashboard of current state and history. When a check changes state it publishes the alert to the ntfy server running alongside it on the same instance. ntfy is a simple publish and subscribe notification broker with clients for Android, iOS, the browser and the command line, so the same alert can reach a phone, a terminal, a chat bot or a script. Because the broker is local, alerts do not depend on an external notification service, an API quota or an outbound webhook, and the monitoring data and the alert history both stay on your own instance.
The cloudimg image ships the two halves already wired together and already closed. First boot creates the Uptime Kuma administrator account itself, so the setup wizard that normally lets whoever reaches the instance first claim it is already used up before the web interface accepts a connection. It also generates a unique ntfy user, access token and unguessable topic, sets ntfy to deny all access by default rather than the open publish and subscribe it ships with, issues a TLS certificate for the instance, and registers the ntfy channel inside Uptime Kuma as the default, so every monitor you create alerts through the local broker with nothing to configure. No two deployments share a password, a token or a topic, and none of them is baked into the image. Both services start behind a start time guard that refuses to run on anything other than credentials generated on that instance. A paired deployment guide and 24/7 support come with it.
Real screenshots taken while testing this image against its deployment guide.