docs: REPORT for komga healthcheck fix
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,28 +1,27 @@
|
||||
# REPORT — paperless OCR lang-pack fix (2026-06-15)
|
||||
# REPORT — komga healthcheck fix (2026-06-22, unattended test campaign)
|
||||
|
||||
Single catalog change this round: fix the paperless-ngx OCR-language crash-loop found while deploying it
|
||||
live on guest 9201 (userdata-arc close-out). Trunk-based on `main` (commits, no semver). Pairs with
|
||||
felhom-controller v0.66.2.
|
||||
## What changed
|
||||
Repointed komga's health probe from the auth-gated `/api/v1/actuator/health` (HTTP 401) to the
|
||||
unauthenticated `/actuator/health` (HTTP 200), in **both** places that probe komga:
|
||||
- `templates/komga/docker-compose.yml` — the Docker `healthcheck` (`curl -f`).
|
||||
- `templates/komga/.felhom.yml` — the controller-side `healthcheck.checks[].path` (this is what drives
|
||||
the dashboard "Nem egészséges" badge and route publishing).
|
||||
|
||||
> Validate against the pushed compose at file:line.
|
||||
## Why (diagnosed live on guest 9201)
|
||||
- The running container's docker HC `curl -f http://localhost:25600/api/v1/actuator/health` exited 22
|
||||
(HTTP 401) → container reported `unhealthy` for 18h despite serving normally on :25600.
|
||||
- The controller probe logged `Health probe komga: API GET :25600/api/v1/actuator/health → expected 200, got 401`.
|
||||
- Endpoint probe matrix (wget inside the image): `/`, `/actuator/health`, `/api/v1/oauth2/providers`,
|
||||
`/login` all → 200; only `/api/v1/actuator/health` → 401. Komga's Spring actuator is served
|
||||
unauthenticated **off** the `/api/v1` prefix.
|
||||
- The `gotson/komga:1.20.0` image ships `curl` (verified `/usr/bin/curl`), so the probe tool is unchanged.
|
||||
|
||||
## Commit
|
||||
- `67037cc` — `templates/paperless-ngx/docker-compose.yml`: `PAPERLESS_OCR_LANGUAGES` is now a fixed
|
||||
**space-separated** superset `eng hun deu` (was `${PAPERLESS_OCR_LANGUAGE:-}`, i.e. the `+`-joined
|
||||
select value).
|
||||
|
||||
## Why
|
||||
The default `PAPERLESS_OCR_LANGUAGE: "hun+eng"` (.felhom.yml) was fed verbatim into
|
||||
`PAPERLESS_OCR_LANGUAGES` — but that var is the **install list** and must be space-separated (the image
|
||||
apt-installs `tesseract-ocr-<each>`). The `+`-joined value made it try to install a bogus package
|
||||
`tesseract-ocr-hun+eng` → not found → the `hun` pack was missing → Django's startup check failed
|
||||
(`selected ocr language hun is not installed`) → **crash-loop** on the default selection. Confirmed it was
|
||||
a malformed-name bug, not network: `apt-get install tesseract-ocr-hun` (correct name) installs cleanly.
|
||||
|
||||
## Verified live (guest 9201)
|
||||
Redeployed paperless with the default `hun+eng` → boots **healthy**; `tesseract --list-langs` reports
|
||||
`deu eng hun` (all packs installed via the space-separated list). Runs as uid 1000 (USERMAP_UID/GID 1000);
|
||||
consume end-to-end works (PDF dropped into `import/paperless` → ingested + the consume file removed).
|
||||
|
||||
(The broader userdata repoint of media mounts to `${USERDATA_PATH}/...` shipped in the prior catalog
|
||||
commits — see git history / the controller REPORT.)
|
||||
## Validation (end-to-end through the real UI + server pipeline)
|
||||
1. Committed + pushed to `app-catalog` `main` (`3faa5ae` docker HC, `9b066de` controller probe).
|
||||
2. GUI "Sablonok frissítése" → controller git-sync: logs `Updated komga/docker-compose.yml` +
|
||||
`Updated komga/.felhom.yml`; catalog-cache + live stack `/opt/docker/stacks/komga/docker-compose.yml`
|
||||
both updated to `/actuator/health`.
|
||||
3. GUI "Frissítés" → `POST /api/stacks/komga/update` 200 → `docker compose up -d --remove-orphans` →
|
||||
container recreated (StartedAt 2026-06-22T13:09:50Z), "Stack komga updated successfully (4.2s)".
|
||||
4. Result: `docker ps` → `komga Up (healthy)`, HC now `/actuator/health`; controller "Health probes: ok";
|
||||
dashboard card flipped to **Fut** and the "URL nem elérhető – útvonal nincs publikálva" warning cleared.
|
||||
|
||||
Reference in New Issue
Block a user