homelab-codex-ws/services/kb-site/healthcheck.sh
oskar 2c5894d70b feat(kb-site): serwis nginx na PIHA + manifesty (wzorzec narty27)
services/kb-site/ — nginx:alpine serwujacy wolumen kb-site_content
(:ro, /usr/share/nginx/html), pelny layout z CLAUDE.md: docker-compose.yml,
service.yaml, README-wskaznik, env.example (swiadomie pusty — brak sekretow),
healthcheck.sh. Wpis w hosts/piha/services.yaml.

Port hosta 8250, NIE 8240 z opisu zadania: 8240 jest juz zajete przez narty27
(services/narty27/docker-compose.yml). Blok statyczny PIHA to 8210 paperless,
8220 nextcloud, 8230 kb-query, 8240 narty27 -> 8250 to nastepny wolny.
Uzgodnione z operatorem.

exposure: public — w odroznieniu od narty27 ta wystawka ma byc dostepna z
internetu przez vhost npm@PIHA kb.okit.pl; bind :8250 jest upstreamem proxy,
nie punktem wejscia.

Tresc jest czystym artefaktem repo (wyjscie scripts/kb/gen_pages.py), zyje
wylacznie w wolumenie kb-site_kb-site_content — bez binda pod /opt/homelab/data
i bez zadania backupu: odtworzeniem jest regeneracja z kb/.

Sprawdzone lokalnie: docker compose config -q, bash -n healthcheck.sh,
yaml.safe_load na obu manifestach.
2026-08-04 17:59:05 +02:00

22 lines
711 B
Bash
Executable file

#!/bin/bash
# Healthcheck for kb-site (nginx:alpine serving the generated public KB)
# Container must be running
if ! docker ps --filter "name=kb-site" --filter "status=running" | grep -qw "kb-site"; then
echo "[FAIL] kb-site container is not running"
exit 1
fi
# The index is generated on every run, so both the bare root and /index.html
# must answer. An empty volume means the content was never loaded — see
# kb/runbooks/kb-site-deploy.md.
for path in "" index.html; do
if ! curl -sf -o /dev/null "http://127.0.0.1:8250/${path}"; then
echo "[FAIL] kb-site is not serving /${path} on 127.0.0.1:8250 (content loaded?)"
exit 1
fi
done
echo "[OK] kb-site is healthy"
exit 0