ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
インストール

バックグラウンドプロセス管理チュートリアル

· 10 分で読了

概要

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起動時の自動起動を確保することです。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応