Session logi zostaja w docs/sessions/ (decyzja z etapu 1). Dodany wylacznie blok frontmattera: type: session-log, visibility: private, status: active, updated = data ostatniego commita pliku. Tresc nietknieta — kazdy plik to +9/-0 linii. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
3 KiB
| okf | type | visibility | status | updated | links |
|---|---|---|---|---|---|
| 0.1 | session-log | private | active | 2026-06-30 |
2026-06-30 — Migracja kapala.org → Cloudflare + wildcard DNS-01, HA i Immich na mesh
Cel
Trwałe rozwiązanie problemu zdalnego dostępu do HA (i innych usług domowych) przez Tailscale. Odejście od HTTP-01 per-host (wygasające certy przy mesh DNS) na rzecz wildcard cert przez DNS-01.
Co zrobiono
Migracja DNS kapala.org: 42.pl → Cloudflare
- Eksport strefy z 42.pl (AXFR, 13 rekordów) jako siatka bezpieczeństwa
- Dodanie kapala.org do Cloudflare (Free), import + ręczne uzupełnienie
- KRYTYCZNE: CF auto-proxuje rekordy na import — wszystkie A/CNAME przełączone na "DNS only" (szara chmurka). DKIM CNAME proxied = zepsuty podpis maila. Wszystkie 9 rekordów zweryfikowane 1:1 z eksportem.
- NS w VipoWer: fns1/fns2.42.pl → dom.ns.cloudflare.com / katja.ns.cloudflare.com
- Propagacja ~45 min. Mail (Fastmail MX/DKIM/SPF) bez przerwy przez całą migrację.
Wildcard cert DNS-01
- CF API token (Zone:DNS:Edit, scope kapala.org)
- NPM → SSL → Let's Encrypt via DNS → Cloudflare → *.kapala.org + kapala.org
- Cert #49 (npm-49) wydany, auto-renew przez DNS-01 potwierdzony (renew zadziałał)
- Expires 2026-09-28, odnawia się sam
Usługi przeniesione na kapala.org (mesh-only)
- ha.kapala.org → 192.168.31.7:8123 (cert wildcard, WS ON)
- immich.kapala.org → 192.168.31.5:2283 (cert wildcard, WS ON)
- DNS w CF: rekordy A → 100.108.208.3 (Tailscale PIHA, DNS only/reserved IP)
Bugi rozwiązane
"unrecognized name" na ha.kapala.org mimo dobrego certu (root cause)
Objaw: cert OK (npm-49), DNS OK, host "Online" w UI, ale curl → TLS
unrecognized name. Plik proxy_host/4.conf nie istniał.
Przyczyna: custom Advanced config zawierał proxy_http_version 1.1;,
a NPM dodaje tę dyrektywę SAM przy Websockets Support = ON.
Duplikat → nginx -t odrzucał cały 4.conf → plik się nie generował.
Diagnoza przez strings /data/database.sqlite | grep kapala:
nginx_err: "proxy_http_version directive is duplicate in 4.conf:68"
Fix: usunięcie proxy_http_version 1.1; z Advanced. Plik się wygenerował.
immich.okit.pl 403 Forbidden (red herring → nie ruszany)
403 od openresty = Access List "Local" blokuje mesh, NIE cert (cert żył do 9/28). Decyzja: zamiast zmieniać Access List — przeniesiono na immich.kapala.org (mesh-only, wildcard cert). immich.okit.pl zostaje do migracji okit.pl.
Wzorzec migracji usługi na kapala.org (mesh)
- CF: rekord A <usługa> → 100.108.208.3 (DNS only)
- NPM proxy host: forward wewn. IP:port, Access List = Publicly Accessible, cert *.kapala.org, Advanced PUSTE (zero proxy_http_version!)
- Weryfikacja: grep conf (plik istnieje) + curl (cert *.kapala.org + 200/302)
- Zmiana URL w apce/kliencie
Stan końcowy
- ha.kapala.org, immich.kapala.org — działają przez mesh, zielona kłódka
- Mail kapala.org (Fastmail) — bez przerwy, MX/DKIM/SPF OK
- Wildcard *.kapala.org — auto-renew DNS-01 potwierdzony