- Podman führt den Gateway-Container aus.
- Ihre Host-
openclaw-CLI ist die Steuerungsebene. - Persistenter Zustand liegt standardmäßig auf dem Host unter
~/.openclaw. - Die tägliche Verwaltung verwendet
openclaw --container <name> ...stattsudo -u openclaw,podman execoder einen separaten Dienstbenutzer.
Voraussetzungen
- Podman im rootless-Modus
- OpenClaw CLI auf dem Host installiert
- Optional:
systemd --user, wenn Sie von Quadlet verwalteten Autostart möchten - Optional:
sudonur, wenn Sieloginctl enable-linger "$(whoami)"für Boot-Persistenz auf einem headless Host möchten
Schnellstart
Onboarding im Container ausführen
Führen Sie
./scripts/run-openclaw-podman.sh launch setup aus und öffnen Sie dann http://127.0.0.1:18789/../scripts/podman/setup.shbaut standardmäßigopenclaw:localin Ihrem rootless Podman-Speicher oder verwendetOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGE, wenn Sie eines davon setzen.- Es erstellt
~/.openclaw/openclaw.jsonmitgateway.mode: "local", falls die Datei fehlt. - Es erstellt
~/.openclaw/.envmitOPENCLAW_GATEWAY_TOKEN, falls die Datei fehlt. - Für manuelle Starts liest der Helfer nur eine kleine Allowlist Podman-bezogener Schlüssel aus
~/.openclaw/.envund übergibt explizite Runtime-Umgebungsvariablen an den Container; er übergibt nicht die vollständige Env-Datei an Podman.
OPENCLAW_PODMAN_QUADLET=1 setzen.
Optionale Build-/Setup-Env-Variablen:
OPENCLAW_IMAGEoderOPENCLAW_PODMAN_IMAGE— ein vorhandenes/gezogenes Image verwenden, stattopenclaw:localzu bauenOPENCLAW_IMAGE_APT_PACKAGES— zusätzliche apt-Pakete während des Image-Builds installieren (akzeptiert auch das Legacy-OPENCLAW_DOCKER_APT_PACKAGES)OPENCLAW_IMAGE_PIP_PACKAGES— zusätzliche Python-Pakete während des Image-Builds installieren; pinnen Sie Versionen und verwenden Sie nur Paketindizes, denen Sie vertrauenOPENCLAW_EXTENSIONS— Plugin-Abhängigkeiten zur Build-Zeit vorinstallierenOPENCLAW_INSTALL_BROWSER— Chromium und Xvfb für Browser-Automatisierung vorinstallieren (zum Aktivieren auf1setzen)
--userns=keep-id und bind-mountet Ihren OpenClaw-Zustand in den Container.
Onboarding:
http://127.0.0.1:18789/ und verwenden Sie das Token aus ~/.openclaw/.env.
Modell-Authentifizierung in Podman:
- Verwenden Sie während der Einrichtung OpenClaw-verwaltete Authentifizierung: Anthropic-API-Schlüssel für Anthropic oder OpenAI Codex-Browser-OAuth/Gerätecode-Authentifizierung für Codex-gestütztes OpenAI.
- Der Podman-Launcher mountet keine Host-CLI-Credential-Verzeichnisse wie
~/.claudeoder~/.codexin den Setup- oder Gateway-Container. - Vorhandene Host-CLI-Anmeldungen sind Komfortpfade auf demselben Host. Halten Sie bei Container-Installationen Provider-Authentifizierung im gemounteten
~/.openclaw-Zustand, den das Setup verwaltet.
Podman und Tailscale
Für HTTPS- oder Remote-Browser-Zugriff folgen Sie der Hauptdokumentation zu Tailscale. Podman-spezifischer Hinweis:- Belassen Sie den Podman-Publish-Host bei
127.0.0.1. - Bevorzugen Sie Host-verwaltetes
tailscale servegegenüberopenclaw gateway --tailscale serve. - Wenn unter macOS der Kontext für lokale Browser-Geräteauthentifizierung unzuverlässig ist, verwenden Sie Tailscale-Zugriff statt Ad-hoc-Workarounds mit lokalen Tunneln.
Systemd (Quadlet, optional)
Wenn Sie./scripts/podman/setup.sh --quadlet ausgeführt haben, installiert das Setup eine Quadlet-Datei unter:
- Start:
systemctl --user start openclaw.service - Stopp:
systemctl --user stop openclaw.service - Status:
systemctl --user status openclaw.service - Logs:
journalctl --user -u openclaw.service -f
Konfiguration, Env und Speicher
- Konfigurationsverzeichnis:
~/.openclaw - Workspace-Verzeichnis:
~/.openclaw/workspace - Token-Datei:
~/.openclaw/.env - Start-Helfer:
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
openclaw.json, agentenspezifische auth-profiles.json, Channel-/Provider-Zustand,
Sitzungen und Workspace einen Container-Austausch überstehen.
Das Podman-Setup setzt außerdem gateway.controlUi.allowedOrigins für 127.0.0.1 und localhost auf dem veröffentlichten Gateway-Port, damit das lokale Dashboard mit dem Nicht-loopback-Bind des Containers funktioniert.
Nützliche Env-Variablen für den manuellen Launcher:
OPENCLAW_PODMAN_CONTAINER— Container-Name (standardmäßigopenclaw)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— auszuführendes ImageOPENCLAW_PODMAN_GATEWAY_HOST_PORT— Host-Port, der auf Container18789gemappt wirdOPENCLAW_PODMAN_BRIDGE_HOST_PORT— Host-Port, der auf Container18790gemappt wirdOPENCLAW_PODMAN_PUBLISH_HOST— Host-Schnittstelle für veröffentlichte Ports; Standard ist127.0.0.1OPENCLAW_GATEWAY_BIND— Gateway-Bind-Modus innerhalb des Containers; Standard istlanOPENCLAW_PODMAN_USERNS—keep-id(Standard),autooderhost
~/.openclaw/.env, bevor Container-/Image-Standards finalisiert werden, sodass Sie diese dort persistent speichern können.
Wenn Sie ein nicht standardmäßiges OPENCLAW_CONFIG_DIR oder OPENCLAW_WORKSPACE_DIR verwenden, setzen Sie dieselben Variablen sowohl für ./scripts/podman/setup.sh als auch für spätere ./scripts/run-openclaw-podman.sh launch-Befehle. Der repo-lokale Launcher persistiert benutzerdefinierte Pfad-Overrides nicht über Shells hinweg.
Quadlet-Hinweis:
- Der generierte Quadlet-Dienst behält absichtlich eine feste, gehärtete Standardform bei: veröffentlichte Ports auf
127.0.0.1,--bind laninnerhalb des Containers undkeep-id-Benutzer-Namespace. - Er pinnt
OPENCLAW_NO_RESPAWN=1,Restart=on-failureundTimeoutStartSec=300. - Er veröffentlicht sowohl
127.0.0.1:18789:18789(Gateway) als auch127.0.0.1:18790:18790(Bridge). - Er liest
~/.openclaw/.envals Runtime-EnvironmentFilefür Werte wieOPENCLAW_GATEWAY_TOKEN, konsumiert jedoch nicht die Podman-spezifische Override-Allowlist des manuellen Launchers. - Wenn Sie benutzerdefinierte Publish-Ports, einen Publish-Host oder andere Container-Run-Flags benötigen, verwenden Sie den manuellen Launcher oder bearbeiten Sie
~/.config/containers/systemd/openclaw.containerdirekt und laden und starten Sie den Dienst anschließend neu.
Nützliche Befehle
- Container-Logs:
podman logs -f openclaw - Container stoppen:
podman stop openclaw - Container entfernen:
podman rm -f openclaw - Dashboard-URL über Host-CLI öffnen:
openclaw dashboard --no-open - Health/Status über Host-CLI:
openclaw gateway status --deep(RPC-Probe + zusätzlicher Dienstscan)
Fehlerbehebung
- Berechtigung verweigert (EACCES) bei Konfiguration oder Workspace: Der Container läuft standardmäßig mit
--userns=keep-idund--user <your uid>:<your gid>. Stellen Sie sicher, dass die Host-Konfigurations-/Workspace-Pfade Ihrem aktuellen Benutzer gehören. - Gateway-Start blockiert (fehlendes
gateway.mode=local): Stellen Sie sicher, dass~/.openclaw/openclaw.jsonexistiert undgateway.mode="local"setzt.scripts/podman/setup.sherstellt dies, falls es fehlt. - Container-CLI-Befehle treffen das falsche Ziel: Verwenden Sie explizit
openclaw --container <name> ...oder exportieren SieOPENCLAW_CONTAINER=<name>in Ihrer Shell. openclaw updateschlägt mit--containerfehl: Erwartet. Bauen/ziehen Sie das Image neu und starten Sie dann den Container oder den Quadlet-Dienst neu.- Quadlet-Dienst startet nicht: Führen Sie
systemctl --user daemon-reloadund dannsystemctl --user start openclaw.serviceaus. Auf headless Systemen benötigen Sie möglicherweise zusätzlichsudo loginctl enable-linger "$(whoami)". - SELinux blockiert Bind-Mounts: Lassen Sie das Standard-Mount-Verhalten unverändert; der Launcher fügt unter Linux automatisch
:Zhinzu, wenn SELinux enforcing oder permissive ist.