2026:Docker を使わない Linux VPS 上の OpenClaw
Ubuntu 24.04・systemd・Cloudflare Tunnel でループバック専用 Gateway

約 18 分で読めます · MACCOME

三プラットフォームの導入記事と Docker 本番ガイドのあとでもUbuntu 24.04 上で ベアメタルの Node と systemd により OpenClaw Gateway を動かし、公開インタフェースでは待ち受けさせず Cloudflare Tunnel で届けたい、というニーズは残ります。本稿では Docker との役割分担、つまずきの分解、表二枚、systemd とトンネルのスニペット、六ステップの手順書、当番向けの三指標 を整理し、再現可能な本番移行のために インストール後の切り分けDocker 本番運用導入ガイドGateway セキュリティ(上級) へリンクします。

ベアメタル特有の六つの落とし穴:「コンテナを外しただけ」以上の話

ベアメタルでは Node の版、権限、バインドアドレス、プロセス監督 が再びホスト側の責務になります。ノートで前景実行していた習慣のままだと、再起動でサービスが消え、ジャーナルが散漫になり、ufw とクラウドのセキュリティグループのズレが逸話レベルの障害対応に留まりがちです。設定を写す前に、次の六類型に分解します。

  1. Node とグローバル CLI のドリフト:繰り返す sudo npm i -g で本番が文書から外れます。ExecStart は固定の Node バイナリか、バージョン管理用のシムに紐づけます。
  2. 広すぎるバインド:0.0.0.0 にファイアウォールの穴を一つ抜き忘れると制御面が露出します。トンネル利用時は 127.0.0.1 を優先し、外向き受信はトンネル側に任せます。
  3. systemd のユーザーと WorkingDirectory の不一致:root のホームに設定があり、ユニットは openclaw で動いていると、「手では動くがサービスでは失敗」になります。
  4. トンネル上流ポートの食い違い:cloudflared が誤ったローカルポートを指すと、モデルタイムアウトとは無関係な外向き 502 が出ます。
  5. 内向きと外向きの混同:トンネルはクライアントからの到達性を直します。モデル API・DNS・プロキシ・鍵は VPS から外向きの経路のままです。切り分けはインストール後の記事の順に従います。
  6. ロールバックの基準点がない:OpenClaw や Node を上げる際、最後に健全だった ExecStart と設定のハッシュを凍結していないと、迅速な巻き戻しができません。

次の二表は、Docker とベアメタル、トンネルとホスト逆プロキシの境界をレビュー資料用に圧縮したものです。

Gateway のトークン・露出・秘密のローテーションは上級のセキュリティ記事を、本稿は Linux ホストでのループバックバインドとトンネルへの入口委譲 を扱います。合わせて「エッジで入口、リポジトリ面で秘密、プロセスは systemd 下」という形になります。オンボーディングとモデル用の鍵は、ここに来る前に導入ガイドで完了させてください。

Docker Compose とベアメタル systemd:どちらを選ぶか

Docker 本番運用 の記事ではイメージの固定、ボリューム、Compose でのロールバックを扱います。本稿は ホストのユニットとトンネル です。表 1 はアーキテクチャレビュー向けであり、どちらが絶対正しいという話ではありません。

観点Docker / Composeベアメタル Node + systemd(本稿)
再現性イメージとダイジェストでランタイムを固定ホスト構成は揺れる。構成管理と版の固定で補う
切り分けの深さまずコンテナログとボリューム権限方針が許せばホストレベルのツールが使える
既存の運用ツールコンテナ監視とレジストリフローが要るjournald、node_exporter、バックアップ脚本を再利用しやすい
アップグレード経路イメージタグの差し替え。ボリュームは明示的Node とグローバルパッケージが一体で動く。ロールバックは脚本化する
向くチームすでにコンテナ標準化しているところメタルで動かす必要がある、またはレガシー systemd サービスと強く結びたいところ

Cloudflare Tunnel とホスト逆プロキシ:境界をどこで切るか

