docs(sesja): kapala.org → Cloudflare wildcard DNS-01, HA i Immich na mesh
Sesja 2026-06-30: migracja DNS kapala.org z 42.pl na Cloudflare, wildcard *.kapala.org przez DNS-01, ha/immich.kapala.org przez NPM@PIHA mesh-only. - nowy session log z root-cause buga "unrecognized name" (NPM duplikuje proxy_http_version przy Websockets ON) + wzorzec migracji usługi na mesh - backlog: gotchas (NPM WS config, CF auto-proxy DKIM) + TODO (migracja okit.pl, foty renew, cleanup ha-ken add-on, stale ha.okit.pl) - topology: nowa sekcja ingress (ha/immich → NPM@PIHA, wildcard cert) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
48107ef2c1
commit
831bbedffa
|
|
@ -39,6 +39,75 @@ historia incydentów, out-of-band watchdog.
|
|||
|
||||
## Aktywne
|
||||
|
||||
### Gotchas (z 2026-06-30 — migracja kapala.org → Cloudflare/wildcard)
|
||||
|
||||
**Data**: 2026-06-30
|
||||
**Źródło**: sesja 2026-06-30 (`docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md`)
|
||||
|
||||
- **NPM custom WS config + Websockets Support:** NIE wklejać
|
||||
`proxy_http_version 1.1;` do Advanced gdy Websockets Support = ON.
|
||||
NPM dodaje tę dyrektywę sam → duplikat → nginx -t failuje → plik
|
||||
proxy_host/<id>.conf się NIE generuje → "unrecognized name" mimo
|
||||
dobrego certu. Objaw mylący (wygląda jak problem certu/DNS).
|
||||
Diagnoza: `strings /data/database.sqlite | grep <domena>` → pole nginx_err.
|
||||
|
||||
- **Cloudflare auto-proxy na import:** CF proxuje A/CNAME przy dodaniu strefy.
|
||||
DKIM CNAME (fm1/2/3._domainkey) proxied = zepsuty podpis maila.
|
||||
Zawsze przełączyć na DNS only (szara chmurka) przed aktywacją.
|
||||
Reserved/CGNAT IP (Tailscale 100.x) CF wymusza DNS only automatycznie.
|
||||
|
||||
---
|
||||
|
||||
### Migracja okit.pl → Cloudflare (większy projekt, firmowa domena)
|
||||
|
||||
**Data**: 2026-06-30
|
||||
**Źródło**: sesja 2026-06-30 (`docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md`)
|
||||
Naprawi wszystkie wygasłe certy okit.pl naraz (HTTP-01 failuje przy mesh DNS):
|
||||
ap, audiobooks, code-server, dysk, forgejo, ha-embed, hagc, ngpm, node-red,
|
||||
okit.pl, pihole, ha.okit.pl. Wzorzec jak kapala.org: NS na CF, wildcard *.okit.pl
|
||||
przez DNS-01, przepiąć hosty. UWAGA: okit.pl ma usługi publiczne (foty) —
|
||||
rozdzielić mesh-only od publicznych. Ostrożnie — firmowa domena.
|
||||
|
||||
---
|
||||
|
||||
### foty.kapala.org renew failuje (#47, expired 2026-06-19, HTTP-01)
|
||||
|
||||
**Data**: 2026-06-30
|
||||
**Źródło**: sesja 2026-06-30 (`docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md`)
|
||||
Foty są PUBLICZNE celowo (zewn. dostęp za hasłem NPM) — port 80 powinien
|
||||
być dostępny, więc HTTP-01 powinno działać. Sprawdzić czemu failuje
|
||||
(DNS foty wskazuje na zły IP? port 80 zablokowany?). NIE przenosić na mesh.
|
||||
|
||||
---
|
||||
|
||||
### Cleanup po błędnej ścieżce HA-Tailscale-addon (z 2026-06-29)
|
||||
|
||||
**Data**: 2026-06-30
|
||||
**Źródło**: sesja 2026-06-30 (`docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md`)
|
||||
- ha-ken: Stop + Uninstall add-on Tailscale
|
||||
- Tailscale admin: usunąć node ha-ken (100.98.128.40)
|
||||
- 42.pl/okit.pl: usunąć rekord ha-ken → 87.205.110.38 (jeśli jest)
|
||||
|
||||
---
|
||||
|
||||
### Stary ha.okit.pl (cert wygasł 6/28, teraz "Not Used")
|
||||
|
||||
**Data**: 2026-06-30
|
||||
**Źródło**: sesja 2026-06-30 (`docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md`)
|
||||
Zostawić lub usunąć proxy host + DNS. Niepilne (martwy, nie szkodzi).
|
||||
|
||||
---
|
||||
|
||||
### Stopniowa migracja usług domowych okit.pl → kapala.org (mesh-only)
|
||||
|
||||
**Data**: 2026-06-30
|
||||
**Źródło**: sesja 2026-06-30 (`docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md`)
|
||||
dysk, audiobooks, budget, code-server, home, ha-embed, node-red... wg wzorca
|
||||
migracji usługi na kapala.org (patrz sesja: CF rekord A → 100.108.208.3 DNS only,
|
||||
NPM proxy host z wildcard *.kapala.org, Advanced PUSTE, weryfikacja grep+curl).
|
||||
|
||||
---
|
||||
|
||||
### `deploy-node.sh` nie reloaduje config-driven serwisów (cicha rozbieżność deploy↔config)
|
||||
|
||||
**Data**: 2026-06-26
|
||||
|
|
|
|||
57
docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md
Normal file
57
docs/sessions/2026-06-30-kapala-cloudflare-wildcard-mesh.md
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# 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 <usługa> → 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
|
||||
|
|
@ -6,6 +6,31 @@ deployment:
|
|||
mode: pull
|
||||
orchestrator: saturn
|
||||
|
||||
# Ingress dla usług domowych przez NPM @ PIHA + wildcard cert kapala.org.
|
||||
# Od 2026-06-30. Poprzednia ścieżka (add-on Tailscale na ha-ken) PORZUCONA.
|
||||
# DNS kapala.org: Cloudflare, wildcard *.kapala.org via DNS-01 (auto-renew).
|
||||
# Mail: Fastmail (MX/DKIM/SPF na CF, DNS only).
|
||||
# Subdomeny mesh: A → 100.108.208.3 (Tailscale PIHA), DNS only.
|
||||
ingress:
|
||||
dns_provider: cloudflare # kapala.org od 2026-06-30
|
||||
wildcard_cert:
|
||||
domain: "*.kapala.org"
|
||||
method: dns-01 # Cloudflare DNS-01, auto-renew
|
||||
proxy: npm-piha # Nginx Proxy Manager @ PIHA
|
||||
services:
|
||||
home_assistant:
|
||||
host: 192.168.31.7
|
||||
port: 8123
|
||||
ingress: ha.kapala.org # NPM @ PIHA, cert *.kapala.org, mesh-only
|
||||
access: tailscale # 100.108.208.3
|
||||
cert: wildcard-kapala # DNS-01 Cloudflare, auto-renew
|
||||
immich:
|
||||
host: 192.168.31.5
|
||||
port: 2283
|
||||
ingress: immich.kapala.org # NPM @ PIHA, cert *.kapala.org, mesh-only
|
||||
access: tailscale
|
||||
cert: wildcard-kapala
|
||||
|
||||
nodes:
|
||||
|
||||
saturn:
|
||||
|
|
|
|||
Loading…
Reference in a new issue