docs(infra): egzekucja odchudzania PIHA — ES+diskover ubite (+1.0Gi), llm-gateway/immich zostają
Faza 2 modułu 0 po review Oskara: elasticsearch+diskover usunięte (compose down, dane esdata zostawione na dysku), available 2.8Gi -> 3.8Gi, kryterium >=1.5Gi spełnione. llm-gateway udokumentowany (własny router LLM -> Ollama@SOLARIA, źródło tylko w /opt/llm-gateway — archiwizacja w backlogu); immich zostaje na PIHA na stałe (24/7, SOLARIA sesyjna). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
f1e302d19b
commit
6b35afd2ea
|
|
@ -422,6 +422,14 @@ Ponizej te wymagajace akcji, pogrupowane wg ryzyka. Naprawa = osobny task/kilka.
|
|||
- **zigbee2mqtt** topology mowi chelsty-infra, biega na PIHA -> poprawic topology
|
||||
- **stability-agent / node_exporter** owner_node single, biegaja wielomiejscowo -> per-host
|
||||
|
||||
### Po odchudzaniu PIHA (2026-07-02, faza 2 modulu 0)
|
||||
- **llm-gateway: zlokalizowac/zarchiwizowac zrodlo** — kod (wlasny FastAPI router ->
|
||||
Ollama@SOLARIA) moze zyc TYLKO w `/opt/llm-gateway` na PIHA, bez gita; przeszukanie
|
||||
PIHA i repo nie znalazlo innej kopii. Zarchiwizowac do repo/Forgejo zanim padnie nosnik.
|
||||
- **Prometheus@PIHA: target llm-gateway blednie nazwany `watchtower`** — celuje w :8080
|
||||
i odpytuje `/v1/metrics`, dostaje wieczne 404 (llm-gateway nie serwuje metryk).
|
||||
Naprawic nazwe/endpoint albo usunac target.
|
||||
|
||||
### Tech debt SATURN (z gaszenia dysku 2026-06-30)
|
||||
- **`/opt/anaconda3` 16G** — najwiekszy pojedynczy zjadacz dysku (env-y Pythona). Decyzja Oskara kiedy/czy czyscic.
|
||||
- Dysk 91% -> 83% ugaszone (docker prune + journal + syslog), ale `/home` zaszyfrowany
|
||||
|
|
|
|||
|
|
@ -4,6 +4,11 @@
|
|||
> Zadna akcja nie zostala wykonana — wylacznie `docker stats/inspect/logs`, `ss`, `curl` (odczyt).
|
||||
> Stan w momencie audytu: **RAM 7.9Gi total, 5.0Gi used, 2.9Gi available; swap 4Gi total, 2.0Gi uzyty.**
|
||||
> 41 kontenerow Up (inwentaryzacja 2026-06-30 liczyla 40; wszystkie nadal biega).
|
||||
>
|
||||
> **AKTUALIZACJA 2026-07-02 (FAZA 2):** czesc rekomendacji zostala skorygowana po review
|
||||
> Oskara i wykonana — patrz sekcja [Korekta po review + egzekucja](#korekta-po-review--egzekucja-2026-07-02)
|
||||
> na koncu dokumentu. W skrocie: ES+diskover UBITE; llm-gateway ZOSTAJE (wlasny kod);
|
||||
> immich ZOSTAJE NA PIHA na stale.
|
||||
|
||||
## Podsumowanie: ile RAM da sie zwolnic
|
||||
|
||||
|
|
@ -99,12 +104,16 @@ nie brak definicji. Reszta shadow-stackow zyje w `/home/pi/<nazwa>/` i `/opt/`.
|
|||
— zysk ~902Mi, ryzyko ~zero (jedyny konsument ES to diskover; indeks martwy od
|
||||
pazdziernika 2025). Przed usunieciem obrazow/wolumenow: zostawic wolumen ES na
|
||||
tydzien "na wszelki wypadek" (22MB danych; ewentualnie `elasticdump` do pliku).
|
||||
2. **Stop: llm-gateway** (`/opt/llm-gateway`) — zysk 15Mi + porzadek: znika port 8080
|
||||
i wiecznie failujacy target `watchtower` w prom (albo poprawic prom config w kroku 5).
|
||||
3. **Decyzja: migracja immich na SOLARIA** — zysk ~620Mi na PIHA. Wymaga osobnego planu
|
||||
2. ~~**Stop: llm-gateway** (`/opt/llm-gateway`) — zysk 15Mi + porzadek: znika port 8080
|
||||
i wiecznie failujacy target `watchtower` w prom (albo poprawic prom config w kroku 5).~~
|
||||
**WYCOFANE po review** — llm-gateway to wlasny kod Oskara, czesc systemu agentowego;
|
||||
zostaje. Patrz sekcja korekty.
|
||||
3. ~~**Decyzja: migracja immich na SOLARIA** — zysk ~620Mi na PIHA. Wymaga osobnego planu
|
||||
migracji (biblioteka zdjec + postgres pgvecto-rs; reguly repo: "data paths stay in
|
||||
place at cutover" → to pelnoprawny projekt, nie quick-win). ML na GPU SOLARII to
|
||||
dodatkowy bonus jakosciowy.
|
||||
dodatkowy bonus jakosciowy.~~
|
||||
**WYCOFANE po review** — immich musi byc dostepny 24/7, a SOLARIA jest wlaczana
|
||||
sesyjnie. Immich zostaje na PIHA na stale.
|
||||
4. **Decyzja: forgejo_dind** — jesli CI nieaktywne: stop (36Mi). Sprawdzic w UI forgejo
|
||||
czy sa zarejestrowane runnery/ostatnie buildy.
|
||||
5. **Porzadki po-usuwaniu (osobny task, poza faza 1):** wyczyscic target `watchtower`
|
||||
|
|
@ -146,3 +155,76 @@ nie brak definicji. Reszta shadow-stackow zyje w `/home/pi/<nazwa>/` i `/opt/`.
|
|||
osiagniety — czesc sensorow NIE jest eksportowana do prom od dluzszego czasu).
|
||||
- Na hoscie biegaja tez procesy poza Dockerem: RPi-Reporter-MQTT2HA-Daemon,
|
||||
`/opt/mqtt-exporter/exporter.py` (root) — host-level shadow, nieobjete inwentaryzacja.
|
||||
|
||||
## Korekta po review + egzekucja (2026-07-02)
|
||||
|
||||
FAZA 2 wykonana po review Oskara. Decyzje i korekty wzgledem fazy 1:
|
||||
|
||||
### Korekta 1: llm-gateway ZOSTAJE (wlasny kod, system agentowy)
|
||||
|
||||
Audyt oznaczyl llm-gateway jako "BEZPIECZNY USUN — zero konsumentow" na podstawie
|
||||
chwilowego braku ruchu. **Za slabe kryterium dla wlasnego serwisu** — kontener zostaje.
|
||||
|
||||
Udokumentowana rola (odczyt `/opt/llm-gateway` na PIHA, 2026-07-02):
|
||||
|
||||
- **Co to jest**: wlasny FastAPI-router LLM Oskara (Python 3.12, fastapi+httpx+uvicorn),
|
||||
~90 linii w `app/main.py`. Compose project `llm-gateway`, katalog `/opt/llm-gateway`
|
||||
(root, pliki z 2026-04-20/21), port `8080:8080`, `restart: unless-stopped`.
|
||||
- **Co robi**: proxy/router do **Ollamy na SOLARIA** (`http://solaria:11434/api/generate`).
|
||||
Dwa endpointy: `POST /api/chat` → model `deepcoder:14b`; `POST /api/code` → model
|
||||
`deepseek-coder:latest` (z twardym promptem "return only code/command" + heurystyka
|
||||
`looks_like_shell_command`). `GET /` = healthcheck (`{"status": "gateway ok"}`).
|
||||
- **Kto go wola dzis**: zaden kontener agent-system-\* nie ma env wskazujacego na
|
||||
llm-gateway (telegram-bot ma `CONTROL_PLANE_URL=http://webui:8080` — to WEWNETRZNY
|
||||
webui w sieci compose, nie llm-gateway; jego `ENABLE_LLM_FALLBACK=false` uzywa
|
||||
`OPENCLAW_BASE_URL`, nie gatewaya). Jedyny ruch: Prometheus (blednie, patrz nizej).
|
||||
To infrastruktura "na zawolanie" dla agentow, nie martwy kod.
|
||||
- **Gdzie zrodlo**: `/opt/llm-gateway` NIE jest repo git. Przeszukano PIHA
|
||||
(`/opt`, `/home/pi`, `/home/oskar`, maxdepth) — **jedyna kopia `main.py` to
|
||||
`/opt/llm-gateway/app/main.py`**. W repo homelab-codex brak zrodla (tylko wzmianki
|
||||
w docs; `ollama_client.py` w korzeniu repo gada z Ollama bezposrednio, nie przez
|
||||
gateway). **Status: kod tylko na dysku PIHA — DO ZARCHIWIZOWANIA** (backlog).
|
||||
- Znany bug konfiguracyjny monitoringu: Prometheus na PIHA ma target nazwany
|
||||
`watchtower` celujacy w :8080 i odpytujacy `/v1/metrics` → wieczne 404 w logach
|
||||
gatewaya (backlog).
|
||||
|
||||
### Korekta 2: immich ZOSTAJE NA PIHA NA STALE
|
||||
|
||||
Rekomendacja "przenies na SOLARIA" wykreslona: immich musi byc dostepny **24/7**
|
||||
(vhosty immich.okit.pl / foty.kapala.org), a SOLARIA jest wlaczana **sesyjnie** —
|
||||
nie nadaje sie na hosting always-on. Wiersze immich_\* w tabeli glownej czytac jako
|
||||
**ZOSTAW** (kategoria PRZENIES niewazna).
|
||||
|
||||
### Korekta 3: reszta kandydatow "DECYZJA OSKARA" — ZOSTAJE
|
||||
|
||||
forgejo_dind, code-server, portainer, mqtt-exporter (kontener) — wszystkie zostaja
|
||||
bez zmian. Duplikat mqtt-exporter i limit 2000 metryk pozostaja w backlogu jako
|
||||
osobny temat.
|
||||
|
||||
### Egzekucja: elasticsearch + diskover UBITE (jedyne dwa)
|
||||
|
||||
Wykonane 2026-07-02 ~16:28 CEST na PIHA, w kolejnosci z audytu (najpierw diskover):
|
||||
|
||||
1. Oba kontenery = jeden compose project `diskover` (`/home/pi/diskover/docker-compose.yml`),
|
||||
restart `unless-stopped`; brak jednostek systemd i wpisow cron — jedyny mechanizm
|
||||
autostartu to same kontenery.
|
||||
2. `docker stop diskover` → `docker stop elasticsearch` — czysto (Exited 0 / 143).
|
||||
3. Obserwacja ~2 min: zero restart-loopow, logi wikijs ciche, nic nie krzyczy.
|
||||
4. `docker compose -p diskover down` — kontenery usuniete, siec `diskover_default`
|
||||
usunieta. Po reboocie nic ich nie wskrzesi (kontenery nie istnieja).
|
||||
5. **Dane ES NIE skasowane**: bind mount `/home/pi/diskover/esdata` (indeks
|
||||
`diskover-pimedia`, ~22MB) zostal na dysku nietkniety — `compose down` nie rusza
|
||||
bind mountow. Obrazy tez zostawione (ewentualne `docker image prune` = osobna decyzja).
|
||||
|
||||
### Zysk faktyczny
|
||||
|
||||
| Metryka | Przed (16:27) | Po (16:31) | Delta |
|
||||
|---|---|---|---|
|
||||
| RAM available | 2.8Gi | **3.8Gi** | **+1.0Gi** |
|
||||
| RAM used | 5.1Gi | 4.1Gi | −1.0Gi |
|
||||
| Swap used | 2.0Gi | 1.9Gi | −0.1Gi (spadek presji; pelny efekt po czasie) |
|
||||
| Kontenery Up | 41 | 39 | −2 (elasticsearch, diskover) |
|
||||
|
||||
Kryterium modulu 0 (**>= 1.5Gi available stabilnie**) — **SPELNIONE** z zapasem
|
||||
(3.8Gi), bez ruszania immich i llm-gateway. Zysk zgodny z prognoza audytu
|
||||
(~902Mi rezydentne + strony ES wyswapowane).
|
||||
|
|
|
|||
|
|
@ -3,6 +3,26 @@
|
|||
> Prerekwizyt modulow 2/4 (Paperless/Nextcloud na PIHA). Bez tego PIHA nie ma
|
||||
> komfortowego zapasu RAM. Laczy sie z backlogiem grupy C (audyt shadow-kontenerow).
|
||||
|
||||
## STATUS: prerekwizyt RAM SPELNIONY (2026-07-02)
|
||||
|
||||
Faza 1 (audyt read-only) + faza 2 (egzekucja po review Oskara) wykonane —
|
||||
szczegoly: `docs/infra/piha-slim-audit-2026-07-02.md` (sekcja "Korekta po review
|
||||
+ egzekucja").
|
||||
|
||||
- **Kryterium >= 1.5Gi available: SPELNIONE.** Przed egzekucja: 2.8Gi available
|
||||
(used 5.1Gi, swap 2.0Gi). Po ubiciu elasticsearch+diskover: **3.8Gi available**
|
||||
(used 4.1Gi, swap 1.9Gi). Zapas ponad kryterium: +2.3Gi.
|
||||
- Ubite (jedyne dwa): **elasticsearch** (~895Mi) + **diskover** (~7Mi) — stack
|
||||
`/home/pi/diskover`, kontenery i siec usuniete, dane ES (bind mount `esdata`,
|
||||
22MB) zostawione na dysku.
|
||||
- Decyzje po review: **llm-gateway ZOSTAJE** (wlasny kod Oskara, router LLM ->
|
||||
Ollama@SOLARIA, czesc systemu agentowego; zrodlo tylko w `/opt/llm-gateway` na
|
||||
PIHA — archiwizacja w backlogu); **immich ZOSTAJE NA PIHA na stale** (24/7,
|
||||
SOLARIA sesyjna); forgejo_dind / code-server / portainer / mqtt-exporter — zostaja.
|
||||
- Otwarte (nie blokuje Paperlessa): obserwacja stabilnosci swap pod normalnym
|
||||
obciazeniem; GitOps-yzacja tego co zostaje (`hosts/piha/services.yaml`) wg
|
||||
backlogu rozjazdow.
|
||||
|
||||
## Cel
|
||||
Zwolnic RAM na PIHA (dzis: 3.1Gi available, swap 2G uzyty) tak, by lekki Paperless-
|
||||
serwis wszedl z zapasem, nie na styku swap.
|
||||
|
|
|
|||
Loading…
Reference in a new issue