クラウド Mac 上で OpenClaw Gateway を 24 時間 365 日動かすと、初回インストールよりも「再起動後に戻ってこない」「ログがディスクを食いつぶした」「プロセスは生きているのにチャネルもモデルも沈黙」で失敗しがちです。 本稿はチュートリアルを卒業し OpenClaw を本番インフラとして扱うチーム向けです。無人運用で陥りやすい誤解が 6 つ、ホストプロセス/コンテナ/リバースプロキシの切り分け表、コピペ可能な launchd と systemd の断片、ログとディスクのスナップショット、自己修復の 6 ステップ Runbook、オンコール向け指標が 3 つ。読了後、plist/Unit を直すべきかボリュームか、それともモデル/チャネル層に順番固定で戻るか判断できます。
次に「プロセスが見えること」と「メッセージの往復」を分離し、macOS と Linux のスーパーバイザに落とし込みます。
第 1 層(ホストプロセス)では、Gateway バイナリ/Node プロセスが正しいユーザー下で生き残り、意図したインタフェースにバインドし、現行のトークンとデータディレクトリを見えているかを問います。
第 2 層(コンテナ)では compose ネットワーク、公開ポート、ボリュームに絞ります。ホストの curl とコンテナ内の curl が食い違うときは、まず Docker ネットワーク切り分けチェックリストへ戻ります。
第 3 層(プロキシ)では TLS、WebSocket Upgrade、パス剥がし、タイムアウトを扱います。エッジの 502/握手問題は Nginx/Caddy チェックリストに従います。
リモート Mac では第 3 層が SSH トンネルやプライベート DNS の背後にあることが多く、「localhost の curl が通る」は「公開コールバックが通る」と同義ではありません。Slack/Telegram 型のチャネルでは、チャネル切り分けチェックリストで OAuth スコープも検証してください。
Gateway が CI ビルドや cron と同居するときは、ディスク I/O と CPU の奪い合いに注意します。ビルドのスパイクがログの fsync や TLS 握手を遅らせ、断続的タイムアウトとして表面化します。ビルドキャッシュと Gateway データパスを分けて監視し、双方の書き込み率でアラートを張れば、インフラの揺らぎをモデル品質の劣化と誤認しにくくなります。
| 症状 | まず疑う層 | 次のアクション(実行可能) |
|---|---|---|
| スーパーバイザは「稼働」だがリスナがない | プロセス/plist・unit | 同一ユーザーでフォアグラウンド実行し、WorkingDirectory と ProgramArguments を確認する |
| ホストは OK、コンテナ内の上流 curl が失敗 | コンテナネットワーク | compose ネットワーク、公開ポート、誤った host ネットワークを確認する |
| ドメインは 502、ループバックは OK | リバースプロキシ | proxy_pass、Upgrade ヘッダ、read_timeout を揃える |
| UI は動くがチャネルが沈黙 | チャネル/コールバック URL | Webhook URL と TLS チェーンがリリースでずれていないか確認する |
| ランダム停滞、空き容量が数 GB | ディスク/ログ | 下表どおり du を取り、ログレベルを下げる |
| 高負荷、モデル 429 | モデル出口/キュー | スロットル、経路変更、バックオフ延長。生存ポッドを liveness で殺さない |
launchd では UserName、WorkingDirectory、標準出力/標準エラー出力のパス、KeepAlive と組み合わせた ThrottleInterval を明示し、クラッシュ嵐でホストを占有させないようにします。
systemd では Restart=on-failure と RestartSec を対にし、EnvironmentFile と LimitNOFILE を文書化します。いずれも SSH セッション終了後もサービスを維持できることが、無人運用と対話デバッグの決定的な違いです。
Docker で Gateway を包む場合、launchd/systemd が直接 Node を見るのではなく、多くは docker compose up -d(またはラッパー)を監督します。健全性判定は compose か、Kubernetes ヘルスチェックの記事で述べる HTTP プローブへ寄せ、フリーズしたコンテナをホストが「健康」と誤認しないようにしてください。
<!-- サンプルキーです。パス/ユーザー/コマンドは環境に合わせて調整してください --> <key>KeepAlive</key><true/> <key>ThrottleInterval</key><integer>30</integer> <key>StandardOutPath</key><string>/var/log/openclaw/gateway.out.log</string> <key>StandardErrorPath</key><string>/var/log/openclaw/gateway.err.log</string>
# /etc/systemd/system/openclaw-gateway.service(断片) [Service] Restart=on-failure RestartSec=20 EnvironmentFile=-/etc/openclaw/gateway.env LimitNOFILE=1048576
ログ、設定、データのパスはマウントを分け、バックアップとクォータを独立させます。ローテーションはプレーンテキストのホストログと Docker の json-file ドライバの両方を対象にしてください。コンテナを消しても巨大なレイヤがディスクに残ることがあります。最低限、Bearer トークン、Webhook シークレット、メールアドレス、チャネル ID の末尾をマスキングし、SIEM へ送る前は脆弱なブラックリスト正規表現より許可リスト型のフィールドを優先します。
インストール後 doctor の記事と組み合わせ、doctor の要約だけをチケットに貼り、フル環境ダンプをチャットに流さないでください。
集中ログ基盤では OpenClaw 専用の保持期間とサンプリング方針を置き、インシデント中だけサンプリングを上げ、変更窓の後に自動で元へ戻し、「一時デバッグ」が常態化しないようにします。
| パス種別 | 典型例 | 確認/アクション |
|---|---|---|
| Gateway テキストログ | /var/log/openclaw/ またはプロジェクトの logs/ | du -sh と閾値アラート。newsyslog/logrotate |
| Docker graph | グラフドライバ管理下 | docker system df。json-file サイズに上限 |
| 作業ディレクトリとキャッシュ | ~/.openclaw、ビルドキャッシュ | アップグレード前にバックアップ。古いセッションファイルを整理 |
| ルートボリュームの空き | / | df -h。空きが約 15%を下回ったら人へページ |
# サイズの素早いスナップショット(パスは環境に合わせて調整) du -sh /var/log/openclaw 2>/dev/null docker system df 2>/dev/null df -h /
注意:データを削除する前に、ボリュームとシークレットが未使用であることを確認します。本番では盲目的な rm -rf より、拡張とローテーションを優先してください。
du を 24 時間前と比較し、ログバーストを検知します。compose restart、必要ならホスト再起動。終了コードを取得します。本稿は長期監督、ログ/ディスク衛生、リモート Mac 上のハング切り分け順を扱います。doctor の記事はインストール後検証、Docker ネットワークチェックリストはコンテナ経路、リバースプロキシの記事は TLS/WebSocket、ヘルスプローブの記事はオーケストレータの意味論です。Runbook の重複を避けるため、インストール → ネットワーク → エッジ → 定常運用の順で文書化してください。
スリープスケジュール、パッチ周期、ローミング回線は SLA を文書化しにくく、ディスクと帯域を日常作業と共有するとハングやログ嵐の切り分けが難しくなります。契約に基づく専用リモート Macなら、電源方針、ディスク階層、出口を個人の習慣から切り離せます。
CI テスターと同じリージョン、低いスリープ確率、予測可能なディスクと帯域が OpenClaw と自動化に必要なら、MACCOME のクラウド Mac は落ち着いた実行面になります。まず Mac mini レンタル料金を確認し、シンガポール、東京、ソウル、香港、米国東海岸、米国西海岸の地域ページから注文へ進めます。接続手順は ヘルプセンターを参照してください。
よくある質問
再起動後はデーモンと設定のどちらを先に確認しますか?
まずフォアグラウンドで設定が読めることを確認し、その後 plist/unit の環境とパスに戻ります。インストール手順の詳細は doctor 切り分けの記事を参照してください。
ログでディスクは満杯になり得ますか?
はい。無人環境ではよく起こります。ローテーション、アラート、パイプラインでのマスキングを追加してください。ディスク階層の比較は Mac mini レンタル料金で確認できます。
UI は開くのに返信がありません。どの層から切り分けますか?
モデル、チャネル、キューの順で切り分け、再起動だけに頼らないでください。チャネル切り分けチェックリストと併読してください。
リモート Mac のスリープは OpenClaw に影響しますか?
電源設定を調整し、スーパーバイザでの再起動に頼ります。ベンダーのメンテナンス窓も確認してください。接続系のキーワードは ヘルプセンターで検索してください。