Podman
Uruchamiaj OpenClaw Gateway w bezrootowym kontenerze Podman, zarządzanym przez bieżącego użytkownika bez uprawnień roota. Docelowy model wygląda następująco:- Podman uruchamia kontener gateway.
- Twoje hostowe CLI
openclawjest płaszczyzną sterowania. - Trwały stan znajduje się na hoście, domyślnie w
~/.openclaw. - Codzienne zarządzanie używa
openclaw --container <name> ...zamiastsudo -u openclaw,podman execlub osobnego użytkownika usługi.
Wymagania wstępne
- Podman w trybie rootless
- CLI OpenClaw zainstalowane na hoście
- Opcjonalnie:
systemd --user, jeśli chcesz automatyczne uruchamianie zarządzane przez Quadlet - Opcjonalnie:
sudo, tylko jeśli chceszloginctl enable-linger "$(whoami)"dla trwałości po restarcie na hoście bezgłowym
Szybki start
Uruchom onboarding wewnątrz kontenera
Uruchom
./scripts/run-openclaw-podman.sh launch setup, a następnie otwórz http://127.0.0.1:18789/../scripts/podman/setup.shdomyślnie budujeopenclaw:localw twoim rootless store Podman albo używaOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGE, jeśli ustawisz jedną z tych zmiennych.- Tworzy
~/.openclaw/openclaw.jsonzgateway.mode: "local", jeśli plik nie istnieje. - Tworzy
~/.openclaw/.envzOPENCLAW_GATEWAY_TOKEN, jeśli plik nie istnieje. - Dla uruchomień ręcznych pomocnik odczytuje tylko niewielką listę dozwolonych kluczy związanych z Podman z
~/.openclaw/.envi przekazuje do kontenera jawne zmienne env środowiska uruchomieniowego; nie przekazuje Podman całego pliku env.
OPENCLAW_PODMAN_QUADLET=1.
Opcjonalne zmienne env dla build/setup:
OPENCLAW_IMAGElubOPENCLAW_PODMAN_IMAGE— użyj istniejącego/pobranego obrazu zamiast budowaćopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— zainstaluj dodatkowe pakiety apt podczas budowania obrazuOPENCLAW_EXTENSIONS— zainstaluj zależności rozszerzeń podczas budowania
--userns=keep-id i bind-mountuje stan OpenClaw do kontenera.
Onboarding:
http://127.0.0.1:18789/ i użyj tokena z ~/.openclaw/.env.
Domyślne hostowe CLI:
Podman + Tailscale
Aby uzyskać dostęp HTTPS lub zdalny dostęp z przeglądarki, postępuj zgodnie z główną dokumentacją Tailscale. Uwaga specyficzna dla Podman:- Utrzymuj host publikacji Podman jako
127.0.0.1. - Preferuj zarządzane przez hosta
tailscale servezamiastopenclaw gateway --tailscale serve. - Na macOS, jeśli lokalny kontekst device-auth przeglądarki jest zawodny, użyj dostępu przez Tailscale zamiast doraźnych obejść z lokalnymi tunelami.
Systemd (Quadlet, opcjonalnie)
Jeśli uruchomiłeś./scripts/podman/setup.sh --quadlet, konfiguracja instaluje plik Quadlet w:
- Uruchom:
systemctl --user start openclaw.service - Zatrzymaj:
systemctl --user stop openclaw.service - Status:
systemctl --user status openclaw.service - Logi:
journalctl --user -u openclaw.service -f
Konfiguracja, env i pamięć trwała
- Katalog konfiguracji:
~/.openclaw - Katalog workspace:
~/.openclaw/workspace - Plik tokena:
~/.openclaw/.env - Pomocnik uruchamiania:
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
openclaw.json, per-agent auth-profiles.json, stan kanałów/dostawców,
sesje i workspace przetrwają wymianę kontenera.
Konfiguracja Podman zasiewa także gateway.controlUi.allowedOrigins dla 127.0.0.1 i localhost na opublikowanym porcie gateway, aby lokalny dashboard działał z nieloopbackowym bindem kontenera.
Przydatne zmienne env dla ręcznego launchera:
OPENCLAW_PODMAN_CONTAINER— nazwa kontenera (domyślnieopenclaw)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— obraz do uruchomieniaOPENCLAW_PODMAN_GATEWAY_HOST_PORT— port hosta mapowany na kontener18789OPENCLAW_PODMAN_BRIDGE_HOST_PORT— port hosta mapowany na kontener18790OPENCLAW_PODMAN_PUBLISH_HOST— interfejs hosta dla publikowanych portów; domyślnie127.0.0.1OPENCLAW_GATEWAY_BIND— tryb bindowania gateway wewnątrz kontenera; domyślnielanOPENCLAW_PODMAN_USERNS—keep-id(domyślnie),autolubhost
~/.openclaw/.env przed ustaleniem końcowych wartości domyślnych kontenera/obrazu, więc możesz je tam trwale zapisać.
Jeśli używasz niestandardowego OPENCLAW_CONFIG_DIR lub OPENCLAW_WORKSPACE_DIR, ustaw te same zmienne zarówno dla ./scripts/podman/setup.sh, jak i późniejszych poleceń ./scripts/run-openclaw-podman.sh launch. Lokalny launcher repozytorium nie utrwala niestandardowych nadpisań ścieżek między powłokami.
Uwaga dotycząca Quadlet:
- Wygenerowana usługa Quadlet celowo zachowuje stały, utwardzony domyślny kształt: porty publikowane na
127.0.0.1,--bind lanwewnątrz kontenera i przestrzeń nazw użytkownikakeep-id. - Przypina
OPENCLAW_NO_RESPAWN=1,Restart=on-failureiTimeoutStartSec=300. - Publikuje zarówno
127.0.0.1:18789:18789(gateway), jak i127.0.0.1:18790:18790(bridge). - Odczytuje
~/.openclaw/.envjakoEnvironmentFileśrodowiska uruchomieniowego dla wartości takich jakOPENCLAW_GATEWAY_TOKEN, ale nie używa listy dozwolonych nadpisań specyficznych dla Podman z ręcznego launchera. - Jeśli potrzebujesz niestandardowych portów publikacji, hosta publikacji lub innych flag uruchomienia kontenera, użyj ręcznego launchera albo edytuj bezpośrednio
~/.config/containers/systemd/openclaw.container, a następnie przeładuj i uruchom ponownie usługę.
Przydatne polecenia
- Logi kontenera:
podman logs -f openclaw - Zatrzymaj kontener:
podman stop openclaw - Usuń kontener:
podman rm -f openclaw - Otwórz URL dashboard z hostowego CLI:
openclaw dashboard --no-open - Health/status przez hostowe CLI:
openclaw gateway status --deep(sonda RPC + dodatkowy skan usług)
Rozwiązywanie problemów
- Permission denied (EACCES) dla konfiguracji lub workspace: Kontener domyślnie działa z
--userns=keep-idi--user <twoje uid>:<twoje gid>. Upewnij się, że ścieżki konfiguracji/workspace na hoście należą do bieżącego użytkownika. - Zablokowane uruchomienie gateway (brak
gateway.mode=local): Upewnij się, że istnieje~/.openclaw/openclaw.jsoni ustawiagateway.mode="local".scripts/podman/setup.shtworzy ten plik, jeśli go brakuje. - Polecenia CLI kontenera trafiają do niewłaściwego celu: Użyj jawnie
openclaw --container <name> ...albo wyeksportujOPENCLAW_CONTAINER=<name>w swojej powłoce. openclaw updatenie działa z--container: To oczekiwane. Przebuduj/pobierz obraz, a następnie uruchom ponownie kontener lub usługę Quadlet.- Usługa Quadlet nie startuje: Uruchom
systemctl --user daemon-reload, a następniesystemctl --user start openclaw.service. W systemach bezgłowych możesz też potrzebowaćsudo loginctl enable-linger "$(whoami)". - SELinux blokuje bind mounty: Pozostaw domyślne zachowanie montowania bez zmian; launcher automatycznie dodaje
:Zna Linux, gdy SELinux jest w trybie enforcing lub permissive.