Edgible cards

Cards / uptime-kuma

uptime-kuma

Uptime Kuma, the uptime monitor, behind your org login

App cardpassed 2026-10-12, Edgible 1.4.6Source on GitHub

The apps, ports, auth modes, and places in the uptime-kuma card

Apps

AppWhatWho can reach itPlace
uptime-kumaUptime Kuma monitors and status pagesorg loginuptime-kuma

Machine

A place is one serving device. Minimum recommended for each:

PlaceMemoryDiskArchitectureGPU
uptime-kuma256 MB1.5 GBamd64, arm, arm64none

Needs it answers

Why

You want to know your sites and services are up before your users tell you. Uptime Kuma checks them on a schedule, alerts you through dozens of channels, and draws status pages, from a machine you own. This card puts its interface behind your org login.

What

One app, uptime-kuma, on the place uptime-kuma, behind org. The image is louislam/uptime-kuma:2.5.5-slim, about 180 MB. It keeps monitors in SQLite and leaves out the bundled MariaDB and the browser-based monitors; 2.5.5 is the full image, about 600 MB, if you want those. The image brings its own healthcheck.

A monitor on the same machine as what it watches cannot report that machine going down. Put this card on a different serving device from the services it checks. To use it in a card, copy the uptime-kuma service and its volume, and UPTIME_KUMA_PORT, and give it its own place.

Monitors, settings and history live in the volume uptime-kuma-data. Minimum recommended for the place uptime-kuma: 256 MB of memory and 1.5 GB of disk, on an arm64, amd64 or 32-bit arm machine, with no GPU.

The Compose file is docker-compose.yml, the settings card.env, the card card.yml, and the last test test.yml.

How

Five steps. Edit card.env before you start.

1. Fetch

mkdir -p uptime-kuma
curl -fsSL https://github.com/Edgible/cards/archive/refs/heads/main.tar.gz \
  | tar -xz --strip-components=2 -C uptime-kuma cards-main/uptime-kuma

2. Edit card.env

Set DEVICE to a name edgible device list prints.

nano uptime-kuma/card.env

3. Check

curl -fsSLo check-env.py https://raw.githubusercontent.com/Edgible/card-kit/main/check-env.py
python3 check-env.py uptime-kuma

It fills each empty secret and moves a taken port, as lines to paste. Run it again until it says no conflicts.

4. Start

docker compose --env-file uptime-kuma/card.env -f uptime-kuma/docker-compose.yml up -d --wait
docker compose --env-file uptime-kuma/card.env -f uptime-kuma/docker-compose.yml ps

--wait returns when each service is running, and healthy when it has a healthcheck. The image's own healthcheck applies, so ps shows (healthy).

5. Publish

set -euo pipefail
set -a
. uptime-kuma/card.env
set +a
device_id=$(edgible device list --json | jq -er --arg name "$DEVICE" '
  map(select(.name == $name))
  | if length == 1 then .[0].id
    else error("need exactly one device named " + $name + " (" + (map(.status + " " + .id) | join(", ")) + ")")
    end
')
edgible app create existing \
  --non-interactive \
  --name uptime-kuma \
  --port "$UPTIME_KUMA_PORT" \
  --protocol https \
  --auth-modes org \
  --device-id "$device_id"
edgible app list

Verify

uptime-kuma uses org.

curl -sS -o /dev/null -w '%{http_code} %{redirect_url}\n' "https://<uptime-kuma hostname>"

That prints 302 and an edgible.com/application-access/ address, so the org sign-in is in front. Open the hostname in a browser and sign in. The first visit creates the Uptime Kuma admin.

The rest of the setup is in the Uptime Kuma docs.

Tear down

Four steps, in this order. Step 1 runs wherever edgible is logged in. Steps 2 to 4 run on the machine that runs the containers. Steps 2 and 3 read card.env, so keep it until step 4.

1. Unpublish

edgible app delete uptime-kuma --yes

2. Stop

docker compose --env-file uptime-kuma/card.env -f uptime-kuma/docker-compose.yml down

3. Delete the data

Skip this step to keep the data. The loop copies each volume to a .tgz file in this directory first.

for volume in $(docker volume ls -q --filter label=com.docker.compose.project=uptime-kuma); do
  docker run --rm -v "$volume:/data:ro" -v "$PWD:/backup" alpine tar -czf "/backup/$volume.tgz" -C /data .
done
docker compose --env-file uptime-kuma/card.env -f uptime-kuma/docker-compose.yml down --volumes

4. Remove the card

rm -rf uptime-kuma