← 開発日記に戻る

2026年、OpenClawのGatewayをカナダの遠隔Mac M4だけに置く:macOSクライアントRemote over SSH/Tailnet、Dashboardと18789のつなぎ方──跨洋チームのtokenloopback束ねとLaunchAgent常駐(手順+対照表+FAQ)

開発 · 2026.05.15 · 13 分

カナダの遠隔MacでOpenClaw GatewayとDashboardを跨洋チームへ届ける接続イメージ

データ所在地とレイテンシの都合で「OpenClawのGatewayはカナダの遠隔Mac M4に一本化し、東京やシンガポールのメンバーはクライアントだけ持つ」構成は、2026年時点でも現場で増えています。本稿の焦点は、公開インターフェースを増やさずに18789へ到達させる二経路──手元macOSからのssh -L(いわゆるRemote over SSHの裏側で動くローカルフォワード)と、TailscaleなどのゼロトラストTailnet越しの100.x直叩き──と、ブラウザで見るDashboardの入口整合、跨洋チームに配るgateway.remote.tokenの寿命設計、そして127.0.0.1束ねを崩さないLaunchAgent常駐です。7×24のLaunchDaemon寄りの定番手順はOpenClaw 2026をリモートMacで安定運用 — 導入スクリプトとonboard、Gateway 18789/トークン/LaunchDaemon、ログ対照表、カナダ中高配M4の7×24に譲り、ここでは「ログインユーザ文脈で動かしたい」「DashboardのCookieとAPIトークンを混同しない」ケースに寄せます。経路比較の別解はOpenClaw 2026:カナダのリモートMac M4でSSHトンネルと直結ゲートウェイのどちらを選ぶ?gateway.remote.token・18789・PATH/launchdの手順と排障対照、太平洋協業の予算感は2026年リモートMacチームの予算と性能:カナダノードで北米ユーザー、太平洋横断のSSH/VNC選区、M4(16GB/256GB対24GB/512GB)と1TB/2TB拡張・並列インスタンスは割に合うかを参照してください。

1. なぜカナダ単一ノードにGatewayを固定するのか

複数リージョンへGatewayを複製すると、チャネル状態・ファイルキャッシュ・モデル鍵の所在が分散し、跨洋チームのデバッグが難しくなります。カナダの遠隔Macに一本化すると、北米向けWebhookやクラウドAPIの出口IPも揃いやすく、監査ログの単一ストリームになります。代償として、アジア太平洋側メンバーは往復レイテンシが増えるため、UIはローカル描画に寄せ、重い処理だけをGatewayに投げる形にします。OpenClawのHTTP待受は多くの構成で127.0.0.1:18789に束ね、外向きはSSHトンネルかTailnetのプライベート到達に限定するのが安全側です。

2. loopback18789を束ねる意味と典型ミス

Gatewayを0.0.0.0:18789で広げるとポートスキャンに晒されやすく、DashboardのセッションCookieとAPIトークンが同じホスト上で混線しがちです。まずは127.0.0.1:18789に固定し、前段のトンネルかTailnetのACLで「誰が叩けるか」を絞ります。手元Macで18789を既に使っているとssh -LEADDRINUSEになるため、ローカル側は22889:127.0.0.1:18789のようにずらし、ブラウザはhttp://127.0.0.1:22889へ向けます。リモート側でLISTEN*:18789になっていないかはlsof -nP -iTCP:18789 -sTCP:LISTENで確認します。

跨洋でtokenを配るときの最低ライン

Slackやメール本文に長寿命トークンを貼らない。共有Vaultから短命クレデンシャルを注入し、ローテ時は「失効日時」をタイムゾーン付きでRunbookに残す。画面収録中はDashboardを閉じる。

3. macOSクライアント:Remote over SSHの裏で18789をつなぐ

Finderやssh user@hostの対話セッションと別に、フォワード専用のssh -Nを常駐させるのが実務的です。跨洋回線ではServerAliveInterval 30ServerAliveCountMax 4を入れてNAT切断を避けます。複数メンバーが同じローカルポートを奪い合わないよう、各自のplistかシェルエイリアスでポートを分けます。

