概要
OpenClaw Gateway はバックグラウンドサービスとして継続的に実行する必要があります。ターミナルで直接起動すると、ターミナルを閉じた時点でプロセスが停止してしまいます。本記事では、さまざまなバックグラウンドプロセス管理ソリューションをご紹介します。
OpenClaw 組み込みコマンドの使用
OpenClaw にはシンプルなバックグラウンド起動コマンドが用意されています。
# バックグラウンドで起動
openclaw start --daemon
# 実行状態の確認
openclaw status
# サービスの停止
openclaw stop
# サービスの再起動
openclaw restart
PM2 による管理
PM2 は Node.js エコシステムで最も人気のあるプロセスマネージャーで、機能が豊富かつ使いやすいのが特徴です。
PM2 のインストール
npm install -g pm2
OpenClaw の起動
pm2 start openclaw -- start
設定ファイルを使用した起動(推奨):
// ecosystem.config.js
module.exports = {
apps: [{
name: 'openclaw',
script: 'openclaw',
args: 'start',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '500M',
env: {
NODE_ENV: 'production'
},
error_file: '~/.openclaw/logs/pm2-error.log',
out_file: '~/.openclaw/logs/pm2-out.log',
log_date_format: 'YYYY-MM-DD HH:mm:ss'
}]
};
pm2 start ecosystem.config.js
PM2 のよく使うコマンド
# プロセス一覧の表示
pm2 list
# ログの確認
pm2 logs openclaw
# リソース使用状況の監視
pm2 monit
# 再起動
pm2 restart openclaw
# リロード(ゼロダウンタイム)
pm2 reload openclaw
# 停止
pm2 stop openclaw
# プロセスの削除
pm2 delete openclaw
OS 起動時の自動起動設定
pm2 startup
pm2 save
PM2 がシステムに応じた自動起動スクリプトを自動生成します。
systemd による管理
Linux システムに適しており、よりシステムレベルに近い管理方式です。
Service ファイルの作成
sudo nano /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw AI Assistant Gateway
After=network.target
Wants=network-online.target
[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw
ExecStart=/usr/local/bin/openclaw start
ExecStop=/usr/local/bin/openclaw stop
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=openclaw
# セキュリティ設定
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/openclaw/.openclaw
# リソース制限
MemoryMax=512M
CPUQuota=80%
[Install]
WantedBy=multi-user.target
systemd のよく使うコマンド
# service ファイルのリロード
sudo systemctl daemon-reload
# 起動
sudo systemctl start openclaw
# 停止
sudo systemctl stop openclaw
# 再起動
sudo systemctl restart openclaw
# 状態の確認
sudo systemctl status openclaw
# OS 起動時の自動起動設定
sudo systemctl enable openclaw
# ログの確認
journalctl -u openclaw -f
journalctl -u openclaw --since "1 hour ago"
Docker による管理
Docker には再起動ポリシーが組み込まれているため、追加のプロセスマネージャーは不要です。
docker run -d \
--name openclaw \
--restart unless-stopped \
-v ~/.openclaw:/root/.openclaw \
openclaw/openclaw:latest start
Docker Compose:
services:
openclaw:
image: openclaw/openclaw:latest
restart: unless-stopped
volumes:
- openclaw-data:/root/.openclaw
command: start
macOS での launchd 使用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.openclaw.gateway</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/openclaw</string>
<string>start</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/Users/you/.openclaw/logs/launchd-out.log</string>
<key>StandardErrorPath</key>
<string>/Users/you/.openclaw/logs/launchd-err.log</string>
</dict>
</plist>
cp com.openclaw.gateway.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.openclaw.gateway.plist
プロセス監視
どのプロセス管理方式を使用する場合でも、監視の設定を推奨します。
{
"gateway": {
"monitoring": {
"enabled": true,
"metrics": {
"endpoint": "/metrics",
"format": "prometheus"
}
}
}
}
ログローテーション
ログファイルの肥大化を防ぎます。
# /etc/logrotate.d/openclaw
/home/openclaw/.openclaw/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
copytruncate
}
まとめ
適切なプロセス管理方式の選択は環境によって異なります。Docker デプロイでは Docker 内蔵の再起動ポリシーを優先的に使用し、ベアメタル Linux では systemd を、Node.js 環境では PM2 を、macOS では launchd を使用してください。核心的な目標は、OpenClaw がクラッシュした際の自動復旧とOS起動時の自動起動を確保することです。