Skip to content

Uptime Kuma

Every website in schakl. has had a monitoren (monitor this) checkbox for years, with nothing behind it. This is what finally acts on it — and it is a module rather than a webhook into some automation flow, for a reason worth stating: a monitor becomes a record. It has a client, a website, a profile, an activity trail and a place on the client page beside the domain and the hosting account it depends on.

  • Instellingen → Uptime — the servers you connect to, and the monitor profiles.
  • The Uptime card on a website or a domain.
  • On a client page, the status sits beside everything else running for that client.

Switch the integration on under Instellingen → Integraties (Settings → Integrations).

This is the first choice you make, and it decides what everything else means.

ManagedLinked
We hold a sessionYesNo
Outbound reach neededYesNo
Read monitors, import, mirrorYesOnly what it reports
Create / edit / pause monitorsYesNo
Receives statusWebhook and pollWebhook only
  1. Under Instellingen → Uptime, add a server and choose Beheerd (Managed).
  2. Fill in the address and your Uptime Kuma credentials. A session token is stored, never a password and never a two-factor secret. It is encrypted at rest and is not handed back by the API.
  3. If the server sits behind Cloudflare Access or a proxy, fill in the extra connect headers. A service token, a proxy’s shared secret or a Host override are all the same field with different values, and it is encrypted for the same reason the token is.
  4. If a Kuma was already running, choose Overnemen (Adopt): its existing monitors are read and you attach them to the website or domain they belong to, instead of recreating all of them and measuring twice for a while.

Nobody types interval=60, retries=3, resend=30, accepted=[200-299] three hundred times. A profile carries those, plus the notification channels: “Standaard website”, “Klant met SLA”, “Interne tooling”.

Three layers, and they must not fuse:

  1. Product invariants live in code — an interval below what your server accepts, or a monitor type this version does not have, is clamped whatever you configure.
  2. Your agency’s house default is a profile. A policy compiled into the source would be a decision we took for you.
  3. What is true about this one monitor lives on the monitor.

Blank means inherit, a value means override, and explicitly clearing a field is how you put “follow the default” back. The invariants clamp last, after both the profile and the monitor, so nothing you configure can slip under a floor the server would refuse anyway.

A profile can never set a URL. A profile that could would be able to point forty monitors at the wrong host in one save.

Resolving to no profile falls back to the oldest active profile of that monitor type, and if you have exactly one profile it is the default: nobody makes one profile and means “use none of it”.

Drift: what we decided, and what we last saw

Section titled “Drift: what we decided, and what we last saw”

Uptime Kuma has a web interface of its own, and it is good, so somebody will edit a monitor in it. A webhook fired once cannot notice that; a mirror can.

So what schakl. decided and what it last observed are stored in separate fields, and a check reports drift rather than silently overwriting it. Monitor payloads can carry secrets — a header with a token, a basic-auth pair — so a fingerprint of those is kept rather than the value: enough to see that something changed, without becoming a second place the secret lives.

PermissionWhat it opensDefault
uptime.instance.manageAdd, change and remove servers and profilesAdministrator
uptime.monitor.readSee monitors and their status on a website, domain or client pageAdministrator, Member
uptime.monitor.writeCreate, change, pause and link monitors (managed servers only)Administrator
  • On a linked server nothing can be created or changed. That is the contract of that mode, not a shortcoming: we send nothing into it.
  • An expired session asks you to reconnect, rather than being reported as an outage. Those are different problems with different people who can fix them.
  • Uptime Kuma has no real REST API. The connection runs over the socket its own web interface uses, which is why the range of supported versions is something to watch rather than something that takes care of itself. Tested against 2.5.0; 1.23 and newer are supported.
  • What you see is the status the server reports. It is not a second monitor: if the Kuma itself goes down, schakl. does not know that by itself.
  • An outage can become a notification in schakl., and an automation rule can react to it.