OpenClaw.app mit einem Remote-Gateway betreiben

OpenClaw.app nutzt SSH-Tunneling, um sich mit einem Remote-Gateway zu verbinden. Diese Anleitung zeigt dir, wie du das einrichtest.

Überblick

flowchart TB
    subgraph Client["Client-Rechner"]
        direction TB
        A["OpenClaw.app"]
        B["ws://127.0.0.1:18789\n(lokaler Port)"]
        T["SSH-Tunnel"]

        A --> B
        B --> T
    end
    subgraph Remote["Remote-Rechner"]
        direction TB
        C["Gateway WebSocket"]
        D["ws://127.0.0.1:18789"]

        C --> D
    end
    T --> C

Schnell-Setup

Schritt 1: SSH-Konfiguration hinzufügen

Bearbeite ~/.ssh/config und füge hinzu:

Host remote-gateway
    HostName <REMOTE_IP>          # z. B. 172.27.187.184
    User <REMOTE_USER>            # z. B. jefferson
    LocalForward 18789 127.0.0.1:18789
    IdentityFile ~/.ssh/id_rsa

Ersetze <REMOTE_IP> und <REMOTE_USER> durch deine Werte.

Schritt 2: SSH-Schlüssel kopieren

Kopiere deinen öffentlichen Schlüssel auf den Remote-Rechner (einmaliges Passwort-Eingeben):

ssh-copy-id -i ~/.ssh/id_rsa <REMOTE_USER>@<REMOTE_IP>

Schritt 3: Gateway-Token setzen

launchctl setenv OPENCLAW_GATEWAY_TOKEN "<your-token>"

Schritt 4: SSH-Tunnel starten

ssh -N remote-gateway &

Schritt 5: OpenClaw.app neu starten

# OpenClaw.app beenden (⌘Q), dann erneut öffnen:
open /path/to/OpenClaw.app

Die App verbindet sich jetzt über den SSH-Tunnel mit dem Remote-Gateway.


Tunnel beim Login automatisch starten

Damit der SSH-Tunnel beim Anmelden automatisch startet, erstelle einen Launch Agent.

PLIST-Datei erstellen

Speichere dies als ~/Library/LaunchAgents/ai.openclaw.ssh-tunnel.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>ai.openclaw.ssh-tunnel</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/ssh</string>
        <string>-N</string>
        <string>remote-gateway</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Launch Agent laden

launchctl bootstrap gui/$UID ~/Library/LaunchAgents/ai.openclaw.ssh-tunnel.plist

Der Tunnel wird nun:

  • Automatisch beim Anmelden starten
  • Bei einem Absturz neu starten
  • Im Hintergrund weiterlaufen

Legacy-Hinweis: Entferne etwaige übrig gebliebene com.openclaw.ssh-tunnel-LaunchAgents, falls vorhanden.


Fehlerbehebung

Prüfen, ob der Tunnel läuft:

ps aux | grep "ssh -N remote-gateway" | grep -v grep
lsof -i :18789

Tunnel neu starten:

launchctl kickstart -k gui/$UID/ai.openclaw.ssh-tunnel

Tunnel stoppen:

launchctl bootout gui/$UID/ai.openclaw.ssh-tunnel

Funktionsweise

KomponenteFunktion
LocalForward 18789 127.0.0.1:18789Leitet den lokalen Port 18789 an den Remote-Port 18789 weiter
ssh -NSSH ohne Ausführung von Remote-Befehlen (nur Portweiterleitung)
KeepAliveStartet den Tunnel automatisch neu bei Absturz
RunAtLoadStartet den Tunnel beim Laden des Agents

OpenClaw.app verbindet sich mit ws://127.0.0.1:18789 auf deinem Client-Rechner. Der SSH-Tunnel leitet diese Verbindung an Port 18789 auf dem Remote-Rechner weiter, auf dem das Gateway läuft.