Skip to content

fix: deploy papercuts — marker-host ACME spam, .env.example footgun, INSTALL 404 - #200

Open
CallMeTechie wants to merge 1 commit into
masterfrom
fix/deploy-papercuts
Open

fix: deploy papercuts — marker-host ACME spam, .env.example footgun, INSTALL 404#200
CallMeTechie wants to merge 1 commit into
masterfrom
fix/deploy-papercuts

Conversation

@CallMeTechie

Copy link
Copy Markdown
Owner

Drei unabhängige Deploy-Stolpersteine, alle bei einer Frischinstallation auf einem fremden Server aufgefallen und gegen master verifiziert.

1. 🔴 Echter Bug: Owner-Marker-Host landet bei öffentlichem ACME

Der Ownership-Marker gc-owner.invalid (RFC 6761 reservierte .invalid-TLD) wird in srv0.routes als echter Host-Matcher angehängt (caddyConfig.js), aber nicht in die TLS-Automation-Subjects gegeben. Caddys automatic_https versucht daraufhin eine öffentliche ACME-Order → Cannot issue for "gc-owner.invalid": Domain name does not end with a valid public suffix → Endlos-Retry-Spam (Rate-Limit-Risiko gegen LE Prod+Staging).

Fix: srv0.automatic_https.skip: [MARKER_HOST] — der Marker serviert nie auf der Leitung und braucht kein Zertifikat. MARKER_HOST aus caddyOwner exportiert. Vertrags-Test prüft den Skip-Eintrag und dass der Marker nie ACME-Subject ist.

Hinweis: home.gc.internal war nicht betroffen — das läuft über homeHost/forceInternal korrekt in die interne Issuer-Policy.

2. 🟠 .env.example-Footgun gegen das eigene Entrypoint

Die ausgelieferte .env.example hatte aktive GC_WG_POST_UP/POST_DOWN mit hartem eth0 und GC_NET_INTERFACE=eth0. Ein gesetztes GC_WG_POST_UP überschreibt die besseren Auto-Defaults des Entrypoints (scoped MASQUERADE + RELATED,ESTABLISHED + TCP-MSS-Clamping); eth0 ist auf den meisten Debian/KVM-Hosts falsch (ens18, …).

Fix: Felder leeren + Hinweis-Kommentar (Entrypoint auto-detektiert). GC_NET_INTERFACE auch in der veralteten deploy/-Kopie angeglichen.

3. 🟠 INSTALL-Doku 404 auf das Release-Asset

INSTALL.{md,de.md} ließen .env.example herunterladen/kopieren, das Release-Asset heißt aber default.env.example (GitHub erlaubt keinen führenden Punkt → softprops benennt um). Wörtliches Befolgen → 404 bzw. fehlschlagendes cp.

Fix: Download-URLs, cp und Querverweise auf default.env.example. Repo-interne Referenz (.env.example im Repository) bleibt korrekt.

Tests

caddyConfig_contract 16/0, caddyOwner + caddyTlsAutomation + portal_caddy_tls 28/0 — lokal grün.

Bewusst ausgelassen (geringer Wert / größerer Eingriff): wg0.conf-PostUp-Reset bei geleertem POST_UP, doppelte (identische) MASQUERADE-Regel, privates GHCR/npm-Token-Doku.

🤖 Generated with Claude Code

…INSTALL 404

1. Ownership marker host (gc-owner.invalid, RFC 6761 reserved TLD) was a real
   host matcher with no TLS policy → Caddy automatic_https issued a doomed
   public ACME order, retried forever. Add srv0.automatic_https.skip so the
   marker (which never serves) is excluded from cert management. Contract test
   asserts the skip entry and that the marker is never an ACME subject.

2. .env.example shipped active GC_WG_POST_UP/POST_DOWN with hardcoded eth0 and
   GC_NET_INTERFACE=eth0. A set POST_UP overrides the entrypoint's superior
   auto-detected rules (scoped MASQUERADE + RELATED,ESTABLISHED + MSS clamp),
   and eth0 is wrong on most Debian/KVM hosts. Blank them with guidance; mirror
   GC_NET_INTERFACE in the stale deploy/ copy.

3. INSTALL.{md,de.md} told users to download/cp `.env.example`, but the release
   asset is `default.env.example` (GitHub forbids a leading dot) → 404 / failed
   cp. Point the download URLs, cp, and cross-references at default.env.example.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant