Sobald OpenClaw auf einer gemieteten Mac mini M4-Instanz in Kanada läuft, folgt eine echte Architekturfrage: Erreichen Sie das lokale Gateway auf TCP 18789 per SSH-Portweiterleitung, oder behandeln Sie den Host als kleinen Edge-Knoten und sprechen Sie das Gateway direkt über die URL an, die Ihr Anbieter veröffentlicht? Diese Wahl beeinflusst Firewall-Regeln, die Ablage von gateway.remote.token, ob launchd einen vollen PATH exportieren muss, und was um drei Uhr nachts in den Logs steht. Dieser Beitrag ist eine kompakte Entscheidungshilfe plus gestaffeltes Runbook und eine Symptom-Tabelle für Ihr internes Wiki. Grundlagen zu onboard und Dämon-Start finden Sie in OpenClaw 2026: Fern-Mac installieren, ausrollen & Fehleranalyse — openclaw onboard, Gateway-Daemon und praktische M4-Ressourcenplanung in Kanada.
Wann der SSH-Tunnel gewinnt — und wann das direkte Gateway
SSH Local Port Forward (z. B. ssh -L 18789:127.0.0.1:18789 nutzer@kanada-mac) lässt das Gateway auf dem Server an Loopback gebunden, während Ihr Laptop localhost:18789 anspricht. Das passt zu Einzelpersonen, kurzen Debug-Sitzungen oder Richtlinien, die exponierte Agenten-Ports auf routbaren Interfaces verbieten. Der Preis ist operativ: Tunnel leben mit der SSH-Session, Reconnects können Health-Checks überholen, und Sie brauchen stabiles SSH — deshalb kombinieren Team-Runbooks Tunnel-Workflows oft mit Budgetierung für SSH/VNC über Regionen hinweg.
Direktes Gateway heißt: Steuerungsebene oder ein anderer Dienst spricht den Mac ohne SSH-Hülle an — typischerweise TLS vor 18789 oder ein anbieterverwalteter Pfad. Das skaliert besser für dauerhafte Agenten, mehrere Clients und Automatisierung ohne interaktive Shell. Gleichzeitig denken Sie wie bei Infrastruktur: statische Egress-Erwartungen, Allow-Lists und Token-Rotation, die nicht davon abhängt, dass ein Entwicklerrechner online bleibt. Für stabile 7×24-Betriebsketten aus Skript, plist und Logauswertung siehe OpenClaw 2026 stabil auf dem Fern-Mac: Install-Skripte, onboard, Gateway 18789, Token, LaunchDaemon, Log-Fehlertabelle & Kanada M4 7×24.
launchd den Prozess besitzt und Sie 7×24-Klienten brauchen.
gateway.remote.token und wo es liegen muss
In gängigen OpenClaw-Layouts ist gateway.remote.token (oder das äquivalente Schlüsselfeld im Onboarding-Profil) das gemeinsame Geheimnis zwischen Remote-Clients und Gateway. Es muss im selben Benutzerkontext lesbar sein, das das Gateway ausführt — meist das Konto nach openclaw onboard — und darf nicht nur in einer interaktiven Shell-Konfiguration stehen. Legen Sie es in der Konfigurationsdatei ab, die der Dämon lädt, oder exportieren Sie es per plist-EnvironmentVariables, wenn Ihr Sicherheitsmodell das erlaubt. Nach jeder Änderung prüfen Sie mit einem Nicht-Login-Test (kurzes Skript über launchctl), ob der Prozess die Variable wirklich sieht; eine interaktive SSH-Sitzung kann fehlende plist-Umgebung vollständig verdecken.
Port 18789: Bind-Adresse, Firewall und doppelte Listener
Viele Builds lauschen standardmäßig auf 127.0.0.1:18789, bis Sie die Bindung explizit für Remote-Zugriff erweitern — das ist für tunnel-first korrekt. Wechseln Sie zu direktem Zugriff, dokumentieren Sie, ob der Listener hinter einem Reverse-Proxy auf Loopback bleibt oder auf eine LAN-Adresse wechselt. Nach Reboot und Upgrades lsof -iTCP:18789 -sTCP:LISTEN ausführen. Zwei Prozesse? Mit openclaw gateway stop bereinigen, veraltete LaunchAgents entfernen, dann genau eine plist aktivieren, damit Health-Checks nicht flattern.
PATH und launchd: Schrittfolge für Headless-Macs
launchd-Jobs erben eine minimale Umgebung; openclaw löst sich nicht wie in Terminal.app auf. Auf dem Kanada-Host empfehlen wir diese Reihenfolge:
1) Absoluten CLI-Pfad mit which openclaw in einer SSH-Sitzung ermitteln, die dem Dämon-Benutzer entspricht.
2) In der LaunchAgent-plist unter ProgramArguments den absoluten Binary-Pfad bevorzugen, keine fragile Shell-Hülle.
3) Falls /bin/zsh -lc nötig ist, PATH im Kommandozeilenpräfix setzen, z. B. PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin;/opt/homebrew/bin/openclaw gateway start, damit Node und Helfer ohne ~/.zshrc gefunden werden.
4) Laden mit launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ihre.openclaw.gateway.plist (Domain bei Bedarf anpassen), dann launchctl print gui/$(id -u)/ihr.label prüfen.
5) Log-Pfad laut Dokumentation tailen, einen einzelnen Client-Request auslösen; PATH- oder Token-Fehler beheben, bevor der Listener auf eine öffentliche Schnittstelle geöffnet wird.
ssh -N -L 18789:127.0.0.1:18789 -i ~/.ssh/id_ed25519 [email protected]
Fehlerbilder: Symptom → wahrscheinliche Ursache → erster Fix
| Symptom | Wahrscheinliche Ursache | Erster Fix |
|---|---|---|
| In SSH-Shell ok, nach Reboot kaputt | PATH oder Token nur in interaktiven Profilen |
Absolute Pfade + plist-EnvironmentVariables; LaunchAgent neu laden |
| Tunnel steht, Client bekommt Reset | SSH-Idle-Timeout oder fehlende TCP-Keepalives | ServerAliveInterval in SSH-Config; oder direktes Gateway |
| Direktmodus: HTTP 401 vom Gateway | gateway.remote.token stimmt nicht oder falscher Header |
Token in Client- und Server-Config angleichen; bei Leck rotieren |
EADDRINUSE auf 18789 |
Doppeltes Gateway oder verwaister Node-Prozess | openclaw gateway stop; lsof; doppelte plist entfernen |
| Connection refused auf öffentlicher IP | Listener nur auf 127.0.0.1 | Reverse-Proxy oder Bind laut Anbieter-Doku; Rohport nicht blind exponieren |
Fazit
Auf einem OpenClaw-2026-Stack in Kanada wählen Sie SSH-Tunnel, wenn Sie eine temporäre, loopback-sichere Leitung zu 127.0.0.1:18789 brauchen, und migrieren Sie zu direktem Gateway mit klaren Tokens und Netzwerkpolicy, sobald Automatisierung Schlaf, Reboots und mehrere Aufrufer überleben muss. Verdrahten Sie gateway.remote.token in denselben Kontext wie launchd, halten Sie den PATH langweilig und absolut, und behandeln Sie die Tabelle oben als erste Seite Ihres On-Call-Runbooks.