トンネルは TLS とパブリック入口をエッジに逃がします。Nginx/Caddy は多くの場合ローカルで TLS を終端し、ループバックへ逆プロキシします。組み合わせもありますが、待ち受けするネットワーク面 は最小に保ちます。表 2 をセキュリティグループのルールと突き合わせてください。

パターンGateway のバインド外向き面運用上のメモ
トンネル → ループバック127.0.0.1:PORT(OpenClaw のドキュメントに従う)Gateway ポートを直接公開しない。トンネルプロセスの外向きのみ入口と、実際に動いているローカルサービスポートを一致させる
ローカル Nginx / Caddy多くの場合こちらも上流はループバック443 はプロキシ側。証明書とレート制限を管理ufw とクラウド SG を二重に開けないよう三重確認する
非推奨:Gateway を 0.0.0.0全インタフェース制御面がインターネットに晒される厳格なトークン・許可リスト・WAF が要る。既定では避ける
ini
# /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
yaml
# 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
warning

注意:ポートとバイナリパスはプレースホルダです。現行の OpenClaw ドキュメントおよび openclaw --help に合わせ、変更チケットにハッシュとロールバック手順を残してください。

六ステップ:クリーンな Ubuntu 24.04 から当番の systemd とトンネルまで

  1. ベースラインを凍結する:カーネル、Node のマイナー、OpenClaw のパッケージ版、OpenSSL。導入ガイドの下限と揃えます。
  2. サービス用ユーザーとディレクトリを作る:専用ユーザーと所有権を明確にし、別アカウントで動かしているのに個人ホームに本番設定だけ置く、を避けます。
  3. まずループバックで検証する:127.0.0.1 にバインドし、ドキュメントに従い curl やヘルスチェックで確認してからトンネルを足します。
  4. systemd ユニットを書いて有効化する:daemon-reloadenable --now。起動順のエラーは journalctl -u openclaw-gateway -f で追います。
  5. cloudflared の ingress を設定する:クラウド側の DNS とローカル設定を一致させ、外向き 502/525 をトンネル起因か上流起因か分類します。
  6. アップグレードとロールバックを演習する:最後に健全だった ExecStart と設定を tarball 等で残し、RTO の範囲でのみ前進します。

ローカル健全性(プロセスとループバックポート)と 外部健全性(DNS、証明書チェーン、エッジ経路)は分けて更新します。リリースで片方だけ直すと「内側は緑、外側は赤」の誤判定が起きます。チケットテンプレートには OpenClaw の版、Node のマイナー、cloudflared の版に加え、監査用にジャーナルの抜粋を必須にするとよいです。

当番向けの三つの指標

  1. 待ち受けている TCP ポートの数:本番では開いている TCP ポートを一行で列挙できるようにし、WAF なしで Gateway がパブリックにバインドしているのは緊急欠陥として扱います。
  2. トンネル 502 の切り分け:まず curl -v 127.0.0.1:PORT、次にトンネルログ。ローカルで失敗ならアプリ層、ローカルで成功し遠隔で失敗ならトンネルか DNS です。
  3. 外向きプローブの基準線:VPS からモデルベンダーへの TLS/HTTP チェックを自動化し、閾値はインストール後の doctor 手順と共有します。

補足:Gateway とトンネルだけの小さな VPS で CPU は空いているのに遅延が振れるときは、vCPU 増設の前に プロセスあたりのファイル記述子長寿命 WebSocket の本数プロバイダーまでの TLS RTT を確認します。

「どの VPS でも動く」と「安定した実行層」のギャップ

汎用の 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 のどちらですか?

トンネルやローカルプロキシの背後ならループバックを優先し、広げる場合はファイアウォール・トークン・監視を揃えます。検証手順は インストール後の切り分け にあります。

インストール手順とプラットフォーム差分はどこですか?

導入とプラットフォーム選択。料金は レンタル料金 を参照してください。