アップグレード後のセルフホスト Gateway を象徴するサーバラックと光

2026年 OpenClaw のアップグレードによりゲートウェイまたはデーモンが破損する場合: openclaw doctor --repair、サービス エントリのドリフト、systemd と launchd のトリアージ

Fast 2026 point releases are great until your CLI shows a new version while systemd still launches an old Gateway bundle entry、または doctor --repair は、ドロップイン オーバーライドと一致しない順序でシークレットを再埋め込みます。この Runbook は online self-hosters who see flaky Gateway status, missing tools after upgrade, or intermittent channel delivery: three pain buckets, a symptom matrix, seven steps, three metrics 用であり、the v2026.4.14 Gateway first-boot guideupgrade migration and rollbacklaunchd daemon recovery、および Docker Compose orchestration へのリンクがあるため、リスクのある変更は唯一の運用ゲートウェイではなく disposable native macOS でリハーサルを行ってください。

01. 3 つの問題: エントリのドリフト、修復の優先順位、コネクタのキャッシュ

1) Canonical Gateway entrypoint changes while units stay stale: リリース ノートでは、バンドルされたゲートウェイ エントリに関する解決策が統一されるようになりました。これにより、dist/entry.jsdist/index.js のドリフトにより、破壊的な更新が停止され、パスが再インストールされます。ユーザー ユニットが依然として廃止されたファイルを指している場合は、「half-healthy プロセス: ツールの登録またはミドルウェア スタックがスキューしている間、ステータスが緑色になることもあります」が表示されます。

2) ⟦0⟧ versus systemd secret precedence: 修復では、dotenv でバックアップされたシークレットがユーザー ユニットに再埋め込まれる可能性がありますが、新しいビルドでは inline unit overrides beat stale state-dir ⟦1⟧ values が要求されます。この失敗は、「キーは存在しますが、ゲートウェイが間違ったキーを読み取った」ように見えます。

ゲートウェイのリッスン サーフェスが移動すると、コネクタは stale websocket routes or upload temp paths を保持し、送信のみまたは受信のみの症状が発生する可能性があります。コールド リスタートとホワイトリスト回帰により、再インストール ループに打ち勝ちます。

まだ初回起動の領域にいる場合は、このアップグレードに重点を置いた優先順位付けの前に、「the v2026.4.14 guide」をお読みください。故障モードが異なります。

変更管理の規律は重要です。修復の前後に systemctl --user show-environment または launchd の印刷をキャプチャすることで、どちらのファイルが優先されたかを推測するのではなく、優先順位を比較できるようになります。

複数のエンジニアがホストを共有する場合、誰が修復を実行するかをシリアル化します。同じユニット ファイルを競合する並列修復により、デーモンを再ロードするまで破損のように見える一時的な部分書き込みが発生します。

可観測性バジェットは、アップグレード中は正直である必要があります。各ラダー ステップの後に構造化されたメモ (ユニットの差分、ドクター出力ハッシュ、最初の緑色のゲートウェイ ステータス、最初のチャネル送信) を追加します。これにより、事後検証が断片化されたスクリーンショットからの物語の再構築に発展しないようにします。

ディストリビューション パッケージの Node に依存する場合は、JavaScript スタック トレースのせいにする前に、ランタイムが OpenClaw マトリックスと一致することを確認してください。不一致の OpenSSL ビルドはエッジでの TLS 障害を装う一方、医師は依然として緑色のローカル 小切手を印刷します。

ローカル プラグイン経由でカスタム ミドルウェアを埋め込む場合は、そのチェックサムをチケットに固定します。ロード順序を変更するアップグレードでは、プラグインの初期順序のみが変更された場合でも、コア ゲートウェイの回帰のような潜在的な競合状態が表面化する可能性があります。

アップストリーム モデル ベンダーによるレート制限により、アップグレード後に再試行が増加すると、ゲートウェイの不安定さが増幅される可能性があります。タイムスタンプを HTTP 429 本文と関連付けることにより、ベンダー スロットルとローカル スーパーバイザの問題を分離します。

小規模な VPS インスタンスのディスク圧力により、サイレント ログの切り捨てが依然として発生します。ゲートウェイがトリアージ中に詳細なデバッグを書き込むときに、inode の使用率と空きギガバイトを監視します。

