From 3faa5ae193731a92a1672a7d936678211323624c Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Mon, 22 Jun 2026 15:03:37 +0200 Subject: [PATCH] =?UTF-8?q?komga:=20fix=20healthcheck=20=E2=80=94=20probe?= =?UTF-8?q?=20unauthenticated=20/actuator/health=20(was=20401=20on=20/api/?= =?UTF-8?q?v1/...)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The /api/v1 prefix is auth-gated → old HC got 401 → curl -f failed → container reported unhealthy while serving fine. Diagnosed live on guest 9201. Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 10 ++++++++++ templates/komga/docker-compose.yml | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0564478 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +## 2026-06-22 — komga healthcheck fix (unattended test campaign) +- **komga**: healthcheck probe repointed `/api/v1/actuator/health` → `/actuator/health`. + - Root cause: komga's Spring Boot actuator endpoint is served unauthenticated at `/actuator/health` + (HTTP 200), while everything under the `/api/v1` prefix is auth-gated — so the old probe got + HTTP 401, `curl -f` exited 22, and the container reported `unhealthy` despite serving normally + on :25600. Diagnosed live on guest 9201 (probe matrix: `/`, `/actuator/health`, + `/api/v1/oauth2/providers`, `/login` all 200; `/api/v1/actuator/health` → 401). + - The `gotson/komga:1.20.0` image ships `curl` (verified), so the probe tool is unchanged. diff --git a/templates/komga/docker-compose.yml b/templates/komga/docker-compose.yml index 316fcff..37f83a3 100644 --- a/templates/komga/docker-compose.yml +++ b/templates/komga/docker-compose.yml @@ -35,8 +35,12 @@ services: resources: limits: memory: 512M + # HC override: komga's actuator lives at /actuator/health (unauthenticated, 200), NOT under the + # auth-gated /api/v1 API prefix — the old /api/v1/actuator/health returns 401 so `curl -f` failed + # (exit 22) and the container reported "unhealthy" despite serving fine. The gotson/komga image + # ships curl (verified), so curl -f on the unauthenticated endpoint is the correct probe. healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:25600/api/v1/actuator/health"] + test: ["CMD", "curl", "-f", "http://localhost:25600/actuator/health"] interval: 30s timeout: 5s retries: 3