From f377a5a387e1c38566d9a73831837610d6b95a5f Mon Sep 17 00:00:00 2001 From: Daniel Maksymilian Syrnicki Date: Mon, 20 Apr 2026 15:34:28 +0200 Subject: [PATCH] feat(uptime-kuma): add status-monitor app to the catalog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit louislam/uptime-kuma:1 with one data volume and port 3001. Admin account bootstrapped from the first browser visit to :3001 — no Furtka settings form needed. Catalog release 26.7-alpha. Co-Authored-By: Claude Opus 4.7 (1M context) --- CHANGELOG.md | 14 +++++++++++++- apps/uptime-kuma/docker-compose.yaml | 29 ++++++++++++++++++++++++++++ apps/uptime-kuma/icon.svg | 4 ++++ apps/uptime-kuma/manifest.json | 10 ++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 apps/uptime-kuma/docker-compose.yaml create mode 100644 apps/uptime-kuma/icon.svg create mode 100644 apps/uptime-kuma/manifest.json diff --git a/CHANGELOG.md b/CHANGELOG.md index e1de2b5..c779c69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,17 @@ Versioning: CalVer (`YY.N`) — same scheme as the core Furtka repo. ## [Unreleased] +## [26.7-alpha] - 2026-04-20 + +### Added + +- **Uptime Kuma** (v1.0.0, image `louislam/uptime-kuma:1`). Self-hosted + status monitor — pings hosts, checks HTTPS endpoints, watches Docker + containers, and screams on Telegram/webhook when something breaks. + No manifest settings: the admin account is created on the first + browser visit to port 3001. Persists history + config via one + namespaced volume `furtka_uptime-kuma_data`. + ## [26.6-alpha] - 2026-04-20 ### Added @@ -20,5 +31,6 @@ Versioning: CalVer (`YY.N`) — same scheme as the core Furtka repo. the vendored `furtka.manifest.load_manifest` + cross-checks compose volume references). -[Unreleased]: https://forgejo.sourcegate.online/daniel/furtka-apps/compare/26.6-alpha...HEAD +[Unreleased]: https://forgejo.sourcegate.online/daniel/furtka-apps/compare/26.7-alpha...HEAD +[26.7-alpha]: https://forgejo.sourcegate.online/daniel/furtka-apps/releases/tag/26.7-alpha [26.6-alpha]: https://forgejo.sourcegate.online/daniel/furtka-apps/releases/tag/26.6-alpha diff --git a/apps/uptime-kuma/docker-compose.yaml b/apps/uptime-kuma/docker-compose.yaml new file mode 100644 index 0000000..4e338a3 --- /dev/null +++ b/apps/uptime-kuma/docker-compose.yaml @@ -0,0 +1,29 @@ +# Furtka Uptime Kuma — self-hosted status monitor. +# +# The volume `furtka_uptime-kuma_data` is created by the Furtka reconciler +# from the manifest's "volumes" list before this compose file is brought +# up; it's declared `external: true` here so docker compose doesn't try +# to manage its lifecycle. +# +# Image pin: `louislam/uptime-kuma:1` tracks the 1.x major and rolls new +# patch/minor releases in place. Good enough for now — revisit to a +# digest once the Furtka app-update UI reports a diff so users can see +# what moved. +# +# No admin bootstrap via env vars: Kuma creates its admin account from +# the first browser visit to :3001. That's a deliberate Kuma design +# choice, and it's why this app has no manifest.settings — nothing for +# the Furtka install form to ask. + +services: + kuma: + image: louislam/uptime-kuma:1 + restart: unless-stopped + ports: + - "3001:3001" + volumes: + - furtka_uptime-kuma_data:/app/data + +volumes: + furtka_uptime-kuma_data: + external: true diff --git a/apps/uptime-kuma/icon.svg b/apps/uptime-kuma/icon.svg new file mode 100644 index 0000000..09ac698 --- /dev/null +++ b/apps/uptime-kuma/icon.svg @@ -0,0 +1,4 @@ + diff --git a/apps/uptime-kuma/manifest.json b/apps/uptime-kuma/manifest.json new file mode 100644 index 0000000..c714a61 --- /dev/null +++ b/apps/uptime-kuma/manifest.json @@ -0,0 +1,10 @@ +{ + "name": "uptime-kuma", + "display_name": "Uptime Kuma", + "version": "1.0.0", + "description": "Self-hosted status monitor for services, ports, and devices on the LAN.", + "description_long": "Überwacht andere Geräte und Dienste im Netzwerk und schickt dir Bescheid, wenn etwas ausfällt. Nach der Installation den Admin-Account direkt im Browser unter http://furtka.local:3001 anlegen, dann Monitore (Ping, Webseite, Port, Docker-Container) hinzufügen.", + "volumes": ["data"], + "ports": [3001], + "icon": "icon.svg" +}