openclaw onboard --install-daemon dort, wo die Distribution ihn dokumentiert, sowie kurze Gateway-Selbsttests (openclaw doctor, Status-Unterbefehle oder curl auf dokumentierte Health-Pfade). Behandeln Sie diese Abläufe als referenzielle Beschreibung aus Ihrer Herstellerdokumentation — nicht als harte Abhängigkeit von einer einzelnen Dritt-URL.
Vertiefung auf Deutsch: GHCR vs. private Registry — Pull-Matrix, OpenClaw-Gateway-Härtung auf Remote-Mac sowie OpenClaw × Docker CI-Integration.
- Kalte Pulls in der Pipeline: Jobs warten auf große Layer, weil nach dem Push niemand den Runner „warm“ gehalten hat.
- Webhook-Vertrauen: Geheimnisvergleich auf bereits geparstem JSON oder Proxys, die den Body neu formatieren, führen zu falschen Annahmen oder endlosen 401.
- Unkontrollierter Ausgang: beliebige Summary-URLs verletzen Unternehmens-Allowlists und können Metadaten leaken.
Ziele und Voraussetzungen
Ziele. Sobald Harbor ein relevantes Artefakt-Ereignis liefert, soll Ihr Mac (1) die Authentizität des Webhooks prüfen, (2) eine oder mehrere voll qualifizierte Image-Referenzen ableiten, (3) diese mit begrenzter Parallelität und Platten-Sicherheit vorab ziehen und (4) eine kurze JSON-Zusammenfassung an eine kleine, konfigurierte Menge erlaubter Ziel-Hosts senden — ohne dass Betriebskräfte ständig die Harbor-Oberfläche öffnen müssen.
Voraussetzungen. Harbor-Projekt mit Webhook-Rechten, eine TLS-terminierte HTTPS-Eingangskette, die auf den OpenClaw-Listener (typischerweise Loopback plus Reverse-Proxy oder kontrollierter Tunnel) weiterleitet, ein funktionierender docker-Daemon auf dem Mac mit nicht-interaktivem Login für Ihren Registry-Hostnamen sowie ein technischer Service-Account (Robot oder scoped Token), dessen Geheimnisse mit Dateirechten 600 und ohne Klartext im Git liegen.
Richten Sie die Laufzeit ein: viele Teams installieren Node 22 LTS oder die von Ihrer OpenClaw-Version explizit getestete Hauptversion — oft per dokumentiertem curl-Installer oder Versionsmanager. Anschließend OpenClaw installieren, openclaw onboard ausführen und, falls Ihre Paketquelle es beschreibt, openclaw onboard --install-daemon, damit launchd Neustarts übernimmt. Führen Sie openclaw doctor aus, bis jede Warnung verstanden oder entschärft ist; ergänzen Sie einen periodischen curl-Check gegen die dokumentierte Health-Route von derselben Netzwerkperspektive wie Harbor. Dokumentieren Sie eine Ausgangs-Whitelist: erlaubte Harbor-Ingress-CIDRs (falls Ihr Sicherheitskonzept das fordert), Registry-Pull-Endpunkte und genau ein bis zwei Summary-Ziele (internes CI-API, Chat-Gateway hinter mTLS).
Minimales Erfolgskriterium. Ein aufgezeichneter Harbor-Test-Payload, den Sie per curl auf einem Staging-Mac erneut absetzen, erzeugt identische Digest-Zeilen in den Logs, beendet den Prefetch innerhalb Ihres Timeout-Budgets und liefert eine Summary-JSON unter etwa fünf Kilobyte.
Harbor-Webhook: Ereignisfelder und Verifikations-Checkliste (Signatur / Geheimnis)
Harbor sendet JSON-Hüllen mit einem type-String (z. B. PUSH_ARTIFACT, PULL_ARTIFACT, DELETE_ARTIFACT), einem Zeitstempel occur_at, einem Feld operator und einem Objekt event_data mit Repository- und Ressourcenmetadaten. Für den Vorabzug interessieren Sie sich typischerweise für Repository-Name, Tag oder Digest sowie optional Artifact-Digest zur Deduplizierung. Legen Sie eine ausgedruckte oder versionierte Beispiel-Payload in Ihrem Runbook ab, damit Feldnamen mit Ihrer Harbor-Minor-Version konsistent bleiben.
Checkliste (in PR-Vorlagen kopierbar). (1) Roh-HTTP-Body vor JSON.parse lesen. (2) Das im Harbor-Projekt konfigurierte Geheimnis zeitkonstant vergleichen — entweder über einen Header, den Ihr Proxy nach TLS-Terminierung setzt, oder über den von Harbor mitgesendeten Bearer/Shared-Secret-Mechanismus Ihrer Version. (3) Anfragen mit falschem Content-Type ablehnen, sofern Sie keine alternativen Inhalte explizit unterstützen. (4) Optional ein Frischefenster auf occur_at, wenn Replay-Szenarien relevant sind. (5) Nach erfolgreicher Auth nur Repository plus Digest loggen, niemals das Geheimnis. (6) Falls Sie später HMAC ergänzen: immer dieselben Roh-Bytes hashen, die Harbor signiert hat — Proxys, die JSON „hübsch“ formatieren, sind der häufigste Grund für dauerhaft fehlschlagende Prüfungen.
| Feld / Aspekt | Nutzung im OpenClaw-Handler |
|---|---|
type |
Policy: Prefetch bei Push oder Retag; Deletes nur verarbeiten, wenn Sie lokales Pruning wollen. |
event_data.resources (o. ä.) |
Abbildung auf registry/projekt/repo:tag; bei leerem Tag digest-fixierten docker pull verwenden. |
operator |
Audit-Trail und optionale Ratenbegrenzung pro Automatisierungsidentität. |
| Integrität Roh-Body | Zuerst Geheimnis/HMAC; bei Fehler 401 ohne Echo sensibler Eingaben. |
https://ihr-relay.example/hooks/harbor?token=…; Query-Token nicht in öffentlichen Screenshots.Remote-Mac: Skriptparameter für den Vorabzug (Parallelität, Timeout, Speicher-Kontingent)
Sobald der Handler Image-Referenzen extrahiert hat, rufen Sie ein kleines Shell-Skript auf statt lange docker pull-Ketten inline zu halten — das hält OpenClaw-Routen lesbar und erlaubt Betriebsteams, Knöpfe ohne TypeScript-Redeploy zu drehen. Typische 2026-Defaults für geteilte Mini-Hosts: zwei bis vier parallele Pulls, eine Wanduhr pro Pull zwischen sechs und fünfzehn Minuten (abhängig von Layer-Größe) und ein harter Abbruch, wenn der freie Speicher auf dem Docker-Datenvolume unter etwa 15–25 GiB fällt.
Parameter als Umgebungsvariablen exportieren, die Ihre LaunchAgent-plist setzt: PREFETCH_CONCURRENCY, PULL_TIMEOUT_SEC, MIN_FREE_GB und optional MAX_IMAGES_PER_EVENT, damit ein falsch konfigurierter Webhook nicht hunderte Repos in die Queue stellt. Unter macOS eignet sich xargs -P; achten Sie auf BSD-xargs-Limits. Nach jedem Batch eine JSON-Zeile an ein Log anhängen, das OpenClaw oder Ihr Log-Agent für Summaries ausliest.
#!/usr/bin/env bash
set -euo pipefail
: "${PREFETCH_CONCURRENCY:=3}"
: "${PULL_TIMEOUT_SEC:=600}"
: "${MIN_FREE_GB:=18}"
# macOS: df -g nutzt 1-GiB-Blöcke (siehe man df)
avail_gib="$(df -g / | awk 'NR==2 {print $4}')"
if [ "${avail_gib:-0}" -lt "${MIN_FREE_GB}" ]; then
printf '{"prefetch":"skipped","reason":"disk_low","avail_gib":%s}\n' "${avail_gib}"
exit 0
fi
printf '%s\n' "$@" | xargs -n1 -P"${PREFETCH_CONCURRENCY}" -IREF docker pull REF
# Optional: einzelne Pulls mit gtimeout "${PULL_TIMEOUT_SEC}" kapseln, falls GNU coreutils installiert ist
Ergänzen Sie den Timeout-Kommentar mit Ihrer bevorzugten Implementierung (gtimeout, Python-Wrapper oder dockerseitige Pull-Politik). Wenn Gateway und CI dieselbe Maschine teilen, gleichen Sie Retries und Volume-Pfade mit dem oben in der Einleitung verlinkten Leitfaden „OpenClaw Docker CI-Integration“ ab.
OpenClaw-Gateway-Routing und Fehler-Zusammenfassungsvorlage
Hängen Sie eine HTTPS-Route pro Integration ein (z. B. /hooks/harbor/v1), damit Firewall- und WAF-Regeln schmal bleiben. Im Handler nach erfolgreicher Verifikation auf type verzweigen, bei Treffer Prefetch in eine Warteschlange legen und stets eine Fehler-Zusammenfassungsvorlage erzeugen, die nachgelagerte Systeme ohne Regex in Fließtext parsen können.
{
"source": "harbor-webhook",
"event_type": "PUSH_ARTIFACT",
"repository": "acme/base-images/nodejs",
"digest": "sha256:…",
"prefetch": { "ok": false, "failed_image": "reg.example/acme/base-images/nodejs:20", "exit_code": 1, "log_tail": "…letzte 400 Zeichen…" },
"host": "mac-ci-07",
"duration_ms": 8420
}
POSTen Sie dieses Objekt ausschließlich an Hosts, die in Ihrer Allowlist-Konfiguration stehen; lehnen Sie unbekannte Hostnamen ab, bevor DNS aufgelöst wird, sofern Ihre Laufzeit das unterstützt. Wiederholen Sie fehlgeschlagene Summary-Posts mit Pausen von 2, 4 und 8 Sekunden und setzen Sie curl --max-time 25 (oder Äquivalent), damit ein hängendes Summary-Ziel Harbor nicht blockiert. Ist Harbors Client-Timeout aggressiv, antworten Sie nach Validierung schnell mit 202 Accepted und beenden den Prefetch asynchron — sofern Ihre Betriebsrichtlinie das erlaubt.
FAQ zu typischen Fehlern (Authentifizierung, Timeout, volle Festplatte)
Robot-Passwort wurde gedreht, die LaunchAgent-plist exportiert noch den alten Wert; der Hostname in docker pull passt nicht zum Token-Scope; oder die Sitzung verlangt Keychain-Interaktion ohne GUI. Headless erneut anmelden, absolute Pfade in EnvironmentVariables pinnen und einen einzelnen Pull als exakt denselben UNIX-Benutzer wie den Gateway-Prozess testen (sudo -u …).
Harbor wartet auf Ihre HTTP-Antwort, während Layer geladen werden. Schnell quittieren, Arbeit in eine Worker-Queue verschieben oder weniger Arbeit pro Ereignis (ein Tag pro Lieferung). TLS niemals „zur Beschleunigung“ abschalten.
Geteilte Runner sammeln hängende Images. MIN_FREE_GB durchsetzen, nach grünen Builds docker image prune -f im Wartungsfenster und große Nicht-Container-Artefakte vom Docker-Root-Volume fernhalten.
Abweichung zwischen internem Listener und Proxy-Upstream oder SNI-Hostname weicht vom Zertifikat ab. Öffentliche URL von einem Jump-Host testen und die TLS-Kette vergleichen.
Fazit und kauforientierter Ausblick
Sie haben jetzt eine schlanke, wiederholbare Wirbelsäule: Harbors Roh-JSON verifizieren, Vorabzug mit expliziter Parallelität und Platten-Gates ausführen, über OpenClaw mit typisierter Summary-JSON routen und Rückkanäle strikt auf einer kurzen Allowlist mit begrenzten Retries halten. Damit sinkt CI-Rauschen, Apple-Silicon-Runner werden planbarer, und der Mac wird nicht zum generischen offenen Relay.
Benötigen Sie einen Host, der wach bleibt, stabiles TLS bietet und nach Neustarts dieselben launchd-Labels behält, können Sie einen Remote-Mac bei MacPull mieten — öffentliche Einstiege ohne Login-Pflicht zum Lesen: Startseite, Kaufen, Hilfe, Preise und der Technik-Blog.
MacPull stellt dedizierte Mac-Mini-Knoten bereit, damit OpenClaw- plus Harbor-Prefetch-Gateways online bleiben, überwacht werden und sich gegenüber Security-Reviewern gut begründen lassen.
Harbor-gesteuerten Prefetch auf einem dauerhaft erreichbaren Remote-Mac betreiben
MacPull für stabiles TLS, persistente OpenClaw-Dienste und planbare Docker-Layer — Hilfe, Kaufen, Preise und Blog sind öffentlich lesbar.