手元macOS → カナダ遠隔Mac(各自ローカルポートをずらす)
ssh -N \
  -o ServerAliveInterval=30 -o ServerAliveCountMax=4 \
  -L 22889:127.0.0.1:18789 \
  user@kanada-remote-mac.example

ブラウザのDashboardはhttp://127.0.0.1:22889、CLIや社内ツールも同じループバックを指します。セッションが切れたらフォワードも消えるので、長時間運用は後述のLaunchAgentautosshに寄せます。

4. Tailnet越しにDashboardとAPIを叩く

Tailscaleを使う場合、カナダMacにtailscaledを入れ、チームACLで「エンジニア端末だけが100.x:18789へ到達可」にします。SSHトンネルより常時張り直しが少なく、跨洋チームのオンボーディングも「端末にTailscaleを入れる」一点に集約できます。Dashboardをhttps://で終端したい場合は、ノード上でリバースプロキシを立て、上流をhttp://127.0.0.1:18789に限定してください。公開向けのtailscale funnel系は別物なので、社内閉域なら使わない方針を推します。

ノード上の疎通確認(Tailnet内の別端末から)
curl -fsS "http://100.x.y.z:18789/healthz" \
  -H "Authorization: Bearer ${OPENCLAW_GATEWAY_TOKEN}"

5. 跨洋チームのgateway.remote.token運用

トークンは「人」ではなく「ロール」単位で発行し、オペレータ・CI・個人開発を分けます。失効手順を書かないままローテすると、太平洋の反対側で夜間ジョブだけが古いトークンを握り続けることがあります。環境変数注入(launchctl setenvではなくplistのEnvironmentVariables)か、1Password/ Vault のランナー同期に寄せてください。プロキシがAuthorizationヘッダを削ると401に見えるので、Gatewayログとクライアント側の-vを突き合わせます。

6. 対照表:SSHトンネル/Tailnet/TLS直結

到達経路 公開面 跨洋運用の観点 18789の束ね方
SSH -L SSHポートのみ(公開鍵管理) セッション寿命の管理が必要。各自ローカルポート設計 リモート127.0.0.1:18789へ直フォワード
Tailnet(推奨閉域) コントロールプレーン+ACL 常時張り直しが少ない。端末ポリシーで統制しやすい 100.xから18789。必要ならノード内リバプロでTLS
インターネットTLS直結 443/WAF Webhookや外部SaaS向け。運用責務が最重 上流127.0.0.1:18789、証明書とWAFログ監査が必須

7. LaunchAgentでフォワードとGatewayをログイン文脈に固定

LaunchDaemonはブート直後から全ユーザーで動きますが、キーチェーンやGUIログインセッションに依存するツールはLaunchAgent向きです。跨洋チームで「共有アカウントは使わず、各自のエージェントを自分のセッションだけで立ち上げる」方針なら、~/Library/LaunchAgents/にplistを置きます。変更後はlaunchctl bootout gui/$(id -u)bootstrap gui/$(id -u)のペアで二重登録を避けます。PATH不足でopenclawが見つからないときはフルパスかEnvironmentVariablesを明示します。

LaunchAgent 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>com.example.openclaw.ssh-tunnel</string>
  <key>ProgramArguments</key><array>
    <string>/usr/bin/ssh</string>
    <string>-N</string>
    <string>-oServerAliveInterval=30</string>
    <string>-L</string>
    <string>22889:127.0.0.1:18789</string>
    <string>user@kanada-remote-mac.example</string>
  </array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
</dict></plist>
項目 LaunchAgent LaunchDaemon
起動タイミング ユーザログイン後 ブート時(全ユーザー)
キーチェーン/GUI依存 相性が良い 分離が必要なことが多い
跨洋チーム運用 個人端末のトンネル常駐向き 共有ノードのGateway常駐向き
典型リスク ログアウトで停止 権限境界の誤設定

