ClawTank
ドキュメント活用法ブログ今すぐデプロイ
すべての記事
OpenClaw を systemd サービスとして実行:常時稼働 Linux セットアップ

OpenClaw を systemd サービスとして実行:常時稼働 Linux セットアップ

2026年2月18日|4 分で読める
目次
  • なぜ OpenClaw に systemd なのか?
  • クイックセットアップ:組み込みインストーラー
  • ユーザーサービスとシステムサービス
  • 手動システムサービスファイル
  • 手動ユーザーサービスファイル
  • ヘッドレスサーバーでの Linger の有効化
  • システムサービスの起動
  • journalctl によるログの確認
  • リソース制限
  • 再起動ポリシー
  • 監視
  • トラブルシューティング
  • PM2 および Docker との比較
  • 完全な本番サービスファイル
  • まとめ
  • 参考資料

まだ OpenClaw をインストールしていませんか?

curl -fsSL https://openclaw.ai/install.sh | bash
iwr -useb https://openclaw.ai/install.ps1 | iex
curl -fsSL https://openclaw.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

パソコンへの影響が心配?ClawTank なら60秒でクラウドデプロイ、ファイルへのリスクゼロ。

OpenClaw を systemd サービスとして実行:常時稼働 Linux セットアップ

ターミナルで OpenClaw をインタラクティブに実行するのは開発中には良いですが、本格的なデプロイメントでは、起動時に自動起動し、障害時に再起動し、構造化されたログを生成するバックグラウンドサービスとして実行したいものです。モダン Linux では、systemd がこれらすべてを行う標準的なプロセススーパーバイザーです。

なぜ OpenClaw に systemd なのか?

systemd は事実上すべてのモダン Linux ディストリビューションの init システムです[1]。これを使用すると以下が得られます:

  • 自動起動 — 手動介入なしに起動時に自動開始
  • 自動再起動 — プロセスがクラッシュした際の自動再起動
  • 構造化ログ — 組み込みローテーション付きジャーナル経由
  • リソース制御 — cgroups によるメモリ制限、CPU クォータ
  • 依存関係の順序付け — ネットワークが利用可能になった後に OpenClaw を起動
  • セキュリティサンドボックス — ファイルシステムとネットワークアクセスを制限

tmux で openclaw start & を実行したり、cron の @reboot エントリを使うのと比較して、systemd はアドホックなアプローチでは実現できない信頼性の保証を提供します。

クイックセットアップ:組み込みインストーラー

openclaw onboard --install-daemon

これは root か通常ユーザーかを検出し、適切なサービスファイルを作成し、起動時に有効にし、すぐに開始します。多くのユーザーにはこれだけで十分です。

ユーザーサービスとシステムサービス

システムサービス は /etc/systemd/system/ に置かれ、ログイン状態に関係なく起動時に開始されます。ヘッドレスサーバーや共有マシンにはこちらを選択してください。

ユーザーサービス は ~/.config/systemd/user/ に置かれ、ユーザーがログインした時に開始されます。個人のワークステーションや root アクセスがない場合にはこちらを選択してください。

手動システムサービスファイル

まず、パスを確認します:

which openclaw
# /usr/bin/openclaw or ~/.nvm/versions/node/v22.x.x/bin/openclaw

ユニットファイルを作成します:

sudo tee /etc/systemd/system/openclaw.service > /dev/null << 'EOF'
[Unit]
Description=OpenClaw AI Agent Runtime
Documentation=https://docs.openclaw.dev
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw
ExecStart=/usr/bin/openclaw start --daemon
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5
StartLimitIntervalSec=300
StartLimitBurst=5

Environment=NODE_ENV=production
Environment=HOME=/home/openclaw

StandardOutput=journal
StandardError=journal
SyslogIdentifier=openclaw

NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/openclaw/.openclaw
PrivateTmp=yes

[Install]
WantedBy=multi-user.target
EOF

主要なディレクティブの説明:

  • After=network-online.target は OpenClaw がネットワーク準備完了後に起動することを保証します(LLM API が必要なため)
  • Restart=on-failure と RestartSec=5 でクラッシュ時に5秒待って再起動
  • StartLimitBurst=5(300 秒ウィンドウ内)で無限再起動ループを防止
  • ProtectSystem=strict は ReadWritePaths を除いてファイルシステムを読み取り専用にします[2]
  • NoNewPrivileges と PrivateTmp でプロセスをさらにサンドボックス化

手動ユーザーサービスファイル

root なしでユーザーレベルのサービスを設定する場合:

mkdir -p ~/.config/systemd/user

cat > ~/.config/systemd/user/openclaw.service << 'EOF'
[Unit]
Description=OpenClaw AI Agent Runtime
After=default.target

[Service]
Type=simple
ExecStart=%h/.nvm/versions/node/v22.14.0/bin/openclaw start --daemon
Restart=on-failure
RestartSec=5
Environment=NODE_ENV=production

[Install]
WantedBy=default.target
EOF

%h 指定子はユーザーのホームディレクトリに展開されます。

あなた専用の AI アシスタントをデプロイ

ClawTank なら OpenClaw を簡単にデプロイ — サーバー・Docker・SSH 不要。14日間無料トライアル付き。

無料トライアルを始める
systemctl --user daemon-reload
systemctl --user enable openclaw.service
systemctl --user start openclaw.service

ヘッドレスサーバーでの Linger の有効化

