Containers
Podman
Jalankan OpenClaw Gateway dalam kontainer Podman rootless, dikelola oleh pengguna non-root Anda saat ini.
Model yang dimaksud adalah:
- Podman menjalankan kontainer gateway.
- CLI
openclawhost Anda adalah bidang kontrol. - State persisten berada di host di bawah
~/.openclawsecara default. - Pengelolaan sehari-hari menggunakan
openclaw --container <name> ..., bukansudo -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 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 berjalan dari CLI host
Atur OPENCLAW_CONTAINER=openclaw, lalu gunakan perintah openclaw normal dari host.
Detail penyiapan:
./scripts/podman/setup.shmembangunopenclaw:localdi penyimpanan Podman rootless 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 key terkait Podman dari
~/.openclaw/.envdan meneruskan variabel env runtime eksplisit ke kontainer; ini tidak menyerahkan seluruh file env ke Podman.
Penyiapan yang dikelola Quadlet:
./scripts/podman/setup.sh --quadlet
Quadlet adalah opsi khusus Linux karena bergantung pada layanan pengguna systemd.
Anda juga dapat menetapkan OPENCLAW_PODMAN_QUADLET=1.
Variabel env build/penyiapan opsional:
OPENCLAW_IMAGEatauOPENCLAW_PODMAN_IMAGE-- gunakan image yang sudah ada/ditarik, bukan membangunopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES-- instal paket apt tambahan selama build imageOPENCLAW_EXTENSIONS-- prainstal dependensi plugin pada waktu buildOPENCLAW_INSTALL_BROWSER-- prainstal Chromium dan Xvfb untuk otomasi browser (atur ke1untuk mengaktifkan)
Mulai kontainer:
./scripts/run-openclaw-podman.sh launch
Skrip memulai kontainer sebagai uid/gid Anda saat ini dengan --userns=keep-id dan memasang state OpenClaw Anda ke dalam kontainer dengan bind mount.
Onboarding:
./scripts/run-openclaw-podman.sh launch setup
Lalu buka http://127.0.0.1:18789/ dan gunakan token dari ~/.openclaw/.env.
Default CLI host:
export OPENCLAW_CONTAINER=openclaw
Lalu perintah seperti berikut akan otomatis berjalan di dalam kontainer tersebut:
openclaw dashboard --no-open
openclaw gateway status --deep # includes extra service scan
openclaw doctor
openclaw channels login
Di macOS, mesin Podman dapat membuat browser tampak non-lokal bagi gateway. Jika Control UI melaporkan error auth perangkat setelah peluncuran, gunakan panduan Tailscale di Podman dan Tailscale.
Podman dan Tailscale
Untuk HTTPS atau akses browser jarak jauh, ikuti dokumentasi Tailscale utama.
Catatan khusus Podman:
- Pertahankan host publish Podman 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 sementara tunnel lokal ad hoc.
Lihat:
Systemd (Quadlet, opsional)
Jika Anda menjalankan ./scripts/podman/setup.sh --quadlet, penyiapan menginstal file Quadlet di:
~/.config/containers/systemd/openclaw.container
Perintah 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-reload
systemctl --user restart openclaw.service
Untuk persistensi boot pada host SSH/headless, aktifkan lingering untuk pengguna Anda saat ini:
sudo loginctl enable-linger "$(whoami)"
Konfigurasi, env, dan penyimpanan
- Direktori konfigurasi:
~/.openclaw - Direktori workspace:
~/.openclaw/workspace - File token:
~/.openclaw/.env - Helper peluncuran:
./scripts/run-openclaw-podman.sh
Skrip peluncuran dan Quadlet memasang state host ke dalam kontainer dengan bind mount:
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 bertahan setelah penggantian kontainer.
Penyiapan Podman juga mengisi gateway.controlUi.allowedOrigins untuk 127.0.0.1 dan localhost pada port gateway yang dipublikasikan sehingga dashboard lokal berfungsi dengan bind non-loopback kontainer.
Variabel env 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; defaultnya adalah127.0.0.1OPENCLAW_GATEWAY_BIND-- mode bind gateway di dalam kontainer; defaultnya adalahlanOPENCLAW_PODMAN_USERNS--keep-id(default),auto, atauhost
Peluncur manual membaca ~/.openclaw/.env sebelum memfinalisasi default kontainer/image, sehingga Anda dapat menyimpannya secara persisten di sana.
Jika Anda menggunakan OPENCLAW_CONFIG_DIR atau OPENCLAW_WORKSPACE_DIR yang bukan default, tetapkan variabel yang sama untuk perintah ./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 dan diperkeras: port yang dipublikasikan
127.0.0.1,--bind landi dalam kontainer, dan namespace penggunakeep-id. - Ini memasang
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 memakai allowlist override khusus Podman milik peluncur manual. - Jika Anda membutuhkan port publish, host publish, atau flag container-run kustom lain, gunakan peluncur 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 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 (
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 wajar. 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; peluncur otomatis menambahkan
:Zdi Linux saat SELinux dalam mode enforcing atau permissive.