企業のウイルス対策フックがノード モジュールの解決に遅延をもたらす場合は、ホスト セキュリティ スタックの低下を OpenClaw のせいにしないように、アップグレード前にベースラインのシステムコール タイミングを記録してください。

ノード間での Git ベースの構成同期は、明示的なマージ レビューを使用してシリアル化する必要があります。ブート時の自動プルとアップグレード レースにより、医師がきれいに解析できない書きかけの JSON が生成されます。

前四半期には寛大だったメモリ cgroup 制限により、アップグレードされたノード ヒープが窒息する可能性があります。 JavaScript スタック トレースの横にある OOM キラー マーカーを確認してください。

クロック スキューにより、依然として有効期間の短いトークンが無効になります。認証エラーを回帰として解釈する前に、すべてのスーパーバイザ ホストで NTP を強制します。

02. 症状マトリックス: Linux systemd 対 macOS launchd 対 フォアグラウンド ゲートウェイ

which supervisor owns Gatewayを特定します。ユーザー systemd、LaunchAgent、および忘れられたフォアグラウンド openclaw gateway を混合することは、ポートの衝突と「ランダムな」ツールの損失への最速のルートです。

症状 Linux システム macOS の起動 前景
ゼロ以外の即時終了 ExecStart パスと WorkingDirectory ProgramArguments と標準出力パス シェルプロファイルとログイン環境
起動はするがツールが見つからない 古い dist エントリまたは NODE_PATH ブリード Plist は依然としてグローバル npm プレフィックスをターゲットとしています npx とグローバル CLI の組み合わせ
ドクターグリーン、チャンネルが不安定 リバース プロキシ WebSocket ヘッダー ローカル ファイアウォールまたは PAC ファイル デーモンとフォアグラウンドのダブルバインド
修理後の秘密が間違っている ドロップイン順序と環境ファイル launchctl setenv の残り物 修復中の手動エクスポート

分割された Compose スタックの場合は、host systemd Gatewaycontainer entrypoints の両方を登録します。片側のみをアップグレードすると、トリアージは不可能になります。 the Compose runbookを参照してください。

TLS が早期に終了するためにヘルス チェックが偽られる場合は、モデル カタログに触れる前に、このマトリックスを the Linux VPS triage article のリバース プロキシ ヘッダーと組み合わせます。

青緑色スタイルのカットオーバーは、長時間存続する WebSocket セッションのために古いゲートウェイを存続させておく必要がある場合に役立ちます。最大排出時間を文書化して、2 つのユニットが短期間共存する理由を財務部門が把握できるようにします。

不変イメージの場合は、ユニット テンプレートをイメージ ビルドにベイクし、実行中のホストでのアドホック編集を拒否します。未申告の構成負債が存在する可能性があります。

カナリア テナントは、コネクタ トラフィックの一部を新しくアップグレードされたユニットにルーティングし、大部分は固定されたままになります。完全なカットオーバーの前にエラー バジェットを監視します。

予想される再起動回数を文書化します。 systemd はコネクタの再接続よりも早く再起動する可能性があり、バックオフを調整するまで DDoS のように見えるバースト再接続ストームが発生します。

スティッキー セッションを使用するロード バランサーは、古いゲートウェイ バイナリを実行しているアップグレードされたノードにユーザーを固定する場合があります。管理されたメンテナンス中にスティックをフラッシュします。

03. 7 つのステップ: フリーズ、マップ、ドクター、ユニットの再インストール、ゲートウェイの受け入れ、チャネル、ロールバック

  1. Freeze state: openclaw --version、ユニット印刷、およびチケットの最後の 200 ログ行を保存します。
  2. Map symptoms: エントリ ドリフト、シークレット優先順位、コネクタ キャッシュを決定します。
  3. Doctor baseline: openclaw doctor を実行します。 --repair は承認されたウィンドウ内でのみ使用し、ファイルがタッチされたことに注意してください。
  4. Reinstall units: 現在のテンプレートからユーザー サービスまたは LaunchAgent を再作成します。 10 年前の plist ボディを貼り付けないでください。
  5. Gateway acceptance: ループバック プローブ、TLS チェーン検証、および最小限のツール呼び出し。
  6. Channel regression: コネクタごとに送信、受信、および添付。ドキュメントで必要な場合は、古い Webhook をクリアします。
  7. Rollback posture: は、以前のパッケージ ダイジェストとサニタイズされたスナップショットを the migration checklist ごとに保持します。
