三プラットフォームの導入記事と Docker 本番ガイドのあとでも、Ubuntu 24.04 上で ベアメタルの Node と systemd により OpenClaw Gateway を動かし、公開インタフェースでは待ち受けさせず Cloudflare Tunnel で届けたい、というニーズは残ります。本稿では Docker との役割分担、つまずきの分解、表二枚、systemd とトンネルのスニペット、六ステップの手順書、当番向けの三指標 を整理し、再現可能な本番移行のために インストール後の切り分け、Docker 本番運用、導入ガイド、Gateway セキュリティ(上級) へリンクします。
ベアメタルでは Node の版、権限、バインドアドレス、プロセス監督 が再びホスト側の責務になります。ノートで前景実行していた習慣のままだと、再起動でサービスが消え、ジャーナルが散漫になり、ufw とクラウドのセキュリティグループのズレが逸話レベルの障害対応に留まりがちです。設定を写す前に、次の六類型に分解します。
sudo npm i -g で本番が文書から外れます。ExecStart は固定の Node バイナリか、バージョン管理用のシムに紐づけます。0.0.0.0 にファイアウォールの穴を一つ抜き忘れると制御面が露出します。トンネル利用時は 127.0.0.1 を優先し、外向き受信はトンネル側に任せます。openclaw で動いていると、「手では動くがサービスでは失敗」になります。cloudflared が誤ったローカルポートを指すと、モデルタイムアウトとは無関係な外向き 502 が出ます。ExecStart と設定のハッシュを凍結していないと、迅速な巻き戻しができません。次の二表は、Docker とベアメタル、トンネルとホスト逆プロキシの境界をレビュー資料用に圧縮したものです。
Gateway のトークン・露出・秘密のローテーションは上級のセキュリティ記事を、本稿は Linux ホストでのループバックバインドとトンネルへの入口委譲 を扱います。合わせて「エッジで入口、リポジトリ面で秘密、プロセスは systemd 下」という形になります。オンボーディングとモデル用の鍵は、ここに来る前に導入ガイドで完了させてください。
Docker 本番運用 の記事ではイメージの固定、ボリューム、Compose でのロールバックを扱います。本稿は ホストのユニットとトンネル です。表 1 はアーキテクチャレビュー向けであり、どちらが絶対正しいという話ではありません。
| 観点 | Docker / Compose | ベアメタル Node + systemd(本稿) |
|---|---|---|
| 再現性 | イメージとダイジェストでランタイムを固定 | ホスト構成は揺れる。構成管理と版の固定で補う |
| 切り分けの深さ | まずコンテナログとボリューム権限 | 方針が許せばホストレベルのツールが使える |
| 既存の運用ツール | コンテナ監視とレジストリフローが要る | journald、node_exporter、バックアップ脚本を再利用しやすい |
| アップグレード経路 | イメージタグの差し替え。ボリュームは明示的 | Node とグローバルパッケージが一体で動く。ロールバックは脚本化する |
| 向くチーム | すでにコンテナ標準化しているところ | メタルで動かす必要がある、またはレガシー systemd サービスと強く結びたいところ |
トンネルは TLS とパブリック入口をエッジに逃がします。Nginx/Caddy は多くの場合ローカルで TLS を終端し、ループバックへ逆プロキシします。組み合わせもありますが、待ち受けするネットワーク面 は最小に保ちます。表 2 をセキュリティグループのルールと突き合わせてください。
| パターン | Gateway のバインド | 外向き面 | 運用上のメモ |
|---|---|---|---|
| トンネル → ループバック | 127.0.0.1:PORT(OpenClaw のドキュメントに従う) | Gateway ポートを直接公開しない。トンネルプロセスの外向きのみ | 入口と、実際に動いているローカルサービスポートを一致させる |
| ローカル Nginx / Caddy | 多くの場合こちらも上流はループバック | 443 はプロキシ側。証明書とレート制限を管理 | ufw とクラウド SG を二重に開けないよう三重確認する |
| 非推奨:Gateway を 0.0.0.0 | 全インタフェース | 制御面がインターネットに晒される | 厳格なトークン・許可リスト・WAF が要る。既定では避ける |
# /etc/systemd/system/openclaw-gateway.service(ひな形。ExecStart は公式 CLI に従う) [Unit] Description=OpenClaw Gateway (bare metal) After=network-online.target Wants=network-online.target [Service] User=openclaw Group=openclaw WorkingDirectory=/var/lib/openclaw Environment=NODE_ENV=production ExecStart=/usr/bin/node /path/to/openclaw/cli.js gateway start --bind 127.0.0.1 Restart=on-failure RestartSec=5 LimitNOFILE=65535 [Install] WantedBy=multi-user.target
# cloudflared 断片:ホスト名からローカル Gateway へ
tunnel: YOUR_TUNNEL_ID
credentials-file: /etc/cloudflared/YOUR_TUNNEL.json
ingress:
- hostname: claw.example.com
service: http://127.0.0.1:18789
- service: http_status:404
注意:ポートとバイナリパスはプレースホルダです。現行の OpenClaw ドキュメントおよび openclaw --help に合わせ、変更チケットにハッシュとロールバック手順を残してください。
127.0.0.1 にバインドし、ドキュメントに従い curl やヘルスチェックで確認してからトンネルを足します。daemon-reload と enable --now。起動順のエラーは journalctl -u openclaw-gateway -f で追います。ExecStart と設定を tarball 等で残し、RTO の範囲でのみ前進します。ローカル健全性(プロセスとループバックポート)と 外部健全性(DNS、証明書チェーン、エッジ経路)は分けて更新します。リリースで片方だけ直すと「内側は緑、外側は赤」の誤判定が起きます。チケットテンプレートには OpenClaw の版、Node のマイナー、cloudflared の版に加え、監査用にジャーナルの抜粋を必須にするとよいです。
curl -v 127.0.0.1:PORT、次にトンネルログ。ローカルで失敗ならアプリ層、ローカルで成功し遠隔で失敗ならトンネルか DNS です。補足:Gateway とトンネルだけの小さな VPS で CPU は空いているのに遅延が振れるときは、vCPU 増設の前に プロセスあたりのファイル記述子、長寿命 WebSocket の本数、プロバイダーまでの TLS RTT を確認します。
汎用の Linux VPS はデモには足りますが、I/O のばらつきとヘッドレス制約は長時間の自動化にも影響します。本番の OpenClaw には 繰り返し可能な監督、監査可能な待ち受け面、CI と秘密情報フローとの整合 が要ります。
iOS ビルド、シミュレータ、GUI 前提の切り分けでは Linux は Apple Silicon に代われません。多くのチームは Gateway を Linux エッジに置き、重い Xcode 作業はリモート Mac に逃がします。予備のノートやバラバラなデスクトップは 24 時間エージェント向きではなく、スリープとダイアログが自動化を不確実にします。MACCOME は複数リージョンの Mac mini M4 / M4 Pro ベアメタルを提供し、ビルドと長時間セッションのバックエンド として使い、Linux 側で入口を収束させる構成に向きます。まず ヘルプセンター を開き、レンタル料金 を地域ページと揃えてください。
短いレンタルでパイロットし、「トンネル+リモート Mac 負荷」までの往復遅延を測ってから、入口とコンパイル役を同一ホストに寄せるか判断するとよいです。
よくある質問
Docker だけでは足りないのですか?
多くの場合は十分です。Docker 本番運用 を参照してください。ベアメタル systemd は、既存のホスト運用と強く一体にしたい、ホストレベルの切り分けが必要、といった場面向きです。
Gateway は 127.0.0.1 と 0.0.0.0 のどちらですか?
トンネルやローカルプロキシの背後ならループバックを優先し、広げる場合はファイアウォール・トークン・監視を揃えます。検証手順は インストール後の切り分け にあります。
インストール手順とプラットフォーム差分はどこですか?
導入とプラットフォーム選択。料金は レンタル料金 を参照してください。