- Podman menjalankan kontainer gateway.
- CLI
openclawhost Anda adalah control plane. - State persisten berada di host di bawah
~/.openclawsecara default. - Pengelolaan harian menggunakan
openclaw --container <name> ..., bukansudo -u openclaw,podman exec, atau pengguna layanan terpisah.
Prasyarat
- Podman dalam mode tanpa root
- CLI OpenClaw terinstal di host
- Opsional:
systemd --userjika Anda ingin auto-start yang dikelola Quadlet - Opsional:
sudohanya jika Anda menginginkanloginctl enable-linger "$(whoami)"untuk persistensi boot pada host headless
Mulai cepat
Jalankan onboarding di dalam kontainer
Jalankan
./scripts/run-openclaw-podman.sh launch setup, lalu buka http://127.0.0.1:18789/../scripts/podman/setup.shmembangunopenclaw:localdi penyimpanan Podman tanpa root Anda secara default, atau menggunakanOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEjika Anda menetapkannya.- Ini membuat
~/.openclaw/openclaw.jsondengangateway.mode: "local"jika belum ada. - Ini membuat
~/.openclaw/.envdenganOPENCLAW_GATEWAY_TOKENjika belum ada. - Untuk peluncuran manual, helper hanya membaca allowlist kecil berisi kunci terkait Podman dari
~/.openclaw/.envdan meneruskan env var runtime eksplisit ke kontainer; ini tidak menyerahkan seluruh file env ke Podman.
OPENCLAW_PODMAN_QUADLET=1.
Env var build/penyiapan opsional:
OPENCLAW_IMAGEatauOPENCLAW_PODMAN_IMAGE— gunakan image yang sudah ada/ditarik alih-alih membangunopenclaw:localOPENCLAW_IMAGE_APT_PACKAGES— instal paket apt tambahan selama build image (juga menerimaOPENCLAW_DOCKER_APT_PACKAGESlama)OPENCLAW_IMAGE_PIP_PACKAGES— instal paket Python tambahan selama build image; pin versi dan gunakan hanya indeks paket yang Anda percayaiOPENCLAW_EXTENSIONS— pra-instal dependensi Plugin pada waktu buildOPENCLAW_INSTALL_BROWSER— pra-instal Chromium dan Xvfb untuk otomasi browser (tetapkan ke1untuk mengaktifkan)
--userns=keep-id dan bind-mount state OpenClaw Anda ke dalam kontainer.
Onboarding:
http://127.0.0.1:18789/ dan gunakan token dari ~/.openclaw/.env.
Autentikasi model di Podman:
- Gunakan autentikasi yang dikelola OpenClaw selama penyiapan: kunci API Anthropic untuk Anthropic, atau autentikasi OAuth browser/kode perangkat OpenAI Codex untuk OpenAI yang didukung Codex.
- Launcher Podman tidak memasang home kredensial CLI host seperti
~/.claudeatau~/.codexke kontainer penyiapan atau gateway. - Login CLI host yang sudah ada adalah jalur kemudahan host yang sama. Untuk instalasi kontainer, simpan autentikasi provider di state
~/.openclawterpasang yang dikelola penyiapan.
Podman dan Tailscale
Untuk HTTPS atau akses browser jarak jauh, ikuti dokumentasi utama Tailscale. Catatan khusus Podman:- Pertahankan host publish Podman di
127.0.0.1. - Lebih pilih
tailscale serveyang dikelola host daripadaopenclaw gateway --tailscale serve. - Di macOS, jika konteks autentikasi perangkat browser lokal tidak andal, gunakan akses Tailscale alih-alih workaround tunnel lokal ad hoc.
Systemd (Quadlet, opsional)
Jika Anda menjalankan./scripts/podman/setup.sh --quadlet, penyiapan memasang file Quadlet di:
- Mulai:
systemctl --user start openclaw.service - Hentikan:
systemctl --user stop openclaw.service - Status:
systemctl --user status openclaw.service - Log:
journalctl --user -u openclaw.service -f
Config, env, dan penyimpanan
- Direktori config:
~/.openclaw - Direktori workspace:
~/.openclaw/workspace - File token:
~/.openclaw/.env - Helper peluncuran:
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
openclaw.json, auth-profiles.json per agen, state channel/provider,
sesi, dan workspace tetap ada setelah penggantian kontainer.
Penyiapan Podman juga mengisi gateway.controlUi.allowedOrigins untuk 127.0.0.1 dan localhost pada port Gateway yang dipublikasikan agar dashboard lokal berfungsi dengan bind non-loopback kontainer.
Env var berguna untuk launcher manual:
OPENCLAW_PODMAN_CONTAINER— nama kontainer (openclawsecara default)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— image yang dijalankanOPENCLAW_PODMAN_GATEWAY_HOST_PORT— port host yang dipetakan ke kontainer18789OPENCLAW_PODMAN_BRIDGE_HOST_PORT— port host yang dipetakan ke kontainer18790OPENCLAW_PODMAN_PUBLISH_HOST— antarmuka host untuk port yang dipublikasikan; default adalah127.0.0.1OPENCLAW_GATEWAY_BIND— mode bind Gateway di dalam kontainer; default adalahlanOPENCLAW_PODMAN_USERNS—keep-id(default),auto, atauhost
~/.openclaw/.env sebelum menyelesaikan default kontainer/image, sehingga Anda dapat mempertahankannya di sana.
Jika Anda menggunakan OPENCLAW_CONFIG_DIR atau OPENCLAW_WORKSPACE_DIR non-default, tetapkan variabel yang sama untuk ./scripts/podman/setup.sh dan perintah ./scripts/run-openclaw-podman.sh launch berikutnya. Launcher repo-lokal tidak mempertahankan override path kustom lintas shell.
Catatan Quadlet:
- Layanan Quadlet yang dihasilkan sengaja mempertahankan bentuk default yang tetap dan diperkeras: port yang dipublikasikan
127.0.0.1,--bind landi dalam kontainer, dan namespace penggunakeep-id. - Ini mem-pin
OPENCLAW_NO_RESPAWN=1,Restart=on-failure, danTimeoutStartSec=300. - Ini memublikasikan
127.0.0.1:18789:18789(Gateway) dan127.0.0.1:18790:18790(bridge). - Ini membaca
~/.openclaw/.envsebagaiEnvironmentFileruntime untuk nilai sepertiOPENCLAW_GATEWAY_TOKEN, tetapi tidak mengonsumsi allowlist override khusus Podman milik launcher manual. - Jika Anda memerlukan port publish kustom, host publish, atau flag container-run lainnya, gunakan launcher manual atau edit
~/.config/containers/systemd/openclaw.containersecara langsung, lalu muat ulang dan mulai ulang layanan.
Perintah berguna
- Log kontainer:
podman logs -f openclaw - Hentikan kontainer:
podman stop openclaw - Hapus kontainer:
podman rm -f openclaw - Buka URL dashboard dari CLI host:
openclaw dashboard --no-open - Health/status melalui CLI host:
openclaw gateway status --deep(probe RPC + pemindaian layanan tambahan)
Pemecahan masalah
- Izin ditolak (EACCES) pada config atau workspace: Kontainer berjalan dengan
--userns=keep-iddan--user <your uid>:<your gid>secara default. Pastikan path config/workspace host dimiliki oleh pengguna Anda saat ini. - Start Gateway diblokir (
gateway.mode=localtidak ada): Pastikan~/.openclaw/openclaw.jsonada dan menetapkangateway.mode="local".scripts/podman/setup.shmembuat ini jika belum ada. - Perintah CLI kontainer mengenai target yang salah: Gunakan
openclaw --container <name> ...secara eksplisit, atau eksporOPENCLAW_CONTAINER=<name>di shell Anda. openclaw updategagal dengan--container: Ini sesuai ekspektasi. Bangun ulang/tarik image, lalu mulai ulang kontainer atau layanan Quadlet.- Layanan Quadlet tidak mulai: Jalankan
systemctl --user daemon-reload, lalusystemctl --user start openclaw.service. Pada sistem headless, Anda mungkin juga perlusudo loginctl enable-linger "$(whoami)". - SELinux memblokir bind mount: Biarkan perilaku mount default apa adanya; launcher otomatis menambahkan
:Zdi Linux ketika SELinux dalam mode enforcing atau permissive.