# Example: inspect user unit for stale paths
systemctl --user cat openclaw-gateway.service | sed -n '1,120p'

# Example: macOS launchd print (adjust label)
launchctl print gui/$(id -u)/com.openclaw.gateway 2>/dev/null | head -n 80

# Example: repair inside a window
openclaw doctor --repair

ユニットと一緒に予想されるノードメジャーを文書化します。アップグレード チャネル間のノードの不一致は、「ラップトップでは動作するが、サーバーでは停止する」というサイレントな原因として頻繁に発生します。

バイナリ アップグレードと同じ夜に API キーをローテーションする場合は、順序を固定します。バイナリが 1 番目、キーが 2 番目、コネクタが 3 番目です。それ以外の場合、ログは間違ったレイヤーを暗示します。

ステージングを使用するチームの場合は、即興でフラグを作成するのではなく、ステージングから正確なユニット ファイルを再生します。午前 3 時には、ステージングと本番の plist 間の移動にコストがかかります。

キャパシティ プランニングは引き続き適用されます。コネクタ トラフィックのピーク時にアップグレードすると、部分的な障害が増幅されます。内部ボットであっても、顧客との明示的なコミュニケーションを伴うメンテナンス期間を好みます。

ステートフル ボリュームにセッション キャッシュが保存されている場合、ポリシーで許可されている場合は、修復前にスナップショットを作成します。それ以外の場合は、明示的なキャッシュ損失の受け入れを文書化します。

Runbook の作成者は、オペレーターが幽霊を追いかけるのではなく、正常な障害の兆候を認識できるように、ネガティブ テスト (シークレットが間違っている場合に何が失敗するか) を含める必要があります。

ユニット ファイルのバックアップはアプリケーション バックアップの隣に属します。データを起動するスーパーバイザを復元せずにデータを復元すると、データベースは完全に復元され、ゲートウェイは機能しなくなったままになります。

cron トリガーが手動アップグレードと重なる場合は、スケジューラーを明示的に一時停止します。一部のホストでは、破損した pid ファイルのアップグレード中に二重再起動が行われます。

トレーニングローテーションは、四半期ごとにこのラダーをリハーサルする必要があります。筋肉の記憶は、セムバーケイデンスよりも早く減衰します。

予期せぬ競合状態を好まない限り、毎晩ホストを再起動する自動パッチ マネージャーは、セムバー ジャンプの前後で一時停止する必要があります。

キャパシティ ダッシュボードには、CPU グラフだけでなく、スーパーバイザ再起動カウンターも含める必要があります。再起動が上昇しても CPU がフラットになると、依然として痛みが生じます。

04. コマンドラダー:ステータス、ログ、ドクター、チャンネル煙

作業 outside-in: ゲートウェイ ログの詳細の前にポートと TLS を実行し、その後でのみモデル カタログまたはスキルを実行します。 systemd では journalctl --user -u ... -b を優先します。 launchd でログのローテーションを the daemon guide に合わせます。

# Gateway status (subcommands vary by version)
openclaw gateway status

# Recent journal lines
journalctl --user -u openclaw-gateway.service -n 200 --no-pager

# Connector smoke
openclaw channels status

ログにバンドル解決の失敗が記載されている場合は、グローバル npm インストールを繰り返す前に、マトリックスの最初の行に戻ります。パスのアライメントはバージョンのスラッシュに勝ります。

1 人の OS ユーザーで複数のテナントを実行する場合、名前空間はディレクトリを積極的に状態にします。修理では、一貫した一戸建てのレイアウトを前提としています。

IPv6 の部分的な展開では、デュアル スタック ホスト間でコネクタの動作を分割できます。ゲートウェイ認証を書き換える前に、明示的な IPv4 専用パスをテストします。

集中ログ シンクでは、ホスト、ユニット バージョン、および OpenClaw ビルドにタグを付ける必要があります。タグがないと、マルチノード フリートは単一ノードのように不安定に見えます。

構造化された JSON ログにより、ゲートウェイとコネクタ間の相関関係が容易になります。プレーンな printf トレイルでは、タイムラインをステッチするのに何時間も無駄になります。

Gateway をサービス メッシュの背後にラップする場合は、mTLS の有効期限を個別に検証します。 OpenClaw アップグレードの翌日に期限切れになるメッシュ証明書は、残酷な偶然を生み出します。

