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
|
|
|
# kb-site has NO configuration and NO secrets.
|
|
|
|
|
#
|
|
|
|
|
# The port bind (8250:80) is static and the content lives in the
|
|
|
|
|
# kb-site_kb-site_content Docker volume, generated from kb/ by
|
|
|
|
|
# scripts/kb/gen_pages.py. This file exists only to keep the
|
|
|
|
|
# services/<service>/ layout from CLAUDE.md complete — there is nothing to
|
|
|
|
|
# copy to .env.
|
|
|
|
|
#
|
|
|
|
|
# The public address is a generator argument, not an env var:
|
2026-08-05 12:34:13 +02:00
|
|
|
# python3 scripts/kb/gen_pages.py --base-url https://kb-e2a24af3.okit.pl
|