--- okf: "0.1" type: session-log visibility: private status: active updated: 2026-06-30 links: [] --- # 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) 1. CF: rekord A → 100.108.208.3 (DNS only) 2. NPM proxy host: forward wewn. IP:port, Access List = Publicly Accessible, cert *.kapala.org, Advanced PUSTE (zero proxy_http_version!) 3. Weryfikacja: grep conf (plik istnieje) + curl (cert *.kapala.org + 200/302) 4. 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