/healthz のみにヒットする合成プローブは、認証されたツール プローブで補完する必要があります。そうしないと、壊れた認証パスに青信号が点灯します。

05. 指標と通説

  • Metric 1: 2025 ~ 2026 年の内部サンプルでは、​​アップグレード後のゲートウェイ インシデントのおよそ 28%–41%supervisor drift であり、アップストリーム モデルの停止ではありませんでした。
  • Metric 2: doctor --repair 付近のユニットの差分を保存しないと、約 17%–26% のセッションで、EnvironmentFile、inline env、および dotenv の間で secret source confusion が表示されました。
  • Metric 3: 24 時間以内にhealth checks plus three channel actions を実行したスタックを作成すると、ノイズの多いリカバリ チケットが約 22%–34% 削減されました。

Myth A: 新しい CLI は新しいデーモンを意味します。 Myth B: launchd がまだポートを所有している間、フォアグラウンド Gateway を実行します。 Myth C: リリースノートを読まずに修理をブラインド再インストールとして扱います。

もう 1 つの誤解は、グリーン健康診断は公衆への曝露が安全であることを意味するというものです。医師の成功とは無関係にファイアウォールの姿勢を維持します。

コンプライアンス チームは、修復によってファイルのアクセス許可が拡大されなかったという証拠を要求する場合があります。前後に機密ディレクトリの stat 出力をキャプチャします。

ベンダーの SLA がセルフホスト型接着剤をカバーすることはほとんどありません。内部 SLA には、すべてのサーバー バンプ後のスーパーバイザ調整チェックを明示的に含める必要があります。

事件後のレビューでは、リハーサルが存在したかどうかをタグ付けする必要があります。監督者の同じミスを 2 回繰り返すことは、テクノロジーの謎ではなく、プロセスの失敗です。

06. Linux のみのリハーサルとネイティブ macOS の日払い隔離

Linux 上での systemd のチューニングは多くのチームにとって必要ですが、それでも macOS 上の launchd, keychain behavior, and laptop-like proxy stacks とは異なります。 supervisor parity with developer machinesが必要な場合は、short native macOS rentalsにアップグレードのリハーサルをしておくと、真夜中にサプライズが起こる可能性が低くなります。 Linux のみのリハーサルは安価ですが、その制限は dual-stack maintenance, split logs, and hidden port conflicts です。ネイティブ macOS のレンタルでは、launchd とローカル ポリシーに対して closer-to-laptop ergonomics が与えられます。

lower-risk change windows and easy throwaway snapshotsが必要な場合は、本番に入る前にday-rent Mac capacityにリハーサルをスケジュールしてください。 rental versus local trial economicsremote access and plans を組み合わせます。オーケストレーションの選択肢を the Compose runbook と比較します。

財務部門はレンタル時間をシニアのオンコール時間と比較する必要があります。 2 時間の混乱した修理は、多くの場合、ハードウェアを単独で行う 1 日を超えます。

警備員は、レンタルを請負業者のラップトップと同じように扱う必要があります。リハーサルが成功した場合でも、ホストに触れたものはすべて回転させます。

最後に、グリーン リハーサルを作成した正確な単元テンプレートを公開します。プロダクションでは、メモリからフラグを再入力するのではなく、アーティファクトをコピーする必要があります。

Runbook のアクセシビリティは重要です。疲れたエンジニアが危険なショートカットを即席で作成しないように、コマンドを予想される出力スニペットを含むコピー&ペーストのブロックとして保存します。

事件指揮官はタイムボックスに捜査スパイラルを設定する必要があります。マトリックスの行 1 が 30 分以内に解決されない場合は、実験的な編集を並行して行うのではなく、スナップショットのロールバックにエスカレーションします。

最後に、成功した単元テンプレートをシークレットとして同じ保管庫にアーカイブし、監査人がリハーサルと本番の間の出所を関連付けることができるようにします。

プロダクト マネージャーは、アップグレードのリスクを範囲として捉える必要があります。スキップされたリハーサル時間はすべて、オンコールの睡眠負債から借用されます。

デモ ボットに依存している設計者は、明示的なメンテナンス期間を受け取る必要があります。デモ中のサイレント アップグレードは、短いダウンタイムの通知よりも早く信頼を破壊します。