Podman
Esegui OpenClaw Gateway in un container Podman rootless, gestito dal tuo attuale utente non root. Il modello previsto è:- Podman esegue il container del gateway.
- La tua CLI
openclawsull’host è il control plane. - Lo stato persistente vive sull’host sotto
~/.openclawper impostazione predefinita. - La gestione quotidiana usa
openclaw --container <name> ...invece disudo -u openclaw,podman execo un utente di servizio separato.
Prerequisiti
- Podman in modalità rootless
- CLI OpenClaw installata sull’host
- Facoltativo:
systemd --userse vuoi l’avvio automatico gestito da Quadlet - Facoltativo:
sudosolo se vuoiloginctl enable-linger "$(whoami)"per la persistenza al boot su un host headless
Avvio rapido
Esegui l'onboarding dentro il container
Esegui
./scripts/run-openclaw-podman.sh launch setup, poi apri http://127.0.0.1:18789/../scripts/podman/setup.shcostruisce per impostazione predefinitaopenclaw:localnel tuo store Podman rootless, oppure usaOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEse ne imposti uno.- Crea
~/.openclaw/openclaw.jsoncongateway.mode: "local"se manca. - Crea
~/.openclaw/.envconOPENCLAW_GATEWAY_TOKENse manca. - Per gli avvii manuali, l’helper legge solo una piccola allowlist di chiavi relative a Podman da
~/.openclaw/.enve passa env var runtime esplicite al container; non passa l’intero file env a Podman.
OPENCLAW_PODMAN_QUADLET=1.
Env var opzionali di build/configurazione:
OPENCLAW_IMAGEoOPENCLAW_PODMAN_IMAGE— usa un’immagine esistente/scaricata invece di costruireopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— installa pacchetti apt aggiuntivi durante la build dell’immagineOPENCLAW_EXTENSIONS— preinstalla le dipendenze delle estensioni al momento della build
--userns=keep-id ed esegue il bind-mount dello stato OpenClaw nel container.
Onboarding:
http://127.0.0.1:18789/ e usa il token da ~/.openclaw/.env.
Predefinito per la CLI host:
Podman + Tailscale
Per HTTPS o accesso browser remoto, segui la documentazione principale di Tailscale. Nota specifica per Podman:- Mantieni l’host di pubblicazione Podman su
127.0.0.1. - Preferisci
tailscale servegestito dall’host invece diopenclaw gateway --tailscale serve. - Su macOS, se il contesto di autenticazione del dispositivo del browser locale non è affidabile, usa l’accesso Tailscale invece di workaround improvvisati con tunnel locali.
Systemd (Quadlet, facoltativo)
Se hai eseguito./scripts/podman/setup.sh --quadlet, la configurazione installa un file Quadlet in:
- Avvio:
systemctl --user start openclaw.service - Arresto:
systemctl --user stop openclaw.service - Stato:
systemctl --user status openclaw.service - Log:
journalctl --user -u openclaw.service -f
Configurazione, env e storage
- Directory config:
~/.openclaw - Directory workspace:
~/.openclaw/workspace - File token:
~/.openclaw/.env - Helper di avvio:
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
openclaw.json, auth-profiles.json per agente, stato del canale/provider,
sessioni e workspace sopravvivono alla sostituzione del container.
La configurazione Podman inizializza anche gateway.controlUi.allowedOrigins per 127.0.0.1 e localhost sulla porta gateway pubblicata, in modo che la dashboard locale funzioni con il bind non loopback del container.
Env var utili per il launcher manuale:
OPENCLAW_PODMAN_CONTAINER— nome del container (openclawper impostazione predefinita)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— immagine da eseguireOPENCLAW_PODMAN_GATEWAY_HOST_PORT— porta host mappata sul18789del containerOPENCLAW_PODMAN_BRIDGE_HOST_PORT— porta host mappata sul18790del containerOPENCLAW_PODMAN_PUBLISH_HOST— interfaccia host per le porte pubblicate; il valore predefinito è127.0.0.1OPENCLAW_GATEWAY_BIND— modalità bind del gateway all’interno del container; il valore predefinito èlanOPENCLAW_PODMAN_USERNS—keep-id(predefinito),autoohost
~/.openclaw/.env prima di finalizzare i valori predefiniti di container/immagine, così puoi conservarli lì.
Se usi un OPENCLAW_CONFIG_DIR o OPENCLAW_WORKSPACE_DIR non predefinito, imposta le stesse variabili sia per ./scripts/podman/setup.sh sia per i successivi comandi ./scripts/run-openclaw-podman.sh launch. Il launcher locale del repo non mantiene override di percorso personalizzati tra shell diverse.
Nota su Quadlet:
- Il servizio Quadlet generato mantiene intenzionalmente una forma predefinita fissa e rinforzata: porte pubblicate su
127.0.0.1,--bind landentro il container e user namespacekeep-id. - Fissa
OPENCLAW_NO_RESPAWN=1,Restart=on-failureeTimeoutStartSec=300. - Pubblica sia
127.0.0.1:18789:18789(gateway) sia127.0.0.1:18790:18790(bridge). - Legge
~/.openclaw/.envcomeEnvironmentFileruntime per valori comeOPENCLAW_GATEWAY_TOKEN, ma non usa la allowlist di override specifici Podman del launcher manuale. - Se hai bisogno di porte di pubblicazione personalizzate, host di pubblicazione o altri flag
container-run, usa il launcher manuale oppure modifica direttamente~/.config/containers/systemd/openclaw.container, quindi ricarica e riavvia il servizio.
Comandi utili
- Log del container:
podman logs -f openclaw - Arresta il container:
podman stop openclaw - Rimuovi il container:
podman rm -f openclaw - Apri l’URL della dashboard dalla CLI host:
openclaw dashboard --no-open - Stato/salute tramite CLI host:
openclaw gateway status --deep(probe RPC + scansione di servizio aggiuntiva)
Risoluzione dei problemi
- Permission denied (EACCES) su config o workspace: il container viene eseguito per impostazione predefinita con
--userns=keep-ide--user <your uid>:<your gid>. Assicurati che i percorsi config/workspace host siano di proprietà del tuo utente corrente. - Avvio del gateway bloccato (manca
gateway.mode=local): assicurati che~/.openclaw/openclaw.jsonesista e impostigateway.mode="local".scripts/podman/setup.shlo crea se manca. - I comandi CLI del container colpiscono il target sbagliato: usa esplicitamente
openclaw --container <name> ..., oppure esportaOPENCLAW_CONTAINER=<name>nella tua shell. openclaw updatefallisce con--container: previsto. Ricostruisci/scarica l’immagine, poi riavvia il container o il servizio Quadlet.- Il servizio Quadlet non si avvia: esegui
systemctl --user daemon-reload, poisystemctl --user start openclaw.service. Su sistemi headless potrebbe servirti anchesudo loginctl enable-linger "$(whoami)". - SELinux blocca i bind mount: lascia invariato il comportamento di mount predefinito; il launcher aggiunge automaticamente
:Zsu Linux quando SELinux è in modalità enforcing o permissive.