8. Dashboardと18789の整合チェックリスト

Dashboardが参照するAPIベースURLと、実際にフォワードしているローカルポートが一致しているかを最初に確認します。ブラウザの混合コンテンツブロックや、社内プロキシによるWebSocket切断も跨洋で顕在化しやすいです。リモートMac側でopenclaw gateway statusを見て、待受が意図通り127.0.0.1かを確定させてからクライアント側のトラブルシュートに進みます。

3
最低確認ステップ(Gateway/トンネル/ブラウザURL)
18789
既定HTTP待受(競合時はローカル側をずらす)
ACL
Tailnetならデバイス単位の到達制御が核

9. FAQ

Q1. Dashboardは開くのにAPIだけ401になる

CookieセッションとAuthorizationトークンを取り違えていないか確認します。プロキシがヘッダを落とすケースでは、Gateway直のTailnet経由で再現試験してください。

Q2. 東京からTailnetで18789がタイムアウトする

ACLで端末ロールが許可されているか、カナダMacのtailscaledが起動しているかを見ます。MagicDNS無効時は100.x直指定が必要です。

Q3. ssh -Lだけは通るが、同僚のMacでは失敗する

ローカルポート競合、社内セキュリティソフトのローカルループバック制限、異なるSSH鍵を握っている可能性があります。各自別ポートに切り替えて切り分けます。

Q4. LaunchAgentを入れたのにログイン直後だけ動く

KeepAliveが無い、またはsshが初回ホスト鍵確認で停止していないかを確認します。StrictHostKeyChecking=accept-newなど方針を決め、非対話で通るようにします。

Q5. Gatewayを0.0.0.0に広げたいという要望が来た

まずTailnetかリバプロで閉じ、どうしても生公開ならWAFとレート制限、トークンローテ、侵入検知をセットで設計します。監査要件が無いPoC以外では非推奨です。

Q6. 跨洋ローテで夜間バッチだけ古いトークンを握っている

ローテ直前にVaultの「失効予告」タグを付け、バッチのsystemd/launchdジョブにトークン再読込フックを入れます。失効後の403をアラートに上げます。

Q7. DashboardのWebSocketが途中で切れる

中間プロキシのタイムアウト値を上げるか、Tailnet直叩きに切り替えます。SSHトンネル経路ではMTU/帯域詰まりも疑い、mtrで跨洋区間を確認します。

10. まとめ

カナダ単一ノードにGatewayを置く設計では、18789loopbackに固定し、SSHトンネルかTailnetで閉域到達を作るのが跨洋チームでも再現性が高いです。Dashboard URLとAPIトークン、そしてLaunchAgentLaunchDaemonのどちらで常駐させるかを表に落としておくと、オンボーディングと障害切り分けが速くなります。

カナダにアンカーを置くなら、静音で低待機電力のMacが現実的

Apple Silicon M4のMac mini級は、GatewayのHTTP待受と軽量エージェントを夜間も載せたまま待機電力を抑えやすく、小規模ラックより冷却と騒音の運用負担が少ないです。macOSはOpenSSHとUnix系ツールが標準で、SSHトンネル検証からTailnet常駐まで同一ホスト上で段階移行できます。GatekeeperとSIPで不要バイナリの混入リスクを下げつつ、ユニファイドメモリはログとキャッシュのスパイクに強く、24GB/1TB帯へ寄せると跨洋チームの長期運用に余裕が出ます。

この経路設計をカナダ拠点でそのまま試すなら、 HashvpsのクラウドMac mini M4が費用対効果の高い出発点です。 プランと料金を見る と、SSHとTailnetのどちらを主経路にするかを見積もりに落とし込めます。

Hashvps · Mac クラウド

跨洋OpenClawをカナダM4に集約

SSHトンネルとTailnetの両方を同一ノードで検証し、18789・Dashboard・token運用を固めたうえで本番ACLへ進む。

ホームへ
期間限定