Containers
Podman
Jalankan OpenClaw Gateway dalam kontainer Podman tanpa root, dikelola oleh pengguna non-root Anda saat ini.
Model yang dimaksud adalah:
- 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
Penyiapan satu kali
Dari root repo, jalankan ./scripts/podman/setup.sh.
Mulai kontainer Gateway
Mulai kontainer dengan ./scripts/run-openclaw-podman.sh launch.
Jalankan onboarding di dalam kontainer
Jalankan ./scripts/run-openclaw-podman.sh launch setup, lalu buka http://127.0.0.1:18789/.
Kelola kontainer yang sedang berjalan dari CLI host
Tetapkan OPENCLAW_CONTAINER=openclaw, lalu gunakan perintah openclaw normal dari host.
Detail penyiapan:
./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.
Penyiapan yang dikelola Quadlet:
./scripts/podman/setup.sh --quadletQuadlet adalah opsi khusus Linux karena bergantung pada layanan pengguna systemd.
Anda juga dapat menetapkan 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)
Mulai kontainer:
./scripts/run-openclaw-podman.sh launchSkrip memulai kontainer sebagai uid/gid Anda saat ini dengan --userns=keep-id dan bind-mount state OpenClaw Anda ke dalam kontainer.
Onboarding:
./scripts/run-openclaw-podman.sh launch setupLalu buka 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.
Default CLI host:
export OPENCLAW_CONTAINER=openclawLalu perintah seperti ini akan berjalan di dalam kontainer tersebut secara otomatis:
openclaw dashboard --no-openopenclaw gateway status --deep # includes extra service scanopenclaw doctoropenclaw channels loginDi macOS, mesin Podman dapat membuat browser tampak non-lokal bagi Gateway. Jika UI Kontrol melaporkan error autentikasi perangkat setelah peluncuran, gunakan panduan Tailscale di Podman dan Tailscale.
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.
Lihat:
Systemd (Quadlet, opsional)
Jika Anda menjalankan ./scripts/podman/setup.sh --quadlet, penyiapan memasang file Quadlet di:
~/.config/containers/systemd/openclaw.containerPerintah berguna:
- 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
Setelah mengedit file Quadlet:
systemctl --user daemon-reloadsystemctl --user restart openclaw.serviceUntuk persistensi boot pada host SSH/headless, aktifkan lingering untuk pengguna Anda saat ini:
sudo loginctl enable-linger "$(whoami)"Config, env, dan penyimpanan
- Direktori config:
~/.openclaw - Direktori workspace:
~/.openclaw/workspace - File token:
~/.openclaw/.env - Helper peluncuran:
./scripts/run-openclaw-podman.sh
Skrip peluncuran dan Quadlet melakukan bind-mount state host ke dalam kontainer:
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
Secara default, itu adalah direktori host, bukan state kontainer anonim, sehingga
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
Launcher manual membaca ~/.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.