Poprzedni commit nauczyl gen_pages.py dopisywac token do linkow, ale nic go nie podawalo — publikacja poszlaby stara sciezka i dalaby build z golymi linkami, czyli stan sprzed fiksa. kb-site nie ma skryptu deployu: generator wolany jest wylacznie recznie z runbooka (kroki 2 i 7), wiec to tam token musi wejsc. Zrodlo tokenu: /opt/homelab/config/kb-site/.env na wezle GENERUJACYM (SATURN/SOLARIA), nie na PIHA. To swiadome odstepstwo od konwencji config/<serwis>/ z CLAUDE.md — plik trzyma zwykle sekrety wezla, ktory serwis uruchamia, a ten token jest potrzebny tam, gdzie serwis sie generuje. Kontener nginx dalej nie ma zadnej konfiguracji ani sekretow; odnotowane w service.yaml i env.example, zeby nikt nie szukal .env na PIHA. Token idzie zmienna srodowiskowa (set -a; . plik; set +a), nie flaga --access-token: argument z linii polecen laduje w historii shella i jest widoczny w ps dla kazdego uzytkownika wezla. Lancuch publikacji z kroku 7 dostal dwa nowe ogniwa przed scp: test -n "$ACCESS_TOKEN" (pusty token = build nieklikalny) oraz grep -q 'key=' w index.html (token byl, ale nie dojechal do generatora). Oba zatrzymuja publikacje tak samo jak --check. Krok 6 weryfikuje teraz wlasciwa rzecz: wyciaga href ze spisu i pobiera GO, zamiast recznie sklejac URL — czyli testuje to, co faktycznie bylo zepsute. Doszedl tez negatywny test bramki (bez tokenu ma NIE byc 200). Tabela problemow: "index sie otwiera, ale klikniecie daje 403" (build bez tokenu) i "403 takze z tokenem" (rotacja tokenu w NPM rozjechana z plikiem — stary build zostaje z martwym tokenem w kazdym linku). kb/services/kb-site.md (public) — sekcja Access: token siedzi teraz w tresci kazdej serwowanej strony, wiec jedna zapisana strona wydaje go w calosci. Model zagrozen bez zmian (URL wejsciowy zawsze go niosl), ale warto, zeby dokument mowil to wprost obok zdania "to obscurity, not access control". Test: sekwencje z krokow 2 i 7 przepuszczone na symulowanym pliku tokenu (prod /opt/homelab nietkniety) — token obecny: Token: TAK, 4x key= w index.html, lancuch dochodzi do tar; token pusty: staje na pierwszym ogniwie, brak tgz; build bez tokenu przy ustawionej zmiennej: staje na grep, brak tgz. check_okf.py exit 0, gen_pages --check exit 0, service.yaml parsuje sie. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| audits | ||
| decisions | ||
| incidents | ||
| nodes | ||
| phases | ||
| runbooks | ||
| services | ||
| subsystems | ||