diff --git a/docs/sessions/2026-07-07-immich-pimain-cleanup.md b/docs/sessions/2026-07-07-immich-pimain-cleanup.md new file mode 100644 index 0000000..dc598bd --- /dev/null +++ b/docs/sessions/2026-07-07-immich-pimain-cleanup.md @@ -0,0 +1,45 @@ +# Session log 2026-07-07 — Immich upload fix / pimain cleanup (kontynuacja 2026-07-03) + +## Kontekst +Immich mobile: Error(500) przy uploadzie. Diagnoza z 3.07: bind mount fstab +`/media/pimain/media/immich/library/upload -> /home/pi/immich/library/upload` +(sda1, 100% pelny). Bind niewidoczny w `docker inspect` i compose — wykryty +przez `/proc/mounts` w kontenerze + `findmnt`. NVMe/quota/inody/ext4 czyste. + +## Root cause zapelnienia +`/media/pimain/backup-tmp/pi/` — dzienne backupy `/home/pi` (tgz ~2,9G, cron +root 03:00, `backup-piha-home.sh`) od 2025-12-01, 201 plikow. Retencja w +skrypcie MARTWA od zawsze — dwa bugi: +1. pruning szukal `pihome_*.tgz`, a pliki nazywaja sie `YYYYMMDD.tgz` + (widmo `$backupFolderName` vs `$backupFolderPrefix`) +2. `rm "$fileDtgName"` (wynik cut) zamiast `rm "$file"` + +## Wykonane +- Skasowano 187 najstarszych tgz → pimain 100% → 87% (~227G wolne) +- **Uploady z telefonu potwierdzone dzialajace** +- Fix retencji w `/home/pi/backup-scr/backup-piha-home.sh` (sed-y na miejscu, + oryginal w `.sh.orig`): `-maxdepth 1 -name "20*.tgz"`, `basename`, + `rm -v "$file"`; retencja 7 dni + month-endy na zawsze; pruning tylko po + sukcesie tara +- Dodatkowy fix: tar exit 1 (file changed as we read it — zywe logi NPM) + traktowany jako sukces (`|| [ $? -eq 1 ]`); exit >=2 nadal blad +- Swiezy backup `20260707.tgz` (2,9G, jedyny realny); 0-bajtowe trupy usuniete +- PENDING: nocny cron 03:00 = test bojowy calej sciezki (backup+retencja); + kontrola: `tail /var/log/backup-piha-home.log` + +## Odkrycia / lekcje +- Backupy byly 0-bajtowe od ~2026-06-06 (open przechodzil, write nie) — + month-endy utracone przy czyszczeniu (kryterium "14 najnowszych" nie + sprawdzalo rozmiaru; strata akceptowalna, zrodlo zywe na /home). + Lekcja: przy czyszczeniu backupow filtrowac po size, nie tylko po dacie. +- Heredoc przez ssh+wklejke na PIHA sie tnie — tylko krotkie komendy, + sed-y jednolinijkowe albo scp. +- Bind mount z fstab propagowany do kontenera to pulapka diagnostyczna: + weryfikowac przez `/proc/mounts` z wnetrza kontenera i `findmnt`, + nie `docker inspect`. + +## Backlog +- #11 (disk alerting): `node_filesystem_avail_bytes` MUSI objac `/media/pimain` + i `/media/pimainmirror` — drugi incydent z tego samego braku +- NOWE: rozwazyc wciagniecie `backup-piha-home.sh` pod repo (per-host legacy, + poza GitOps); ew. monitoring 0-bajtowych artefaktow backupu