CluPilotCloud/docs/superpowers/specs
nexxo e3c781f067 Der Tunnel bekommt einen eigenen Container
Bisher wohnte wg0 im Container des Provisionierungs-Arbeiters, also im Abbild
`clupilot-app`. Das wird bei fast jeder Freigabe neu gebaut — und ein neu
gebauter Container bekommt eine neue Adresse im Compose-Netz, womit die
Weiterleitung fuer UDP 51820 neu geschrieben wird und JEDE bestehende
WireGuard-Sitzung abreisst. Der Tunnel hing damit am Veroeffentlichungstakt der
Anwendung, und zusaetzlich daran, dass ein PHP-Prozess nicht abstuerzt.

Jetzt gehoert der Netz-Namensraum einem eigenen Container `vpn-hub` mit eigenem,
winzigem Abbild (Alpine plus wireguard-tools), das sich fast nie aendert.
Provisionierungs-Arbeiter, Terminal-Bruecke, interner DNS und internes Gateway
steigen dort ein, statt einer von ihnen den Namensraum zu besitzen.

NACHGEMESSEN, nicht angenommen: App-Abbild neu gebaut, Arbeiter, Bruecke und
Gateway per --force-recreate neu erzeugt — der Hub blieb Container 92e928cf53b0,
wg0 und beide Zugaenge unangetastet, und nginx erreichte die Bruecke weiter
(HTTP 426). Genau der Vorgang, der bisher jedes Mal alles abgerissen hat.

Nachgezogen:
- nginx spricht die Bruecke unter `vpn-hub:8082` an — dem Namen des
  Namensraum-Eigentuemers; ein Mitbewohner hat keinen eigenen DNS-Eintrag.
- update.sh baut vpn-hub mit und haengt Nachbar-Neustarts und den
  conntrack-Griff an die Frage, ob der Hub WIRKLICH neu gebaut wurde.
- update-agent.sh startet den Arbeiter nicht mehr neu, sondern signalisiert ihm.
  Diese Stelle laeuft unbeaufsichtigt hinter dem Knopf „Dienste neu starten" —
  wer den drueckt, rechnet nicht damit, sich selbst auszusperren.
- Vier Meldungen in der Konsole rieten dem Betreiber, genau den Befehl von Hand
  auszufuehren, der ihm den Tunnel abreisst. Auch die sind korrigiert.
- rescue-tunnel.sh und das Runbook zeigen auf den neuen Besitzer.

Eine Kleinigkeit unterwegs, die ich falsch angekuendigt hatte: `[[ … ]] && x=true`
bricht unter `set -e` NICHT ab — bash nimmt die linke Seite einer &&-Liste
ausdruecklich aus. Nachgeprueft; die if-Form bleibt trotzdem, aus Lesbarkeit, und
der Kommentar sagt jetzt den wahren Grund.

2509 Tests gruen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 07:49:29 +02:00
..
2026-07-25-host-onboarding-design.md fix(engine): fail on unresolvable pipeline step; make worker the WG hub 2026-07-25 10:53:40 +02:00
2026-07-27-mailboxes-design.md Design mailboxes as records, not as one more secret 2026-07-27 20:51:03 +02:00
2026-07-27-operator-identity-design.md Delete the users row once the operator has moved out of it 2026-07-27 20:44:56 +02:00
2026-07-30-betriebsmodus-und-betriebsbereitschaft-design.md Design a test/live switch and a page that says what is missing 2026-07-30 10:11:26 +02:00
2026-07-30-host-uebernahme-statt-installation-design.md Write down the network boundary, the subdomain, and two decided follow-ups 2026-07-30 19:05:23 +02:00
2026-07-30-stripe-adoption-followups-design.md Name the recurring filter, and stop the spec contradicting itself 2026-07-30 19:24:18 +02:00
2026-07-30-stripe-price-adoption-design.md Give the operator something to do about an orphan nobody can adopt 2026-07-30 18:36:06 +02:00
2026-07-31-zahlungsmittel-und-mahnlauf-design.md Hetzner-Cloud-DNS, Bereitschaftsseite aus sich heraus behebbar 2026-07-31 19:50:01 +02:00
2026-08-01-host-detailseite-last-design.md Release v1.3.93 — die Seite konnte den Host gar nicht fragen 2026-08-01 11:23:00 +02:00
2026-08-01-host-konsole-zertifikat-design.md Der Tunnel bekommt einen eigenen Container 2026-08-03 07:49:29 +02:00
2026-08-01-hostname-vergabe-design.md Fix-Runde 2: Warnung fuer nicht reparierte Hosts, case-sichere Vorabpruefung, wiederholbare Migration 2026-08-01 14:52:15 +02:00
2026-08-01-network-bridge-design.md Entwurf: vmbr0 automatisch bauen 2026-08-01 11:47:38 +02:00
2026-08-01-neue-pakete-design.md Entwurf: geprueft, dass ein laufender Vertrag seine Version einfriert 2026-08-01 11:55:30 +02:00
2026-08-01-vorlagenbau-design.md Release v1.3.88 — die Vorlage baut sich selbst 2026-08-01 05:01:44 +02:00
2026-08-02-terminal-container-design.md Terminal-Bruecke: ein Container, eine Aufgabe, ein Ticket 2026-08-02 19:09:15 +02:00