homelab-codex-ws/kb/decisions/kb-dokumenty-otwarte.md
oskar 4658089e21 fix(kb): przepiecie wszystkich odwolan wewnetrznych po migracji
126 plikow (md, yaml, sh, py) odwolywalo sie do sciezek sprzed migracji.

  15  markdown-linkow [..](..) -> policzona sciezka WZGLEDNA wobec pliku
      odsylajacego (wczesniej czesc z nich byla repo-root-relative i nie
      rozwiazywala sie z katalogu, w ktorym lezala)
 200  odwolan tekstowych (backticki, proza, yaml, importy w kodzie)
      -> nowa sciezka repo-root-relative, zgodnie z konwencja repo
   5  linkow rodzenstwa (gole nazwy plikow, np. "](DEPLOY.md)") — dzialaly
      tylko w starym katalogu; przeliczone recznie

Objete m.in.: CLAUDE.md (scripts/onboard/README.md -> kb/runbooks/
node-onboarding-tool.md, docs/backlog.md -> kb/phases/backlog.md),
README.md, .claude/skills/, 20 session logow, kod jobow.

Ostatnie 5 odwolan pochodzi z tresci wciagnietej rebasem z origin/master
(session log 2026-07-31, override node-agenta na SOLARII, dwie pozycje
backlogu) — wskazywaly na docs/incidents/, docs/kb/modules/ i
services/narty27/README.md sprzed migracji.

Dodany wzajemny link miedzy kb/services/control-plane.md (stub kodu)
a kb/subsystems/control-plane.md (opis, deprecated) — dwa dokumenty o tym
samym systemie, latwe do pomylenia.

Weryfikacja na 790 plikach: 0 odwolan do starych sciezek,
0 martwych linkow markdown. Lint OKF: 190/190 plikow ZGODNE.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 16:58:46 +02:00

5.3 KiB
Raw Blame History

okf type visibility status updated links
0.1 decision private planned 2026-07-09

Decyzje do podjęcia — filar dokumentów (moduły 2/3/4)

Zbiorcza lista decyzji z przygotowania configów (2026-07-06, branch task/paperless-nextcloud-config; decyzje podjęte 2026-07-09, branch task/paperless-decyzje). Configi są zaktualizowane wg decyzji poniżej — NIC nie zostało zdeployowane, ten etap to tylko edycja plików w repo.

Otwarte — do zrobienia PRZY DEPLOYU (nie są to już decyzje, tylko kroki wykonawcze)

3. Porty (potwierdzić na żywym PIHA przed deployem)

Dobrane wg inwentaryzacji 2026-06-30 (snapshot! zweryfikować ss -tlnp):

