fix(audiobookshelf): set the port with the env names the image actually reads
The first deploy of the unit failed its own health gate in the worst possible shape: systemd said active (running), the engine logged a clean database init, and the server then listened on :80 under base path /audiobookshelf - so every probe of :8000 was refused and wait_for_health timed out at 180s beside a container that looked healthy. Cause: ABS_PORT / ABS_CONFIG_DIR / ABS_METADATA_DIR / ABS_PUID are the npm package's names, printed by the server README; this image never reads them. Its own contract, read off the pinned digest with podman inspect, is PORT=80 CONFIG_PATH=/config METADATA_PATH=/metadata, and the server greps for exactly PORT, CONFIG_PATH, METADATA_PATH, ROUTER_BASE_PATH. The two path variables appeared to work only because the image already exports the same values - the coincidence that made the inert lines look correct. The unit now speaks the image's names, adds ROUTER_BASE_PATH=/ so the service is the plain host:port the docs and the homepage card promise, and the dead ABS_* lines are deleted instead of kept as decoration. Proven against the same digest in a throwaway container (temp state dirs, loopback-only mapping, removed after): base path "/", listening on :8000, GET /healthcheck -> 200, and the old prefixed path -> 404. Guards: the quadlet seam now refuses an Environment=ABS_* line and requires PORT/ROUTER_BASE_PATH; the vault page gains the law with its failure signature and the two-second image-inspect check. Suite: ALL TESTS PASSED, 812 ok.
This commit is contained in:
1 parent
a6ec644ecb
commit
3c035ccef3
3 files changed
+34
-6
No files matched your search
@@ -175,3 +175,15 @@ load helpers
|
||||
printf '%s\n' "$body" | grep -q 'audiobookshelf/metadata' || return 1
|
||||
printf '%s\n' "$body" | grep -q 'wait_for_health audiobookshelf' || return 1
|
||||
}
|
||||
|
||||
@test "audiobookshelf sets its port and base path with the names the image reads" {
|
||||
# Measured 2026-11-02 on the first deploy: ABS_PORT / ABS_CONFIG_DIR are the npm
|
||||
# package's names and this image ignores them, so the server came up on :80
|
||||
# under base path /audiobookshelf and the deploy gate timed out beside a unit
|
||||
# that was active (running). PORT and ROUTER_BASE_PATH are what the image's own
|
||||
# ENV block and the server source actually use.
|
||||
unit="$REPO_ROOT/dankserver/audiobookshelf/quadlet/audiobookshelf.container"
|
||||
grep -q '^Environment=PORT=8000$' "$unit" || return 1
|
||||
grep -q '^Environment=ROUTER_BASE_PATH=/$' "$unit" || return 1
|
||||
! grep -qE '^Environment=ABS_' "$unit" || return 1
|
||||
}
|
||||
Reference in new issue
Block a user