Podman
OpenClaw Gateway をルートレス Podman コンテナで実行します。Docker と同じイメージを使用します(リポジトリの Dockerfile からビルド)。
要件
- Podman(ルートレス)
- 初回セットアップ用の sudo(ユーザー作成、イメージビルド)
クイックスタート
1. 初回セットアップ(リポジトリルートから実行。ユーザー作成、イメージビルド、起動スクリプトのインストールを行います):
./setup-podman.sh
これにより、Gateway がウィザードなしで起動できるよう最小限の ~openclaw/.openclaw/openclaw.json(gateway.mode="local" を設定)も作成されます。
デフォルトではコンテナは systemd サービスとしてインストールされません。手動で起動します(以下を参照)。自動起動と再起動を備えた本番スタイルのセットアップには、systemd Quadlet ユーザーサービスとしてインストールしてください:
./setup-podman.sh --quadlet
(または OPENCLAW_PODMAN_QUADLET=1 を設定。コンテナと起動スクリプトのみをインストールするには --container を使用。)
任意のビルド時環境変数(setup-podman.sh の前に設定):
OPENCLAW_DOCKER_APT_PACKAGES— イメージビルド時に追加の apt パッケージをインストールOPENCLAW_EXTENSIONS— エクステンションの依存関係を事前インストール(スペース区切りのエクステンション名、例:diagnostics-otel matrix)
2. Gateway の起動(手動、簡易テスト用):
./scripts/run-openclaw-podman.sh launch
3. オンボーディングウィザード(チャンネルやプロバイダーの追加など):
./scripts/run-openclaw-podman.sh launch setup
http://127.0.0.1:18789/ を開き、~openclaw/.openclaw/.env のトークン(またはセットアップで表示された値)を使用してください。
systemd(Quadlet、任意)
./setup-podman.sh --quadlet(または OPENCLAW_PODMAN_QUADLET=1)を実行した場合、Podman Quadlet ユニットがインストールされ、Gateway が openclaw ユーザーの systemd ユーザーサービスとして実行されます。セットアップ終了時にサービスが有効化・起動されます。
- 起動:
sudo systemctl --machine openclaw@ --user start openclaw.service - 停止:
sudo systemctl --machine openclaw@ --user stop openclaw.service - ステータス:
sudo systemctl --machine openclaw@ --user status openclaw.service - ログ:
sudo journalctl --machine openclaw@ --user -u openclaw.service -f
Quadlet ファイルは ~openclaw/.config/containers/systemd/openclaw.container にあります。ポートや環境変数を変更するには、そのファイル(またはそれが読み込む .env)を編集し、sudo systemctl --machine openclaw@ --user daemon-reload を実行してからサービスを再起動してください。ブート時にサービスが自動起動するのは、openclaw ユーザーで lingering が有効な場合です(loginctl が利用可能な場合、セットアップが設定します)。
初回セットアップで Quadlet を使用しなかった場合に後から追加するには、./setup-podman.sh --quadlet を再実行してください。
openclaw ユーザー(非ログイン)
setup-podman.sh は専用のシステムユーザー openclaw を作成します:
-
シェル:
nologin— 対話型ログインなし。攻撃対象領域を削減。 -
**ホーム:**例:
/home/openclaw—~/.openclaw(設定、ワークスペース)と起動スクリプトrun-openclaw-podman.shを保持。 -
**ルートレス Podman:**ユーザーには subuid と subgid の範囲が必要です。多くのディストリビューションではユーザー作成時に自動的に割り当てられます。セットアップで警告が表示された場合は、
/etc/subuidと/etc/subgidに行を追加してください:openclaw:100000:65536その後、そのユーザーとして Gateway を起動(例:cron や systemd から):
sudo -u openclaw /home/openclaw/run-openclaw-podman.sh sudo -u openclaw /home/openclaw/run-openclaw-podman.sh setup -
設定:
openclawと root のみが/home/openclaw/.openclawにアクセスできます。設定を編集するには、Gateway が稼働中ならコントロール UI を使用するか、sudo -u openclaw $EDITOR /home/openclaw/.openclaw/openclaw.jsonを実行してください。
環境変数と設定
- トークン:
~openclaw/.openclaw/.envにOPENCLAW_GATEWAY_TOKENとして保存。setup-podman.shとrun-openclaw-podman.shが未設定の場合に生成します(openssl、python3、またはodを使用)。 - **任意:**その
.envにプロバイダーキー(例:GROQ_API_KEY、OLLAMA_API_KEY)やその他の OpenClaw 環境変数を設定できます。 - ホストポート:デフォルトでスクリプトは
18789(Gateway)と18790(ブリッジ)をマッピングします。起動時にOPENCLAW_PODMAN_GATEWAY_HOST_PORTとOPENCLAW_PODMAN_BRIDGE_HOST_PORTでホストポートマッピングを上書きできます。 - **Gateway バインド:**デフォルトでは
run-openclaw-podman.shは安全なローカルアクセスのために--bind loopbackで Gateway を起動します。LAN に公開するにはOPENCLAW_GATEWAY_BIND=lanを設定し、openclaw.jsonでgateway.controlUi.allowedOrigins(または明示的なホストヘッダーフォールバックの有効化)を設定してください。 - **パス:**ホストの設定とワークスペースはデフォルトで
~openclaw/.openclawと~openclaw/.openclaw/workspaceです。起動スクリプトが使用するホストパスはOPENCLAW_CONFIG_DIRとOPENCLAW_WORKSPACE_DIRで上書きできます。
ストレージモデル
- 永続ホストデータ:
OPENCLAW_CONFIG_DIRとOPENCLAW_WORKSPACE_DIRがコンテナにバインドマウントされ、ホスト上に状態が保持されます。 - エフェメラルサンドボックス tmpfs:
agents.defaults.sandboxを有効にした場合、ツールサンドボックスコンテナは/tmp、/var/tmp、/runにtmpfsをマウントします。これらのパスはメモリバックドでサンドボックスコンテナとともに消失します。トップレベルの Podman コンテナセットアップは独自の tmpfs マウントを追加しません。 - **ディスク増加のホットスポット:**主な監視パスは
media/、agents/<agentId>/sessions/sessions.json、トランスクリプト JSONL ファイル、cron/runs/*.jsonl、/tmp/openclaw/(または設定したlogging.file)配下のローリングファイルログです。
setup-podman.sh はイメージ tar をプライベート一時ディレクトリにステージングし、セットアップ中に選択されたベースディレクトリを表示します。非 root 実行では、そのベースが安全に使用できる場合のみ TMPDIR を受け入れます。それ以外は /var/tmp、次に /tmp にフォールバックします。保存された tar はオーナーのみアクセス可能で、ターゲットユーザーの podman load にストリームされるため、プライベートな呼び出し元の一時ディレクトリがセットアップをブロックすることはありません。
よく使うコマンド
- **ログ:**Quadlet の場合:
sudo journalctl --machine openclaw@ --user -u openclaw.service -f。スクリプトの場合:sudo -u openclaw podman logs -f openclaw - **停止:**Quadlet の場合:
sudo systemctl --machine openclaw@ --user stop openclaw.service。スクリプトの場合:sudo -u openclaw podman stop openclaw - **再起動:**Quadlet の場合:
sudo systemctl --machine openclaw@ --user start openclaw.service。スクリプトの場合:起動スクリプトを再実行、またはpodman start openclaw - コンテナの削除:
sudo -u openclaw podman rm -f openclaw— ホスト上の設定とワークスペースは保持されます
トラブルシューティング
- **設定または認証プロファイルでの権限エラー(EACCES):**コンテナはデフォルトで
--userns=keep-idを使用し、スクリプトを実行するホストユーザーと同じ uid/gid で動作します。ホストのOPENCLAW_CONFIG_DIRとOPENCLAW_WORKSPACE_DIRがそのユーザーの所有であることを確認してください。 - Gateway の起動がブロックされる(
gateway.mode=localが見つからない):~openclaw/.openclaw/openclaw.jsonが存在し、gateway.mode="local"が設定されていることを確認してください。setup-podman.shはファイルが見つからない場合に作成します。 - ルートレス Podman が openclaw ユーザーで失敗する:
/etc/subuidと/etc/subgidにopenclawの行(例:openclaw:100000:65536)が含まれているか確認してください。なければ追加して再起動してください。 - **コンテナ名が使用中:**起動スクリプトは
podman run --replaceを使用するため、再起動時に既存のコンテナが置き換えられます。手動でクリーンアップするには:podman rm -f openclaw。 - openclaw として実行時にスクリプトが見つからない:
setup-podman.shを実行してrun-openclaw-podman.shが openclaw のホーム(例:/home/openclaw/run-openclaw-podman.sh)にコピーされていることを確認してください。 - Quadlet サービスが見つからない、または起動に失敗する:
.containerファイルを編集した後、sudo systemctl --machine openclaw@ --user daemon-reloadを実行してください。Quadlet は cgroups v2 が必要です:podman info --format '{{.Host.CgroupsVersion}}'で2と表示されるはずです。
任意:自分のユーザーで実行
Gateway を通常のユーザーとして実行する場合(専用の openclaw ユーザーなし):イメージをビルドし、~/.openclaw/.env に OPENCLAW_GATEWAY_TOKEN を作成し、--userns=keep-id と ~/.openclaw へのマウントでコンテナを実行します。起動スクリプトは openclaw ユーザー向けに設計されています。シングルユーザーセットアップでは、スクリプト内の podman run コマンドを手動で実行し、設定とワークスペースを自分のホームに向けることもできます。ほとんどのユーザーには、setup-podman.sh を使って openclaw ユーザーとして実行することを推奨します。設定とプロセスが分離されます。