OpenClaw.app をリモート Gateway で使う

OpenClaw.app は SSH トンネルを使ってリモート Gateway に接続します。このガイドではその設定方法を説明します。

概要

flowchart TB
    subgraph Client["クライアントマシン"]
        direction TB
        A["OpenClaw.app"]
        B["ws://127.0.0.1:18789\n(ローカルポート)"]
        T["SSH トンネル"]

        A --> B
        B --> T
    end
    subgraph Remote["リモートマシン"]
        direction TB
        C["Gateway WebSocket"]
        D["ws://127.0.0.1:18789"]

        C --> D
    end
    T --> C

クイックセットアップ

ステップ 1:SSH 設定の追加

~/.ssh/config を編集して以下を追加します:

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

<REMOTE_IP><REMOTE_USER> を実際の値に置き換えてください。

ステップ 2:SSH 鍵のコピー

公開鍵をリモートマシンにコピーします(パスワードの入力は1回だけ):

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

ステップ 3:Gateway トークンの設定

launchctl setenv OPENCLAW_GATEWAY_TOKEN "<your-token>"

ステップ 4:SSH トンネルの開始

ssh -N remote-gateway &

ステップ 5:OpenClaw.app の再起動

# OpenClaw.app を終了(⌘Q)してから再度開く:
open /path/to/OpenClaw.app

アプリが SSH トンネル経由でリモート Gateway に接続するようになります。


ログイン時にトンネルを自動起動

SSH トンネルをログイン時に自動的に開始するには、Launch Agent を作成します。

PLIST ファイルの作成

以下を ~/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 の読み込み

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

これでトンネルは以下のように動作します:

  • ログイン時に自動的に開始
  • クラッシュした場合は自動再起動
  • バックグラウンドで常時実行

レガシーに関する注意:古い com.openclaw.ssh-tunnel LaunchAgent が残っている場合は削除してください。


トラブルシューティング

トンネルが動作しているか確認:

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

トンネルの再起動:

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

トンネルの停止:

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

仕組み

コンポーネント役割
LocalForward 18789 127.0.0.1:18789ローカルポート 18789 をリモートポート 18789 に転送
ssh -Nリモートコマンドを実行せず SSH を使用(ポート転送のみ)
KeepAliveトンネルがクラッシュした場合に自動再起動
RunAtLoadエージェント読み込み時にトンネルを開始

OpenClaw.app はクライアントマシンの ws://127.0.0.1:18789 に接続します。SSH トンネルがその接続を Gateway が動作しているリモートマシンのポート 18789 に転送します。