--- type: issue id: "0007" status: in-progress created: 2026-08-01 milestone: M1 priority: high due: 2026-09-28 host: cfgmon gitlab_iid: "7" related: [] --- # CFGMON-01: Zertifikatserneuerung braucht offene Ports — zeitkritisch ab 2026-09-28 > Import aus [management#7](https://git.lab/axion1337.chat/management/-/issues/7) (2026-08-11). Kommentare und Verlauf bleiben dort; kanonisch ist ab jetzt diese Datei (ADR-0012). Certs für `selendis`/`rohana` laufen am **2026-10-28** ab; Traefik erneuert ab Ende September via TLS-ALPN-01 — braucht **Port 443 offen aus dem ganzen Internet** (LE veröffentlicht keine Validierungs-IPs, Multi-Perspective-Validation). Der Normalzustand der Umgebung (443 auf eigene IP beschränkt) lässt die Erneuerung **still** scheitern → Self-Signed-Default-Cert. IPv6-Pfad ist geprüft frei (`::/0` separat in der Hetzner-Firewall-Regel; `0.0.0.0/0` deckt IPv6 NICHT ab) — die September-Erneuerung ist aber der **erste** Lauf, der IPv6 überhaupt versucht. **Entscheidung nötig:** - **A — Ports offen lassen** bzw. zur Erneuerung öffnen (Kalendereintrag Mitte September, nicht aufs Ablaufdatum!) - **B — auf DNS-01 umstellen (empfohlen):** TXT-Validierung, kein offener Port, ermöglicht Wildcards. Braucht IONOS-API-Token als Traefik-Secret; Voraussetzung (versionierter Traefik-Stack) ist seit CFGMON-02 erfüllt. Quelle: [hosts/cfgmon.md](https://git.lab/axion1337.chat/management/-/blob/main/hosts/cfgmon.md) --- *Übernommen aus dem Backlogs-Markdown beim Framework-Umbau 2026-08-01 (voller Wortlaut: Git-Historie der Datei).* ## Plan (2026-08-14) — eingeplant **Weg B (DNS-01)** umsetzen — im Issue bereits als empfohlen markiert: entfernt die Port-Fenster-Abhängigkeit komplett (kein offener 443, keine Unsicherheit beim IPv6-Erstlauf) und ermöglicht Wildcards; die Voraussetzung (versionierter Traefik-Stack) ist seit CFGMON-02 erfüllt. Ausführung terminlich **vor Mitte September** (Puffer vor Ablauf 2026-10-28). Schritte (B): 1. IONOS-API-Token als Traefik-Secret hinterlegen (SOPS-verschlüsselt). 2. Traefik-ACME-Resolver auf **DNS-01 (IONOS-Provider)** umstellen, committen → ausrollen. 3. Test-Erneuerung erzwingen; TXT-Record-Setzung + ausgestelltes Cert für `selendis`/`rohana` prüfen (kein Self-Signed-Fallback). 4. Erst nach erfolgreichem DNS-01-Cert die verbliebene 443-Ausnahme schließen. **Fallback A (Ports öffnen)** — nur falls B verworfen wird: **Kalender-Checkpoint Mitte September** (NICHT aufs Ablaufdatum warten). 443 für `0.0.0.0/0` **und** `::/0` öffnen (IPv6 separat!), Erneuerung + IPv6-Erstlauf beobachten, danach wieder schließen. ## In Arbeit (2026-08-14) — Weg B vorbereitet Der Traefik-Stack liegt in `axion1337.chat/thread-net-git` (Compose, Deploy **manuell** auf CFGMON: `cd /opt/thread-net-git && docker compose up -d`; kein Runner mehr). Der DNS-01-Umbau ist als Diff fertig (lokal geprüft, noch **nicht** gepusht — gekoppelt an Token + Deploy): - `reverse-proxy`-Command: `acme.tlschallenge` → `acme.dnschallenge` + `provider=ionos` + `resolvers=1.1.1.1:53,8.8.8.8:53` (CFGMON ist öffentlich, keine Lab-Port-53-Interception). - `environment: IONOS_API_KEY=${IONOS_API_KEY}` — Token aus `/opt/thread-net-git/.env` (git-ignoriert), Format `.` (IONOS Developer DNS-API). - `acme.json` (letsencrypt-Volume) bleibt — bestehende Certs gelten bis 2026-10-28, Erneuerung läuft dann über DNS-01. Volume NICHT löschen. **Zwei menschliche Abhängigkeiten (blockieren den Abschluss):** 1. **IONOS Developer DNS-API-Key** anlegen (der `.` gehört in die Host-`.env`). 2. **Deploy + Verifikation auf CFGMON** (kein SSH-Zugang von hier): `.env` setzen → `docker compose up -d reverse-proxy` → Test-Erneuerung erzwingen → TXT + neues Cert prüfen. Danach: 443-Weltöffnung ist für ACME nicht mehr nötig (nur noch für die Dienste selbst).