Podman
Führen Sie das OpenClaw-Gateway in einem rootlosen Podman-Container aus, der von Ihrem aktuellen Nicht-Root-Benutzer verwaltet wird. Das vorgesehene Modell ist:- Podman führt den Gateway-Container aus.
- Ihre
openclaw-CLI auf dem Host ist die Kontrollebene. - Persistenter Status liegt standardmäßig auf dem Host unter
~/.openclaw. - Die tägliche Verwaltung verwendet
openclaw --container <name> ...stattsudo -u openclaw,podman execoder eines separaten Service-Benutzers.
Voraussetzungen
- Podman im rootlosen Modus
- OpenClaw CLI auf dem Host installiert
- Optional:
systemd --user, wenn Sie einen automatisch startenden Dienst mit Quadlet möchten - Optional:
sudo, nur wenn Sieloginctl enable-linger "$(whoami)"für Persistenz beim Booten auf einem Headless-Host möchten
Schnellstart
Den Gateway-Container starten
Starten Sie den Container mit
./scripts/run-openclaw-podman.sh launch.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 rootlosen Podman-Store oder verwendetOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGE, wenn Sie eines gesetzt haben.- Es erstellt
~/.openclaw/openclaw.jsonmitgateway.mode: "local", falls diese Datei fehlt. - Es erstellt
~/.openclaw/.envmitOPENCLAW_GATEWAY_TOKEN, falls diese Datei fehlt. - Für manuelle Starts liest der Helfer nur eine kleine Allowlist von Podman-bezogenen Schlüsseln aus
~/.openclaw/.envund übergibt explizite Laufzeit-Umgebungsvariablen an den Container; die vollständige Env-Datei wird nicht an Podman weitergereicht.
OPENCLAW_PODMAN_QUADLET=1 setzen.
Optionale Build-/Einrichtungs-Umgebungsvariablen:
OPENCLAW_IMAGEoderOPENCLAW_PODMAN_IMAGE— ein vorhandenes/gepulltes Image verwenden, stattopenclaw:localzu bauenOPENCLAW_DOCKER_APT_PACKAGES— zusätzliche apt-Pakete während des Image-Builds installierenOPENCLAW_EXTENSIONS— Abhängigkeiten für Erweiterungen zur Build-Zeit vorinstallieren
--userns=keep-id und bind-mountet Ihren OpenClaw-Status in den Container.
Onboarding:
http://127.0.0.1:18789/ und verwenden Sie das Token aus ~/.openclaw/.env.
Standard für die Host-CLI:
Podman + Tailscale
Für HTTPS oder Remote-Browserzugriff folgen Sie der allgemeinen Tailscale-Dokumentation. Podman-spezifischer Hinweis:- Behalten Sie den Publish-Host von Podman auf
127.0.0.1. - Bevorzugen Sie hostverwaltetes
tailscale servegegenüberopenclaw gateway --tailscale serve. - Wenn unter macOS der lokale Browserkontext für Geräteauthentifizierung unzuverlässig ist, verwenden Sie Tailscale-Zugriff statt ad hoc lokaler Tunnel-Workarounds.
Systemd (Quadlet, optional)
Wenn Sie./scripts/podman/setup.sh --quadlet ausgeführt haben, installiert die Einrichtung eine Quadlet-Datei unter:
- Starten:
systemctl --user start openclaw.service - Stoppen:
systemctl --user stop openclaw.service - Status:
systemctl --user status openclaw.service - Logs:
journalctl --user -u openclaw.service -f
Konfiguration, Umgebung 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, auth-profiles.json pro Agent, Kanal-/Provider-Status,
Sitzungen und Workspace den Austausch von Containern.
Die Podman-Einrichtung 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 der Nicht-Loopback-Bindung des Containers funktioniert.
Nützliche Umgebungsvariablen für den manuellen Starter:
OPENCLAW_PODMAN_CONTAINER— Container-Name (standardmäßigopenclaw)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— auszuführendes ImageOPENCLAW_PODMAN_GATEWAY_HOST_PORT— Host-Port, der auf18789im Container abgebildet wirdOPENCLAW_PODMAN_BRIDGE_HOST_PORT— Host-Port, der auf18790im Container abgebildet wirdOPENCLAW_PODMAN_PUBLISH_HOST— Host-Schnittstelle für veröffentlichte Ports; Standard ist127.0.0.1OPENCLAW_GATEWAY_BIND— Gateway-Bind-Modus im Container; Standard istlanOPENCLAW_PODMAN_USERNS—keep-id(Standard),autooderhost
~/.openclaw/.env, bevor Container-/Image-Standardwerte festgelegt werden. Sie können diese Werte also dort dauerhaft speichern.
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 Befehle ./scripts/run-openclaw-podman.sh launch. Der repo-lokale Starter speichert benutzerdefinierte Pfadüberschreibungen nicht über Shells hinweg.
Hinweis zu Quadlet:
- Der generierte Quadlet-Dienst behält absichtlich eine feste, gehärtete Standardform bei: veröffentlichte Ports auf
127.0.0.1,--bind lanim Container und den User-Namespacekeep-id. - Er fixiert
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 Laufzeit-EnvironmentFilefür Werte wieOPENCLAW_GATEWAY_TOKEN, verwendet aber nicht die Podman-spezifische Override-Allowlist des manuellen Starters. - Wenn Sie benutzerdefinierte Publish-Ports, einen anderen Publish-Host oder andere Container-Run-Flags benötigen, verwenden Sie den manuellen Starter oder bearbeiten Sie
~/.config/containers/systemd/openclaw.containerdirekt und laden/starten Sie den Dienst dann neu.
Nützliche Befehle
- Container-Logs:
podman logs -f openclaw - Container stoppen:
podman stop openclaw - Container entfernen:
podman rm -f openclaw - Dashboard-URL über die Host-CLI öffnen:
openclaw dashboard --no-open - Integrität/Status über die Host-CLI:
openclaw gateway status --deep(RPC-Probe + zusätzlicher Dienst-Scan)
Fehlerbehebung
- Permission denied (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-Pfade für Konfiguration/Workspace 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. - CLI-Befehle im Container 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/pullen 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 auchsudo loginctl enable-linger "$(whoami)". - SELinux blockiert Bind-Mounts: Belassen Sie das Standardverhalten der Mounts; der Starter fügt unter Linux automatisch
:Zhinzu, wenn SELinux im enforcing- oder permissive-Modus ist.