Zielgruppe: Plattform- und DevOps-Teams, die Harbor-Ereignisse nutzen wollen, um auf einem dauerhaft online stehenden Remote-Mac (Apple Silicon) Container-Images vorab zu ziehen, bevor CI-Jobs die WAN-Leitung fluten — und dabei eine strukturierte JSON-Zusammenfassung nur an freigegebene Ziele hinter einer Ausgangs-Whitelist zu senden. In 2026 sieht man in Community-Setups häufig curl-basierte Installer für Laufzeiten, den Aufruf 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.
1
Webhook in Harbor anlegen, Ziel https://ihr-relay.example/hooks/harbor?token=…; Query-Token nicht in öffentlichen Screenshots.
2
Eine echte Lieferung aus der Webhook-Historie exportieren und als Fixture für Parser-Unit-Tests versionieren.
3
Zuerst verifizieren, dann parsen — Handler hart auf maximale Body-Größe begrenzen (z. B. 1 MiB).
4
Mit curl wiederholen inklusive derselben Header wie Harbor; Logzeilen müssen mit Live-Ereignissen übereinstimmen.

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)

Authentifizierung: 401 bei Harbor-Registry oder docker pull

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 …).

Timeout: Harbor markiert den Webhook als fehlgeschlagen, obwohl Pulls weiterlaufen

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.

Volle Festplatte: Prefetch stoppt mitten im Batch

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.

OpenClaw meldet lokal „healthy“, Harbor sieht 502

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.

Dedizierter Mac als Gateway
Roh-Body & Allowlist
Harbor × OpenClaw 2026