「OpenClaw vs memU bot完全比較ガイド」子ページ②
OpenClaw VPS移行 実践ガイド|さくらクラウドへの移行対応
株式会社NADJA|2026年3月|推奨:2コア/4GB RAM以上(さくらクラウド等)
【免責事項・本手順を実施される方へ】
本記事で紹介しているOpenClawの移行手順は、細心の注意を払って検証しておりますが、すべての環境における動作を完全に保証するものではありません。手順内に含まれる rsync --delete コマンドを用いた差分同期や、履歴DB(gateway.db)の直接操作は、手順を誤ると重要なデータが完全に消失するリスクを伴います。
移行作業を実施する際は、必ず事前にローカル環境や別メディアへの完全なバックアップを取得したうえで、ご自身の責任において行ってください。本手順の実施によって生じたデータの損失、システム障害、それに伴ういかなる損害についても、株式会社NADJAは一切の責任を負いかねますので、あらかじめご了承ください。
🔒 移行時のセキュリティ・データ保護に関する重要事項
機密情報の取り扱い:移行対象となる履歴DB(gateway.db)やワークスペース(workspace/)には、AIに入力された個人情報や社外秘の機密データが含まれている可能性があります。新しい移行先サーバー(さくらクラウド等)が、貴社のセキュリティポリシーやコンプライアンス要件を満たしているか事前にご確認ください。
安全なSSH接続の推奨:本記事のコマンド例では便宜上シンプルなSSH接続を記載していますが、実際のサーバー間転送ではパスワード認証を無効化し、公開鍵認証を使用することを強く推奨します。
移行後のアクセス制御テスト:DockerのUFWバイパス問題を確実に防ぐため、移行完了後は必ずさくらクラウドのパケットフィルタと 127.0.0.1 バインドの多層防御が機能しているか、外部から意図しないアクセスができないことをご自身でテストしてください。
1. 移行の鉄則3か条
| ①全体コピー 部分コピー厳禁 | ②旧を先に停止 Telegram 409回避 | ③doctor –fix 移行後に必ず実行 |
① ~/.openclaw/ を丸ごとコピー。openclaw.jsonだけの部分コピーは認証情報・セッション消失の原因。
② 同じBot Tokenで2台同時ポーリングすると409 Conflict。旧停止→30秒待機→新起動の順序を厳守。
③ 19ステップの検証パイプラインがレガシーキー移行・パーミッション修正・チャネル確認を自動処理。
🚨 重要
1コア/1GB RAMではOOM Killerで即強制終了(さくらクラウド 1コア/1GB構成で実証済み)。最低2コア/4GB RAM必須。
2. バックアップ対象
| ~/.openclaw/(丸ごとコピー) | |||
| openclaw.json 設定 | credentials/ 認証 | gateway.db 履歴DB | workspace/ 記憶・指示 |
| ファイル | 欠落時の影響 |
|---|---|
openclaw.json | 全機能停止 |
credentials/ | チャネル全切断 |
gateway.db | 会話履歴・記憶すべて消失 |
workspace/MEMORY.md | ユーザーの好み・文脈が消える |
workspace/AGENTS.md | カスタム行動指示が消える |
.env | 認証失敗・起動不可 |
docker-compose.yml | コンテナ起動不可 |
3. 移行手順(5ステップ)
| ①事前同期 稼働中に転送 | → | ②旧停止 compose down | → | ③最終同期 差分のみ | → | ④修正+起動 chown + up | → | ⑤検証 doctor+TG |
── 稼働中 ──
── ダウンタイム(1〜5分)──
── 復旧 ──
① 事前同期(旧サーバー稼働中→さくらクラウドへ転送)
※SSH接続は公開鍵認証を推奨
# 公開鍵認証でのrsync(推奨)
rsync -avzP --exclude='gateway.db*' \
-e 'ssh -i ~/.ssh/id_ed25519' user@old-vps:~/.openclaw/ ~/.openclaw/② 旧サーバー停止(ダウンタイム開始)
cd ~/openclaw && docker compose down③ 最終差分同期(さくらクラウドへ残りのデータを転送)
rsync -avzP --delete \
-e 'ssh -i ~/.ssh/id_ed25519' user@old-vps:~/.openclaw/ ~/.openclaw/④ さくらクラウド側でパーミッション修正+ポート制限+起動
sudo chown -R 1000:1000 ~/.openclaw
# docker-compose.yml のポートを localhost限定に変更
# ports: - "127.0.0.1:18789:18789"
cd ~/openclaw && docker compose up -d⑤ 検証(ダウンタイム終了)
curl -f http://127.0.0.1:18789/healthz
docker compose run --rm openclaw-cli doctor --fix
# → Telegramからメッセージ送信テスト4. 実体験から学んだ3つの落とし穴
| 落とし穴 | 症状 | 対処 |
|---|---|---|
| OOM Kill | さくらクラウド 1コア/1GBでプロセス強制終了。docker composeも無応答 | 2コア/4GB以上にスペックアップ |
| Docker→UFWバイパス | UFWでdenyしても外部からアクセス可能 | docker-compose.ymlで127.0.0.1にバインド+さくらクラウドのパケットフィルタで防御 |
| Telegram 409 | 旧新の両方でBotが無反応 | 旧を先に停止→30秒待機→新を起動 |
▼ セキュリティ3層防御(さくらクラウド構成例)
| 第1層:さくらクラウド パケットフィルタ クラウド基盤レベルFW。Docker影響なし・最も信頼性が高い |
| ▼ |
| 第2層:UFW(補助のみ) Dockerがバイパスするため単独不可 |
| ▼ |
| 第3層:Docker 127.0.0.1バインド バイパス問題を根本解決 |
| ▼ |
| 🔒 OpenClaw Gateway 保護済み |
5. トラブルシューティング
| 症状 | 対処 |
|---|---|
| Permission denied | sudo chown -R 1000:1000 ~/.openclaw/ |
| 409 Conflict | 旧VPSで docker compose down を再実行 |
| Out of memory | さくらクラウドのサーバープランを2コア/4GB以上に変更 |
| gateway.db破損 | sqlite3 .backup で安全にバックアップ |
| レガシーキーエラー | openclaw doctor --fix |
| ポート競合 | ss -tlnp | grep 18789 |
| apt updateが失敗 | さくらクラウドのパケットフィルタでエフェメラルポート(1024-65535)をallow |
| rsyncタイムアウト | さくらクラウドのパケットフィルタ+UFWでTCP 22をallow。公開鍵認証を推奨 |
※ SSH接続はパスワード認証を無効化し、公開鍵認証(ed25519推奨)を使用してください。
6. 移行完了チェックリスト
☐ さくらクラウドの移行先サーバーが自社セキュリティポリシーを満たしている
☐ SSH接続に公開鍵認証を使用(パスワード認証を無効化)
☐ さくらクラウドのサーバープランが2コア/4GB RAM以上
☐ Docker CE + Compose v2 導入済み
☐ さくらクラウドのパケットフィルタでポート22/80/443のみ許可
☐ 旧VPSのOpenClaw完全停止
☐ ~/.openclaw/ 丸ごとコピー済み(事前バックアップ取得済み)
☐ パーミッション修正済み(chown 1000:1000)
☐ ポートが 127.0.0.1:18789:18789
☐ 外部からポート18789にアクセスできないことをテスト済み
☐ healthz が HTTP 200 を返す
☐ doctor –fix が FAILなし
☐ Telegramで返答が来る