⚙️ 🤖 ghcr.io: Tags via Bearer-Token holen (401 → "Keine Tags erreichbar") #9

Closed
opened 2026-07-27 16:03:58 +02:00 by holm · 1 comment
Owner
Dimension Bewertung Einschätzung
Aufwand ██░░░░░░░░ Niedrig — ein neuer case-Zweig analog dock.mau.dev
Nutzen ████████░░ Hoch — alle ghcr.io-Images (audiobookshelf u.a.) sind sonst blind
Bruchhäufigkeit ██████░░░░ Mittel — jeder Statuslauf mit ghcr-Image betroffen
Nachhaltigkeit █████████░ Sehr hoch — einmal gelöst, dauerhaft
Dringlichkeit █████░░░░░ Mittel — Versionsdrift wird sonst nicht erkannt

Problem

doc-rel meldet für ghcr.io/advplyr/audiobookshelf:latest:

audiobookshelf          ghcr.io/advplyr/audiobookshelf:latest
    ⚠ Keine Tags erreichbar

GitHub führt jedoch 157 Releases (Latest v2.35.1).

Ursache

_fetch_tags_raw() hat Sonderzweige nur für dock.mau.dev (JWT) und docker.io (Hub-API). ghcr.io fällt in den generischen *)-Zweig (doc-rel.sh:262), der tags/list ohne Bearer-Token abruft. ghcr.io verlangt aber auch für public Images einen Token:

$ curl -s https://ghcr.io/v2/advplyr/audiobookshelf/tags/list
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required"}]}

jq -r '.tags[]' bekommt dann nichts → leere Liste → "Keine Tags erreichbar".

Beweis (live)

Mit anonymem ghcr-Token liefert dieselbe URL 129 Tags inkl. 2.35.0, 2.35.1:

token=$(curl -s 'https://ghcr.io/token?service=ghcr.io&scope=repository:advplyr/audiobookshelf:pull' | jq -r .token)
curl -s -H "Authorization: Bearer $token" 'https://ghcr.io/v2/advplyr/audiobookshelf/tags/list?n=1000' | jq '.tags|length'
# 129

Fix

Neuer ghcr.io)-Zweig in _fetch_tags_raw() analog dock.mau.dev, mit ghcr-Token-Endpoint. Sortierung ist bereits durch fetch_tags (sort -rV) abgedeckt.

🤖 angelegt von Claude v00 (API/Token holm)

| Dimension | Bewertung | Einschätzung | |---|---|---| | Aufwand | `██░░░░░░░░` | Niedrig — ein neuer `case`-Zweig analog `dock.mau.dev` | | Nutzen | `████████░░` | Hoch — alle ghcr.io-Images (audiobookshelf u.a.) sind sonst blind | | Bruchhäufigkeit | `██████░░░░` | Mittel — jeder Statuslauf mit ghcr-Image betroffen | | Nachhaltigkeit | `█████████░` | Sehr hoch — einmal gelöst, dauerhaft | | Dringlichkeit | `█████░░░░░` | Mittel — Versionsdrift wird sonst nicht erkannt | ## Problem `doc-rel` meldet für `ghcr.io/advplyr/audiobookshelf:latest`: ``` audiobookshelf ghcr.io/advplyr/audiobookshelf:latest ⚠ Keine Tags erreichbar ``` GitHub führt jedoch 157 Releases (Latest v2.35.1). ## Ursache `_fetch_tags_raw()` hat Sonderzweige nur für `dock.mau.dev` (JWT) und `docker.io` (Hub-API). **ghcr.io** fällt in den generischen `*)`-Zweig (`doc-rel.sh:262`), der `tags/list` **ohne** Bearer-Token abruft. ghcr.io verlangt aber auch für public Images einen Token: ``` $ curl -s https://ghcr.io/v2/advplyr/audiobookshelf/tags/list {"errors":[{"code":"UNAUTHORIZED","message":"authentication required"}]} ``` `jq -r '.tags[]'` bekommt dann nichts → leere Liste → "Keine Tags erreichbar". ## Beweis (live) Mit anonymem ghcr-Token liefert dieselbe URL **129 Tags** inkl. `2.35.0`, `2.35.1`: ``` token=$(curl -s 'https://ghcr.io/token?service=ghcr.io&scope=repository:advplyr/audiobookshelf:pull' | jq -r .token) curl -s -H "Authorization: Bearer $token" 'https://ghcr.io/v2/advplyr/audiobookshelf/tags/list?n=1000' | jq '.tags|length' # 129 ``` ## Fix Neuer `ghcr.io)`-Zweig in `_fetch_tags_raw()` analog `dock.mau.dev`, mit ghcr-Token-Endpoint. Sortierung ist bereits durch `fetch_tags` (`sort -rV`) abgedeckt. > 🤖 angelegt von Claude v00 (API/Token holm)
Author
Owner

Gefixt in fb84cc7 (Branch dev): neuer ghcr.io)-Zweig in _fetch_tags_raw() holt anonymen Bearer-Token analog dock.mau.dev.

Live-Verify gegen den audiothek-Stack:

audiobookshelf          ghcr.io/advplyr/audiobookshelf:latest
    Deployed:      ✓ aktuell  (latest)

Tags jetzt erreichbar (129 Stück, u.a. 2.35.1). Sortierung newest-first ist durch fetch_tags (sort -rV) bereits abgedeckt.

🤖 angelegt von Claude v00 (API/Token holm)

Gefixt in `fb84cc7` (Branch `dev`): neuer `ghcr.io)`-Zweig in `_fetch_tags_raw()` holt anonymen Bearer-Token analog `dock.mau.dev`. Live-Verify gegen den audiothek-Stack: ``` audiobookshelf ghcr.io/advplyr/audiobookshelf:latest Deployed: ✓ aktuell (latest) ``` Tags jetzt erreichbar (129 Stück, u.a. `2.35.1`). Sortierung newest-first ist durch `fetch_tags` (`sort -rV`) bereits abgedeckt. > 🤖 angelegt von Claude v00 (API/Token holm)
holm closed this issue 2026-07-27 16:06:21 +02:00
Sign in to join this conversation.
No description provided.