doctor plus gateway status, sieben Schritte, Kennzahlen, FAQ, CTA. Verweise: Startseite, Blog, LaunchDarkly-Webhook-Muster, Gateway-Status-JSON-Gate, Hilfe.
Drei Risiken, wenn sr.ht-Webhooks direkt auf gemeinsame Runner feuern
Ohne klare Reihenfolge kollidieren git fetch, npm ci und ein optionaler openclaw gateway-Smoke-Test auf derselben NVMe. Die folgenden Punkte adressieren Auth, deterministische Locks und Kapazität.
- 1Token-Leckage: PAT oder Webhook-Geheimnis landet in Shell-History oder Build-Logs, wenn
set -xaktiv bleibt oder Antworten das Secret echoen. - 2Lockfile-Drift: parallele Jobs schreiben
package-lock.jsonodernpm-shrinkwrap.jsonneu; ohnegit diff --exit-codeverschwindet die Reproduzierbarkeit. - 3Platten- und Port-Race: mehrere Prewarm-Läufe füllen
node_modulesund npm-Cache gleichzeitig; der Standard-Gateway-Port 18789 blockiert Smoke-Tests, falls ein Daemon bereits lauscht.
Node 24 installieren: offizielles curl-Paket und npm-Pfad für OpenClaw
OpenClaw setzt Node 24 voraus. Prüfen Sie nach der Installation mit node -p process.versions, dass major mindestens 24 ist. Paketmanager und globale CLI teilen dieselbe PATH-Reihenfolge wie Ihr launchd- oder CI-Profil.
| Komponente | Zweck auf Remote-Mac | Beispiel / Hinweis |
|---|---|---|
| Node 24 (tarball) | Reproduzierbare Binaries ohne Homebrew-Jitter | Offizielle darwin-arm64-Distribution von nodejs.org |
npm install -g openclaw |
CLI für doctor, gateway status, Hooks |
Private Scopes: NPM_TOKEN nur in Secret-Store |
OPENCLAW_HOME |
Isolierung pro Mandant oder Job | Eigenes Verzeichnis pro Webhook-Queue |
OPENCLAW_GATEWAY_PORT |
Kollision mit 18789 vermeiden | Smoke-Port nur kurzzeitig binden |
NPM_CONFIG_CACHE |
NVMe-Prewarm ohne Cross-Job-Löschung | Pro Pool ein Unterordner mit File-Lock |
Offizielles macOS-arm64-Archiv (Version anpassen):
Alternativ offizielles PKG (Installer):
OpenClaw global per npm (öffentliche Registry):
Webhook-Endpunkt, TLS und builds.sr.ht-Authentifizierung
Terminieren Sie TLS am öffentlichen Reverse-Proxy mit vollständiger Kette und validieren Sie den gemeinsamen Geheimnis-Header vor jeder Log-Zeile mit Payload. Für Git-Lesezugriff bevorzugen Sie Deploy-Keys statt breiter PATs.
| Aspekt | Anforderung | Prüfhinweis |
|---|---|---|
| TLS | Öffentliches Zertifikat, OCSP-Stapling | Kein self-signed Client-Zwang für sr.ht |
| Secret-Header | Statisches Token oder HMAC laut sr.ht-Doku | Byte-identischer Vergleich, Timing-safe |
| Quell-IP | Allowlist sr.ht-Egress | Fail-closed bei unbekannter IP |
| Body-Größe | Limit <512 KiB typisch | Keine Shell-Eval des JSON |
Entscheidungsmatrix: sr.ht-Build-Parallelität, Git-Retry und Platten-Schwellen
Die Matrix verknüpft gleichzeitige builds.sr.ht-Aufträge auf einem physischen Mac mit Netz-Jitter und APFS-Freigabe. Messen Sie p95 der Hook-Latenz, bevor Sie Parallelität erhöhen.
| Szenario | sr.ht / Image-Parallelität | Git-Fetch-Retry | Platten-Schwelle (frei) |
|---|---|---|---|
| Ein Miet-Mac, geteilter npm-Cache | max. 2 gleichzeitige Prewarm-Jobs | Backoff 2 / 4 / 8 s, max. 4 Versuche | Warnung < 18 GB, harter Stopp < 12 GB |
| Mono-Repo >2 GiB Objects | 1 serialisierter Prefetch | Shallow plus GIT_HTTP_LOW_SPEED_LIMIT |
Reserve 25 GB für Tarballs |
| Gateway-Smoke auf Loopback | Prefetch und Smoke nicht parallel | n. a. | Temporäre Logs nach Upload löschen |
| Edge-Proxy mit 5xx | Parallelität einfrieren | Jitter ±20 %, dann Eskalation | Kein Retry bei Drift-Fail |
Abnahme-Kette: openclaw doctor, gateway status und npm audit
Nach dem Prefetch führen Sie die folgende Reihenfolge aus, bevor Sie JSON an die CI zurückgeben. So trennen Sie Installationsfehler von Laufzeit- und Supply-Chain-Signalen.
openclaw doctor— erwarteter Exit-Code 0; Ausgabe in Datei.ci/openclaw-doctor.logschreiben.openclaw gateway status --json— nur wenn kein Portkonflikt vorliegt; bei belegtem 18789 alternativ bestehenden Daemon abfragen oder Port überschreiben.npm audit --json— Ergebnisobjekt unter Schlüsselauditin die Merge-Datei legen.- Alle drei JSON-Teile mit Zeitstempel, Commit-SHA aus dem Webhook-Payload und
CORRELATION_IDzuci-summary.jsonzusammenführen.
Vertiefung: Gateway-Status-JSON-Gate und WAN-Git-Matrix für Retry-Parameter.
Sieben Schritte: Webhook konfigurieren, Prefetch ausführen, Summary mergen, CI füttern
Jeder Schritt erhält dieselbe CORRELATION_ID, damit builds.sr.ht-Logs und Mac-Logs joinbar bleiben.
- builds.sr.ht: HTTPS-URL des Reverse-Proxy eintragen, gemeinsames Geheimnis als Header oder Signatur setzen, nur benötigte Ereignisse (z. B. Build gestartet) aktivieren.
- Listener: JSON-Payload validieren, Idempotenz-Key aus Task-ID cachen, bei Duplikat sofort
200ohne erneutesnpm ci. - Repository: shallow
git fetchmit Matrix-Backoff; Arbeitsverzeichnis pro Auftrag unter/var/lib/ci/srht/$TASK_ID. - Prefetch:
npm cimit festemNPM_CONFIG_CACHE; optionalnpm packfür kritische Pakete vorab. - Lockfile-Gate:
git diff --exit-code package-lock.jsonnachnpm ci; Abbruch bei Drift, kein automatischesnpm install. - Merge:
doctor-Log,gateway status --jsonundnpm audit --jsonzuci-summary.jsonkombinieren. - CI-Rückkanal: Artefakt-Upload per dokumentiertem API-Token oder signierte zweite HTTP-Anfrage an builds.sr.ht; Antwortredaction strikt einhalten.
Stabilität: Keine world-writable Cache-Verzeichnisse; umask 027 für Hook-Prozesse.
Drei Kennzahlen für Review, Budget und Runbook-Versionierung
- Hook-SLA: Zielbearbeitung unter 90 s p95; darüber Prefetch auslagern oder Queue begrenzen.
- Cache-Key: SHA256 von
package-lock.jsonplus Node-Minor plus OpenClaw-CLI-Version. - Parallelität: Mehr als 2 gleichzeitige sr.ht-Prewarms pro Mac mini M4 senken Trefferquote des npm-Caches messbar, wenn Git und npm dieselbe SSD belasten.
FAQ: Token, TLS und Port 18789
- Welches Token gehört in den Webhook-Pfad?
- Ein PAT nur mit den Rechten für Artefakt-Upload oder Task-Callback; rotieren und niemals in Klartext-Logs ausgeben. Für Git-Zugriff Deploy-Key bevorzugen.
- Wie streng muss TLS zwischen sr.ht und dem Mac sein?
- Vollständige Kette am Proxy, keine dauerhafte
curl -k-Umgehung; Firmen-CA im System-Trust des Runners installieren. - Was tun bei
EADDRINUSEauf Port 18789? lsof -iTCP:18789 -sTCP:LISTEN; entweder bestehenden OpenClaw-Daemon nutzen oderOPENCLAW_GATEWAY_PORTfür kurzen Smoke setzen.- Dürfen mehrere Hooks dieselbe npm-Cache-Instanz nutzen?
- Nur mit Dateisperre und freier Platte oberhalb der Matrix-Schwelle; sonst dedizierte Cache-Pfade pro Queue.
- Wann Prefetch abbrechen statt retry?
- Bei Lockfile-Drift oder nicht übereinstimmendem Commit-SHA sofort fehlschlagen, damit die CI-Zusammenfassung kausal bleibt.
Fazit: deterministischer Prefetch plus maschinenlesbare Summaries
Node 24, globales OpenClaw, ein signierter builds.sr.ht-Webhook und ein klarer Lockfile-Gate bilden das Rückgrat. Die Matrix entscheidet über Parallelität, Git-Backoff und APFS-Reserve; doctor und gateway status liefern belastbare JSON-Signale für die Rückkopplung.
Nächste Schritte: Startseite, Blog, Preise, Pakete, Hilfe; verwandt: LaunchDarkly-Webhook, GitHub-Lockfile-Scan.
Dedizierte Apple-Silicon-Runner für Webhook-Pipelines
Region wählen, SSH-Anleitung in der Hilfe nutzen, Pakete mit ausreichend NVMe für npm-Prewarm buchen.