はじめに
ターミナルで直接 openclaw up を実行する方法には致命的な問題があります。ターミナルを閉じたり SSH 接続が切れたりすると、サービスが停止してしまいます。本記事では、PM2 と Systemd という2つの本番レベルのプロセス管理ソリューションを紹介し、OpenClaw をサーバー上で安定稼働させる方法をご説明します。
一、PM2 ソリューション(推奨)
PM2 は Node.js エコシステムで最も人気のあるプロセスマネージャーで、OpenClaw と自然に互換性があります。
1.1 PM2 のインストール
# PM2 をグローバルインストール
npm install -g pm2
# インストールの確認
pm2 --version
1.2 OpenClaw のクイックスタート
# PM2 で OpenClaw を起動
pm2 start openclaw -- up
# 実行状態の確認
pm2 status
出力例:
┌─────┬──────────┬─────────────┬─────────┬─────────┬──────────┐
│ id │ name │ namespace │ mode │ status │ cpu │
├─────┼──────────┼─────────────┼─────────┼─────────┼──────────┤
│ 0 │ openclaw │ default │ fork │ online │ 0.3% │
└─────┴──────────┴─────────────┴─────────┴─────────┴──────────┘
1.3 Ecosystem 設定ファイルの使用
本番環境では、PM2 の ecosystem 設定ファイルを使用した詳細な管理をお勧めします:
# 設定ファイルの作成
nano ~/openclaw-ecosystem.config.js
// ~/openclaw-ecosystem.config.js
module.exports = {
apps: [
{
name: "openclaw",
script: "openclaw",
args: "up",
cwd: process.env.HOME,
// 再起動ポリシー
autorestart: true,
max_restarts: 10,
min_uptime: "30s",
restart_delay: 5000,
// リソース制限
max_memory_restart: "512M",
// 環境変数
env: {
NODE_ENV: "production",
NODE_OPTIONS: "--max-old-space-size=512"
},
// ログ設定
log_file: "/var/log/openclaw/combined.log",
out_file: "/var/log/openclaw/out.log",
error_file: "/var/log/openclaw/error.log",
log_date_format: "YYYY-MM-DD HH:mm:ss Z",
merge_logs: true,
// ファイル変更の監視による自動再起動(開発環境用)
watch: false,
// グレースフルシャットダウン
kill_timeout: 10000,
listen_timeout: 15000
}
]
};
# ログディレクトリの作成
sudo mkdir -p /var/log/openclaw
sudo chown $USER:$USER /var/log/openclaw
# ecosystem ファイルで起動
pm2 start ~/openclaw-ecosystem.config.js
# ステータスの確認
pm2 status
1.4 OS 起動時の自動起動設定
PM2 の最も強力な機能の一つです。1つのコマンドで自動起動を実現できます:
# 自動起動スクリプトの生成(システムに応じて systemd/upstart/launchd を自動選択)
pm2 startup
# sudo で実行する必要があるコマンドが出力されます。それをコピーして実行してください
# 例:
# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u your_user --hp /home/your_user
# 現在のプロセスリストを保存
pm2 save
重要:PM2 が管理するプロセスを変更(追加、削除、再起動)するたびに、
pm2 saveを実行して保存済みプロセスリストを更新する必要があります。
1.5 よく使う PM2 管理コマンド
| コマンド | 機能 |
|---|---|
pm2 status |
全プロセスの状態を表示 |
pm2 logs openclaw |
リアルタイムログの表示 |
pm2 logs openclaw --lines 100 |
直近100行のログを表示 |
pm2 restart openclaw |
サービスの再起動 |
pm2 stop openclaw |
サービスの停止 |
pm2 delete openclaw |
プロセスの削除 |
pm2 reload openclaw |
ゼロダウンタイムリロード |
pm2 monit |
リアルタイム監視パネルを起動 |
pm2 describe openclaw |
プロセスの詳細情報を表示 |
pm2 env 0 |
プロセスの環境変数を表示 |
1.6 PM2 リアルタイム監視パネル
# インタラクティブ監視パネルの起動
pm2 monit
このパネルは以下の情報をリアルタイムで表示します:
- CPU とメモリの使用率
- リアルタイムのログスクロール
- プロセスメタデータ(PID、稼働時間、再起動回数)
- カスタムメトリクス
1.7 PM2 ログ管理
長期間の稼働後、ログファイルは非常に大きくなります。pm2-logrotate モジュールで自動ローテーションを行います:
# ログローテーションモジュールのインストール
pm2 install pm2-logrotate
# ローテーションパラメータの設定
pm2 set pm2-logrotate:max_size 50M # 1ファイル最大 50MB
pm2 set pm2-logrotate:retain 7 # 直近7ファイルを保持
pm2 set pm2-logrotate:compress true # 古いログを圧縮
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
pm2 set pm2-logrotate:rotateInterval '0 0 * * *' # 毎日ローテーション
# 現在のログを手動でクリア
pm2 flush openclaw
1.8 PM2 での OpenClaw アップグレード
OpenClaw のバージョンをアップグレードする場合:
# 1. OpenClaw のアップグレード
npm install -g openclaw@latest
# 2. PM2 のプロセスを再起動
pm2 restart openclaw
# 3. バージョンとステータスの確認
pm2 describe openclaw
curl -s http://localhost:18789/health | jq .version
二、Systemd ソリューション
Linux ネイティブのプロセス管理方式を好む場合、Systemd が最適な選択肢です。
2.1 Systemd サービスファイルの作成
# openclaw のインストールパスを確認
which openclaw
# 通常は /usr/bin/openclaw または /usr/local/bin/openclaw
# サービスファイルの作成
sudo nano /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw AI Assistant Platform
Documentation=https://openclaw.com
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw
# 起動コマンド
ExecStart=/usr/local/bin/openclaw up
ExecStop=/bin/kill -SIGTERM $MAINPID
ExecReload=/bin/kill -SIGUSR2 $MAINPID
# 環境変数
Environment=NODE_ENV=production
Environment=NODE_OPTIONS=--max-old-space-size=512
# 再起動ポリシー
Restart=always
RestartSec=10
StartLimitBurst=5
StartLimitIntervalSec=60
# リソース制限
MemoryMax=1G
CPUQuota=80%
# セキュリティ強化
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/openclaw/.config/openclaw
ReadWritePaths=/home/openclaw/.openclaw
PrivateTmp=true
# ログ
StandardOutput=journal
StandardError=journal
SyslogIdentifier=openclaw
[Install]
WantedBy=multi-user.target
2.2 専用ユーザーの作成(推奨)
# システムユーザーの作成
sudo useradd -r -m -s /bin/bash openclaw
# そのユーザーに切り替えて初期設定を完了
sudo -u openclaw bash -c "openclaw onboard"
2.3 サービスの有効化と管理
# systemd 設定のリロード
sudo systemctl daemon-reload
# 自動起動の有効化
sudo systemctl enable openclaw
# サービスの起動
sudo systemctl start openclaw
# ステータスの確認
sudo systemctl status openclaw
2.4 よく使う Systemd 管理コマンド
| コマンド | 機能 |
|---|---|
systemctl start openclaw |
サービスの起動 |
systemctl stop openclaw |
サービスの停止 |
systemctl restart openclaw |
サービスの再起動 |
systemctl status openclaw |
ステータスの確認 |
systemctl enable openclaw |
自動起動の有効化 |
systemctl disable openclaw |
自動起動の無効化 |
journalctl -u openclaw -f |
リアルタイムログの表示 |
journalctl -u openclaw --since "1 hour ago" |
直近1時間のログを表示 |
journalctl -u openclaw -p err |
エラーログのみ表示 |
2.5 Systemd ログ管理
Systemd は journald を使用してログを管理します。以下の方法でログサイズを制御できます:
# journald 設定の編集
sudo nano /etc/systemd/journald.conf
# 最大ログ容量の設定
# SystemMaxUse=500M
# SystemMaxFileSize=50M
# journald の再起動
sudo systemctl restart systemd-journald
# 古いログの手動クリーンアップ(直近3日間を保持)
sudo journalctl --vacuum-time=3d
# 古いログの手動クリーンアップ(合計サイズを 200MB に制限)
sudo journalctl --vacuum-size=200M
三、PM2 vs Systemd の比較
| 特性 | PM2 | Systemd |
|---|---|---|
| インストール難易度 | 簡単(npm install) | インストール不要(システム標準) |
| 設定の難易度 | 中程度 | 中程度 |
| Node.js 連携 | ネイティブサポート | 手動設定が必要 |
| 監視パネル | 内蔵(pm2 monit) | サードパーティツールが必要 |
| ログ管理 | プラグインが必要 | journald がネイティブサポート |
| セキュリティ強化 | 限定的 | 豊富なサンドボックスオプション |
| リソース制限 | メモリ制限 | CPU/メモリ/IO の包括的な制限 |
| クラスターモード | サポート | 直接サポートなし |
| クロスプラットフォーム | Windows/Mac/Linux | Linux のみ |
| 適用シーン | 開発/小規模本番 | 本番環境 |
四、クラッシュ自動復旧テスト
どちらのソリューションを使用する場合でも、クラッシュ復旧能力のテストをお勧めします:
# OpenClaw の PID を取得
pgrep -f "openclaw up"
# プロセスクラッシュのシミュレーション
kill -9 $(pgrep -f "openclaw up")
# 数秒待ってから自動再起動を確認
sleep 15
# PM2 ソリューションの場合
pm2 status
# Systemd ソリューションの場合
systemctl status openclaw
五、ベストプラクティス
- 個人プロジェクトまたは開発環境:PM2 を使用。設定が簡単で機能が豊富です
- 本番サーバー:Systemd を使用。セキュリティ強化オプションが充実しています
- 両方の組み合わせ:Systemd で PM2 自体を管理し、双方の利点を活かします
- ログローテーションの設定を忘れずに:ディスクがログファイルで埋まるのを防ぎます
- 適切な再起動制限の設定:無限ループ再起動によるリソース消費を防ぎます
- 監視と併用:本サイトの「OpenClawサービス監視とアラート設定チュートリアル」を参考に監視を構築してください
プロセス管理を設定すれば、OpenClaw サービスはエンタープライズレベルの稼働安定性を備え、予期せぬ中断を心配する必要がなくなります。