Podman
Jalankan Gateway OpenClaw dalam kontainer Podman rootless, yang dikelola oleh pengguna non-root Anda saat ini. Model yang dimaksud adalah:- Podman menjalankan kontainer gateway.
- CLI
openclawdi host Anda adalah control plane. - State persisten berada di host di bawah
~/.openclawsecara default. - Pengelolaan sehari-hari menggunakan
openclaw --container <name> ...alih-alihsudo -u openclaw,podman exec, atau pengguna layanan terpisah.
Prasyarat
- Podman dalam mode rootless
- CLI OpenClaw terinstal di host
- Opsional:
systemd --userjika Anda menginginkan auto-start yang dikelola Quadlet - Opsional:
sudohanya jika Anda inginloginctl enable-linger "$(whoami)"untuk persistensi saat boot di 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 rootless Anda secara default, atau menggunakanOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEjika Anda menyetelnya.- 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 dari key terkait Podman dari
~/.openclaw/.envdan meneruskan env var runtime eksplisit ke kontainer; helper ini tidak menyerahkan seluruh file env ke Podman.
OPENCLAW_PODMAN_QUADLET=1.
Env var build/setup opsional:
OPENCLAW_IMAGEatauOPENCLAW_PODMAN_IMAGE— gunakan image yang sudah ada/di-pull alih-alih membangunopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— instal paket apt tambahan saat build imageOPENCLAW_EXTENSIONS— pra-instal dependensi extension saat build time
--userns=keep-id dan melakukan bind-mount state OpenClaw Anda ke dalam kontainer.
Onboarding:
http://127.0.0.1:18789/ dan gunakan token dari ~/.openclaw/.env.
Default CLI host:
Podman + Tailscale
Untuk akses HTTPS atau browser jarak jauh, ikuti dokumentasi utama Tailscale. Catatan khusus Podman:- Biarkan host publish Podman tetap di
127.0.0.1. - Utamakan
tailscale serveyang dikelola host daripadaopenclaw gateway --tailscale serve. - Di macOS, jika konteks auth perangkat browser lokal tidak andal, gunakan akses Tailscale alih-alih solusi tunnel lokal ad hoc.
Systemd (Quadlet, opsional)
Jika Anda menjalankan./scripts/podman/setup.sh --quadlet, penyiapan akan menginstal 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
Konfigurasi, env, dan penyimpanan
- Dir konfigurasi:
~/.openclaw - Dir 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 agent, state channel/provider,
sesi, dan workspace tetap bertahan saat kontainer diganti.
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 yang berguna untuk peluncur manual:
OPENCLAW_PODMAN_CONTAINER— nama kontainer (openclawsecara default)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— image yang akan 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-nya127.0.0.1OPENCLAW_GATEWAY_BIND— mode bind gateway di dalam kontainer; default-nyalanOPENCLAW_PODMAN_USERNS—keep-id(default),auto, atauhost
~/.openclaw/.env sebelum memfinalisasi default kontainer/image, jadi Anda dapat menyimpannya di sana.
Jika Anda menggunakan OPENCLAW_CONFIG_DIR atau OPENCLAW_WORKSPACE_DIR non-default, setel variabel yang sama untuk ./scripts/podman/setup.sh dan perintah ./scripts/run-openclaw-podman.sh launch berikutnya. Peluncur lokal repo tidak menyimpan override path kustom lintas shell.
Catatan Quadlet:
- Layanan Quadlet yang dihasilkan sengaja mempertahankan bentuk default tetap yang diperkeras: port yang dipublikasikan di
127.0.0.1,--bind landi dalam kontainer, dan namespace penggunakeep-id. - Layanan ini menyematkan
OPENCLAW_NO_RESPAWN=1,Restart=on-failure, danTimeoutStartSec=300. - Layanan ini memublikasikan
127.0.0.1:18789:18789(gateway) dan127.0.0.1:18790:18790(bridge). - Layanan ini membaca
~/.openclaw/.envsebagaiEnvironmentFileruntime untuk nilai sepertiOPENCLAW_GATEWAY_TOKEN, tetapi tidak menggunakan allowlist override khusus Podman milik peluncur manual. - Jika Anda memerlukan port publish kustom, host publish, atau flag
container-runlainnya, gunakan peluncur manual atau edit~/.config/containers/systemd/openclaw.containersecara langsung, lalu reload dan restart layanan.
Perintah yang 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 - Kesehatan/status via CLI host:
openclaw gateway status --deep(probe RPC + pemindaian layanan tambahan)
Pemecahan masalah
- Permission denied (EACCES) pada konfigurasi atau workspace: Kontainer berjalan dengan
--userns=keep-iddan--user <your uid>:<your gid>secara default. Pastikan path konfigurasi/workspace host dimiliki oleh pengguna Anda saat ini. - Mulai Gateway diblokir (tidak ada
gateway.mode=local): Pastikan~/.openclaw/openclaw.jsonada dan menyetelgateway.mode="local".scripts/podman/setup.shakan membuatnya jika belum ada. - Perintah CLI kontainer menuju target yang salah: Gunakan
openclaw --container <name> ...secara eksplisit, atau eksporOPENCLAW_CONTAINER=<name>di shell Anda. openclaw updategagal dengan--container: Wajar. Bangun ulang/pull image, lalu restart kontainer atau layanan Quadlet.- Layanan Quadlet tidak mulai: Jalankan
systemctl --user daemon-reload, lalusystemctl --user start openclaw.service. Pada sistem headless Anda mungkin juga memerlukansudo loginctl enable-linger "$(whoami)". - SELinux memblokir bind mount: Biarkan perilaku mount default; peluncur otomatis menambahkan
:Zdi Linux saat SELinux enforcing atau permissive.