メインコンテンツへスキップ
OpenClaw Gateway を rootless Podman コンテナで実行し、現在の非 root ユーザーで管理します。 モデル:
  • Podman が Gateway コンテナを実行します。
  • ホストの openclaw CLI がコントロールプレーンです。
  • 永続状態はデフォルトでホスト上の ~/.openclaw 配下に置かれます。
  • 日常的な管理では、sudo -u openclawpodman exec、または別のサービスユーザーではなく、openclaw --container <name> ... を使用します。

前提条件

  • rootless モードの Podman
  • ホストにインストール済みの OpenClaw CLI
  • 任意: Quadlet 管理の自動起動が必要な場合は systemd --user
  • 任意: ヘッドレスホストで起動時の永続化に loginctl enable-linger "$(whoami)" を使いたい場合のみ sudo

クイックスタート

1

初回セットアップ

リポジトリルートから ./scripts/podman/setup.sh を実行します。これにより、rootless Podman ストアに openclaw:local がビルドされます(OPENCLAW_IMAGE / OPENCLAW_PODMAN_IMAGE が設定されている場合はそれを pull します)。また、存在しない場合は gateway.mode: "local" を含む ~/.openclaw/openclaw.json を作成し、存在しない場合は生成された OPENCLAW_GATEWAY_TOKEN を含む ~/.openclaw/.env を作成します。任意のビルド時環境変数:
変数効果
OPENCLAW_IMAGE / OPENCLAW_PODMAN_IMAGEopenclaw:local をビルドする代わりに、既存または pull 済みのイメージを使用します
OPENCLAW_IMAGE_APT_PACKAGESイメージビルド中に追加の apt パッケージをインストールします(レガシーの OPENCLAW_DOCKER_APT_PACKAGES も受け付けます)
OPENCLAW_IMAGE_PIP_PACKAGESイメージビルド中に追加の Python パッケージをインストールします。バージョンを固定し、信頼できるパッケージインデックスのみを使用してください
OPENCLAW_EXTENSIONSビルド時に Plugin 依存関係を事前インストールします
OPENCLAW_INSTALL_BROWSERブラウザー自動化用に Chromium と Xvfb を事前インストールします(1 に設定)
代わりに Quadlet 管理のセットアップを使用する場合(Linux + systemd ユーザーサービスのみ):
./scripts/podman/setup.sh --quadlet
または OPENCLAW_PODMAN_QUADLET=1 を設定します。
2

Gateway コンテナを起動する

./scripts/run-openclaw-podman.sh launch
--userns=keep-id を使って現在の uid/gid としてコンテナを起動し、OpenClaw 状態をコンテナへ bind mount します。
3

コンテナ内でオンボーディングを実行する

./scripts/run-openclaw-podman.sh launch setup
次に http://127.0.0.1:18789/ を開き、~/.openclaw/.env のトークンを使用します。モデル認証: セットアップ中は OpenClaw 管理の認証を使用します(Anthropic API キー、または Codex-backed OpenAI 用の OpenAI Codex ブラウザー OAuth/device-code 認証)。Podman ランチャーは、~/.claude~/.codex などのホスト CLI 認証情報ホームをセットアップコンテナや Gateway コンテナにマウントしません。既存のホスト CLI ログインは同一ホスト上の利便性のためのパスにすぎません。コンテナインストールでは、プロバイダー認証をセットアップが管理する、マウント済みの ~/.openclaw 状態に保持してください。
4

ホスト CLI から実行中のコンテナを管理する

export OPENCLAW_CONTAINER=openclaw
その後、通常の openclaw コマンドはそのコンテナ内で自動的に実行されます。
openclaw dashboard --no-open
openclaw gateway status --deep   # includes extra service scan
openclaw doctor
openclaw channels login
macOS では、Podman machine によってブラウザーが Gateway から見てローカルではないように見える場合があります。起動後に Control UI がデバイス認証エラーを報告する場合は、Podman と Tailscale の Tailscale ガイダンスを使用してください。
手動ランチャーは、~/.openclaw/.env から Podman 関連キーの小さな allowlist のみを読み取り、明示的なランタイム環境変数をコンテナに渡します。環境ファイル全体を Podman に渡すことはありません。

Podman と Tailscale

HTTPS またはリモートブラウザーアクセスについては、メインの Tailscale ドキュメントに従ってください。 Podman 固有の注意点:
  • Podman の publish host は 127.0.0.1 のままにします。
  • openclaw gateway --tailscale serve よりも、ホスト管理の tailscale serve を推奨します。
  • macOS でローカルブラウザーのデバイス認証コンテキストが不安定な場合は、その場しのぎのローカルトンネル回避策ではなく Tailscale アクセスを使用してください。
TailscaleControl UI を参照してください。

Systemd(Quadlet、任意)