デフォルトでは、ユーザーサービスはユーザーの最後のセッションが終了すると停止します。ヘッドレスサーバーでは linger を有効にしてください:

sudo loginctl enable-linger $USER
loginctl show-user $USER | grep Linger
# Linger=yes

これにより、ログイン状態に関係なく起動時にユーザーサービスが実行され続けます[3]。

システムサービスの起動

sudo systemctl daemon-reload
sudo systemctl enable openclaw.service
sudo systemctl start openclaw.service
sudo systemctl status openclaw.service

journalctl によるログの確認

# リアルタイムでログをフォロー
sudo journalctl -u openclaw.service -f

# 最後の起動以降のログ
sudo journalctl -u openclaw.service -b

# 過去1時間のログ
sudo journalctl -u openclaw.service --since "1 hour ago"

# エラーのみ
sudo journalctl -u openclaw.service -p err

ログの保持期間を設定:

sudo tee -a /etc/systemd/journald.conf > /dev/null << 'EOF'
SystemMaxUse=500M
MaxRetentionSec=30day
EOF
sudo systemctl restart systemd-journald

リソース制限

systemd は Linux cgroups と統合して、ハードリソース制限を強制します:

[Service]
# メモリ
MemoryMax=2G
MemoryHigh=1536M

# CPU (200% = 2コア)
CPUQuota=200%
Nice=10

# I/O
IOSchedulingClass=best-effort
IOWeight=50

これらを [Service] セクションに追加し、以下を実行:

sudo systemctl daemon-reload
sudo systemctl restart openclaw.service
systemctl show openclaw.service | grep -E "Memory|CPU"

ファイルを編集せずに一時的にオーバーライドする場合:

sudo systemctl set-property openclaw.service MemoryMax=1G

再起動ポリシー

Restart=on-failure    # ゼロ以外の終了コードでのみ再起動
RestartSec=5          # 試行間に5秒待機
StartLimitIntervalSec=300
StartLimitBurst=5     # 5分あたり最大5回の失敗

OpenClaw が時々予期せずコード 0 で終了する場合は、Restart=always に切り替え、RestartPreventExitStatus=SIGTERM を設定して systemctl stop が正常に動作するようにしてください。

監視

systemctl is-active openclaw.service    # active/inactive
systemctl is-enabled openclaw.service   # enabled/disabled
systemctl is-failed openclaw.service    # active/failed

監視スクリプトで使用:

#!/bin/bash
if ! systemctl is-active --quiet openclaw.service; then
    echo "OpenClaw is down!" | mail -s "Alert" admin@example.com
fi

トラブルシューティング

Permission denied: sudo chown -R openclaw:openclaw /home/openclaw/.openclaw

バイナリが見つからない: ExecStart パスが which openclaw と一致することを確認してください。

ポートが使用中: sudo ss -tlnp | grep 19090

API キーが見つからない: インライン変数の代わりに環境ファイルを使用:

sudo mkdir -p /etc/openclaw
sudo tee /etc/openclaw/env > /dev/null << 'EOF'
ANTHROPIC_API_KEY=sk-ant-your-key-here
EOF
sudo chmod 600 /etc/openclaw/env

サービスで EnvironmentFile=/etc/openclaw/env として参照します。

失敗したサービスのリセット:

sudo systemctl reset-failed openclaw.service
sudo systemctl start openclaw.service

PM2 および Docker との比較

機能 systemd PM2 Docker
起動時の自動開始 ネイティブ pm2 startup が必要 --restart フラグ
ログ管理 journald(組み込み) カスタムログファイル docker logs
リソース制限 cgroups(カーネルレベル) アドバイザリーのみ cgroups
セキュリティサンドボックス 広範 なし フル FS 分離
オーバーヘッド 無視可能 無視可能 約50MB + イメージ
Node.js 依存 なし あり なし

専用マシン上の単一インスタンスには systemd が最もシンプルです。複数の分離されたインスタンスには、Docker(またはマネージドホスティングの ClawTank)が適しています[4]。

完全な本番サービスファイル

[Unit]
Description=OpenClaw AI Agent Runtime
Documentation=https://docs.openclaw.dev
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw
ExecStart=/usr/bin/openclaw start --daemon
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5
StartLimitIntervalSec=300
StartLimitBurst=5
TimeoutStopSec=30
Environment=NODE_ENV=production
EnvironmentFile=-/etc/openclaw/env
MemoryMax=2G
MemoryHigh=1536M
CPUQuota=200%
Nice=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=openclaw
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/openclaw/.openclaw
PrivateTmp=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes

[Install]
WantedBy=multi-user.target

EnvironmentFile=-/etc/openclaw/env の - プレフィックスは、ファイルが存在しなくても systemd が失敗しないことを意味します。

まとめ

systemd は OpenClaw を確実に実行するために必要なすべてを提供します:起動時の自動起動、クラッシュ回復、構造化ログ、リソース制御。組み込みの openclaw onboard --install-daemon が一般的なケースを処理します。高度なデプロイメントでは、手動サービスファイルでランタイム環境のあらゆる側面を調整できます。

参考資料

  1. systemd - System and Service Manager
  2. systemd.exec - Sandboxing and security directives
  3. loginctl enable-linger documentation
  4. PM2 - Node.js process manager

この記事はいかがでしたか?

新しいガイドやチュートリアルの公開時にお知らせします。

OpenClaw をデプロイしませんか?

Docker・SSH・DevOps 不要。1分以内でセットアップ。

無料トライアルを始める
ClawTank
利用規約プライバシー