Port Serwis Uwagi
8210 paperless web za npm@PIHA
5434 paperless postgres 5433 zajęte przez kb-postgres
6380 paperless redis (broker dla workera) 6379 zajęte przez agent-system-redis
8220 nextcloud web teraz na PIHA (decyzja #1) — potwierdzić że nadal wolny

Wszystkie bindowane na LAN IP (nie 0.0.0.0); ruch worker↔broker/DB/NFS po LAN 192.168.31.x, nie Tailscale.

7. Wyłączenie lokalnego loginu w Paperless po weryfikacji OIDC

Bootstrap idzie przez lokalnego admina (PAPERLESS_ADMIN_USER). Po potwierdzeniu działania Forgejo-OIDC: ustawić PAPERLESS_DISABLE_REGULAR_LOGIN=true + PAPERLESS_REDIRECT_LOGIN_TO_SSO=true (decyzja podjęta — wykonać dopiero po potwierdzonym logowaniu OIDC; Vikunja ma dziś oba tryby równolegle, ten sam wzorzec przejściowy).

9. Sizing workera OCR pod batch 70k załączników

WORKER_CONCURRENCY=4 × PAPERLESS_THREADS_PER_WORKER=4 = ~16 wątków na 24 rdzeniach SOLARII. Przed batchem 70k (moduł 5): zmierzyć na próbce i zdecydować, czy podbić concurrency, czy zostawić zapas na ollama/AI.


Rozstrzygnięte

  • 1. Host Nextclouda: PIHA. Oskar używa Nextclouda aktywnie (telefon, sync, rodzina) → musi być always-on; sesyjna dostępność SOLARII (sync dogania się dopiero po wybudzeniu) nie jest akceptowalna dla tego workloadu — mimo że moduł 4/kb-02 skłaniały się ku SOLARII (KB i tak czyta własną kopię z archiwum na PIHA, więc host Nextclouda nie warunkuje zapytań KB). service.yaml: owner_node: piha. .env: LAN_BIND_IP = 192.168.31.5, TRUSTED_PROXIES = docker bridge subnet (npm i nextcloud na tym samym hoście teraz). Uzasadnienie pełne: services/nextcloud/README.md.

  • 2. Backup Paperlessa: SOLARIA (LAN), na start. Nocny document_exporter (oryginały + archiwa + manifest, odtwarzalny bez dumpa SQL) → /opt/homelab/data/paperless/export, kopia poza hosta przez rsync/borg → SOLARIA (2 TB, ta sama LAN). Retencja: 7 dziennych + 4 tygodniowe + 6 miesięcznych. Offsite (np. restic → chmura) zostaje jako future-note, poza zakresem tego etapu. Cron/skrypt deployowy powstaje przy deployu modułu 2, nie teraz. Szczegóły: kb/services/paperless.md.

  • 4. Redis brokera: requirepass. Broker (6380) dostaje hasło — PAPERLESS_REDIS_PASSWORD w .env po obu stronach (paperless@PIHA, paperless-worker@SOLARIA), placeholder CHANGEME w env.example, realne hasło tylko w .env (gitignored). Healthchecki obu stron zaktualizowane o auth.

  • 5. Fallback-worker na PIHA a indeks Whoosh po NFS: zaakceptować i obserwować. Ryzyko wyścigu na plikowym indeksie Whoosh (PIHA lokalnie

    • SOLARIA po NFS) świadomie zaakceptowane — indeks jest odtwarzalny (document_index reindex), oryginałom nic nie grozi. Bez zmian w configu; fallback-worker na PIHA zostaje. Szczegóły: kb/services/paperless-worker.md.
  • 6. Domeny: kapala.org (mesh, prywatne). paper.kapala.org (Paperless), cloud.kapala.org (Nextcloud) — potwierdzone, *.okit.pl odrzucone. DNS i vhosty NIE utworzone w tym etapie — tylko udokumentowane w READMY serwisów (wzorzec: rekord A w Cloudflare → 100.108.208.3, Tailscale PIHA, DNS Only, ten sam co ha.kapala.org/immich.kapala.orgdocs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md; wildcard *.kapala.org już pokrywa obie subdomeny, nowe certy niepotrzebne). OAuth redirect URIs w Forgejo apps zapisane w READMY obu serwisów.

  • 8. Pin wersji Nextclouda: 34-apache. Zweryfikowany aktualny stable na 2026-07-09 (wydany 2026-06-09, endoflife.date/nextcloud). Zamiast ruchomego stable-apache. Nextcloud wydaje nowy major co ~4 miesiące i nie wspiera przeskakiwania wersji przy upgrade — TODO przy deployu: potwierdzić bieżący stable tuż przed docker compose up, podbić tag jeśli wyszła nowsza wersja.

  • Split-host OCR-worker przez NFS: WYKONALNY — wzorzec potwierdzony przez maintainerów paperless-ngx (nieoficjalnie wspierany): ten sam obraz, command: celery --app paperless worker, wspólny Redis+Postgres+storage, identyczne ścieżki kontenerowe i numeryczny UID po obu stronach. Pełny wynik badania + ryzyka: kb/services/paperless-worker.md.

  • Storage dokumentów na PIHA; NFS export → SOLARIA po LAN (192.168.31.5 → 192.168.31.70), nie Tailscale.

  • AOF w Redis brokera (kolejka przeżywa restart — zero utraty zadań).

  • OIDC: Paperless przez django-allauth openid_connect (env), Nextcloud przez appkę user_oidc (kroki occ w README).

  • Limity RAM na PIHA: hosts/piha/runtime/paperless/docker-compose.override.yml (stack ≤ ~1.9 Gi worst-case).