./scripts/podman/setup.sh --quadlet を実行した場合、セットアップは Quadlet ファイルを ~/.config/containers/systemd/openclaw.container にインストールします。
操作コマンド
起動systemctl --user start openclaw.service
停止systemctl --user stop openclaw.service
状態systemctl --user status openclaw.service
ログjournalctl --user -u openclaw.service -f
Quadlet ファイルを編集した後:
systemctl --user daemon-reload
systemctl --user restart openclaw.service
SSH/ヘッドレスホストで起動時の永続化を行うには、現在のユーザーに lingering を有効化します。
sudo loginctl enable-linger "$(whoami)"
生成される Quadlet サービスは、固定された強化済みのデフォルト形状を維持します。公開ポートは 127.0.0.118789 Gateway、18790 bridge)、コンテナ内は --bind lankeep-id ユーザー名前空間、OPENCLAW_NO_RESPAWN=1Restart=on-failureTimeoutStartSec=300 です。OPENCLAW_GATEWAY_TOKEN などの値について、ランタイム EnvironmentFile として ~/.openclaw/.env を読み取りますが、手動ランチャーの Podman 固有 override allowlist は消費しません。カスタムの公開ポート、publish host、またはその他の container-run フラグを使う場合は、代わりに手動ランチャーを使用するか、~/.config/containers/systemd/openclaw.container を直接編集してからサービスを reload して restart してください。

設定、環境変数、ストレージ

  • 設定ディレクトリ: ~/.openclaw
  • ワークスペースディレクトリ: ~/.openclaw/workspace
  • トークンファイル: ~/.openclaw/.env
  • 起動ヘルパー: ./scripts/run-openclaw-podman.sh
起動スクリプトと Quadlet は、ホスト状態をコンテナに bind mount します。OPENCLAW_CONFIG_DIR -> /home/node/.openclawOPENCLAW_WORKSPACE_DIR -> /home/node/.openclaw/workspace です。デフォルトではこれらは匿名コンテナ状態ではなくホストディレクトリであるため、openclaw.json、エージェントごとの auth-profiles.json、チャネル/プロバイダー状態、セッション、ワークスペースはコンテナを置き換えても残ります。セットアップは、ローカルダッシュボードがコンテナの非 loopback bind で動作するよう、公開された Gateway ポート上の 127.0.0.1localhost に対して gateway.controlUi.allowedOrigins も seed します。 手動ランチャーで有用な環境変数(これらは ~/.openclaw/.env に永続化してください。ランチャーはコンテナ/イメージのデフォルトを確定する前にこのファイルを読み取ります):
変数デフォルト効果
OPENCLAW_PODMAN_CONTAINERopenclawコンテナ名
OPENCLAW_PODMAN_IMAGE / OPENCLAW_IMAGEopenclaw:local実行するイメージ
OPENCLAW_PODMAN_GATEWAY_HOST_PORT18789コンテナの 18789 にマップされるホストポート
OPENCLAW_PODMAN_BRIDGE_HOST_PORT18790コンテナの 18790 にマップされるホストポート
OPENCLAW_PODMAN_PUBLISH_HOST127.0.0.1公開ポート用のホストインターフェース
OPENCLAW_GATEWAY_BINDlanコンテナ内の Gateway bind モード
OPENCLAW_PODMAN_USERNSkeep-idkeep-idauto、または host
デフォルト以外の OPENCLAW_CONFIG_DIR または OPENCLAW_WORKSPACE_DIR を使用する場合は、./scripts/podman/setup.sh と、その後の ./scripts/run-openclaw-podman.sh launch コマンドの両方に同じ変数を設定してください。リポジトリローカルのランチャーは、シェルをまたいでカスタムパス override を永続化しません。

便利なコマンド

  • コンテナログ: podman logs -f openclaw
  • コンテナを停止: podman stop openclaw
  • コンテナを削除: podman rm -f openclaw
  • ホスト CLI からダッシュボード URL を開く: openclaw dashboard --no-open
  • ホスト CLI 経由のヘルス/状態: openclaw gateway status --deep(RPC probe + 追加サービススキャン)

トラブルシューティング

  • 設定またはワークスペースで Permission denied(EACCES): コンテナはデフォルトで --userns=keep-id--user <your uid>:<your gid> を使って実行されます。ホストの設定/ワークスペースパスが現在のユーザーの所有であることを確認してください。
  • Gateway 起動がブロックされる(gateway.mode=local がない): ~/.openclaw/openclaw.json が存在し、gateway.mode="local" を設定していることを確認してください。存在しない場合、scripts/podman/setup.sh がこれを作成します。
  • コンテナ CLI コマンドが間違ったターゲットに当たる: openclaw --container <name> ... を明示的に使用するか、シェルで OPENCLAW_CONTAINER=<name> を export してください。
  • openclaw update--container で失敗する: 想定どおりです。イメージを rebuild/pull してから、コンテナまたは Quadlet サービスを再起動してください。
  • Quadlet サービスが起動しない: systemctl --user daemon-reload を実行してから、systemctl --user start openclaw.service を実行します。ヘッドレスシステムでは、sudo loginctl enable-linger "$(whoami)" も必要になる場合があります。
  • SELinux が bind mount をブロックする: デフォルトの mount 動作はそのままにしてください。SELinux が enforcing または permissive の Linux では、ランチャーが自動的に :Z を追加します。

関連