- Podman esegue il container del gateway.
- La CLI
openclawdell’host è il piano di controllo. - Lo stato persistente risiede sull’host in
~/.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
- Opzionale:
systemd --userse vuoi l’avvio automatico gestito da Quadlet - Opzionale:
sudosolo se vuoiloginctl enable-linger "$(whoami)"per la persistenza all’avvio su un host headless
Avvio rapido
Eseguire l'onboarding dentro il container
Esegui
./scripts/run-openclaw-podman.sh launch setup, quindi apri http://127.0.0.1:18789/../scripts/podman/setup.shcompilaopenclaw:localnel tuo store Podman rootless per impostazione predefinita, 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 variabili di ambiente di runtime esplicite al container; non passa l’intero file env a Podman.
OPENCLAW_PODMAN_QUADLET=1.
Variabili env opzionali di build/configurazione:
OPENCLAW_IMAGEoOPENCLAW_PODMAN_IMAGE— usa un’immagine esistente/scaricata invece di compilareopenclaw:localOPENCLAW_IMAGE_APT_PACKAGES— installa pacchetti apt aggiuntivi durante la build dell’immagine (accetta anche il legacyOPENCLAW_DOCKER_APT_PACKAGES)OPENCLAW_IMAGE_PIP_PACKAGES— installa pacchetti Python aggiuntivi durante la build dell’immagine; blocca le versioni e usa solo indici di pacchetti di cui ti fidiOPENCLAW_EXTENSIONS— preinstalla le dipendenze dei Plugin in fase di buildOPENCLAW_INSTALL_BROWSER— preinstalla Chromium e Xvfb per l’automazione del browser (imposta a1per abilitare)
--userns=keep-id e monta in bind lo stato OpenClaw nel container.
Onboarding:
http://127.0.0.1:18789/ e usa il token da ~/.openclaw/.env.
Autenticazione dei modelli in Podman:
- Usa l’autenticazione gestita da OpenClaw durante la configurazione: chiavi API Anthropic per Anthropic, oppure autenticazione OAuth/device-code da browser OpenAI Codex per OpenAI basato su Codex.
- Il launcher Podman non monta le directory delle credenziali della CLI dell’host, come
~/.claudeo~/.codex, nel container di configurazione o del gateway. - Gli accessi CLI esistenti sull’host sono percorsi di comodità sullo stesso host. Per le installazioni in container, mantieni l’autenticazione del provider nello stato montato
~/.openclawgestito dalla configurazione.
Podman e Tailscale
Per HTTPS o accesso remoto dal browser, 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 rispetto aopenclaw gateway --tailscale serve. - Su macOS, se il contesto di autenticazione del dispositivo del browser locale non è affidabile, usa l’accesso Tailscale invece di workaround locali ad hoc con tunnel.
Systemd (Quadlet, opzionale)
Se hai eseguito./scripts/podman/setup.sh --quadlet, la configurazione installa un file Quadlet in:
- Avvia:
systemctl --user start openclaw.service - Arresta:
systemctl --user stop openclaw.service - Stato:
systemctl --user status openclaw.service - Log:
journalctl --user -u openclaw.service -f
Configurazione, env e archiviazione
- Directory di configurazione:
~/.openclaw - Directory del workspace:
~/.openclaw/workspace - File del 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 di canali/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, così la dashboard locale funziona con il bind non local loopback del container.
Variabili env 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 alla porta container18789OPENCLAW_PODMAN_BRIDGE_HOST_PORT— porta host mappata alla porta container18790OPENCLAW_PODMAN_PUBLISH_HOST— interfaccia host per le porte pubblicate; il valore predefinito è127.0.0.1OPENCLAW_GATEWAY_BIND— modalità di bind del gateway dentro il container; il valore predefinito èlanOPENCLAW_PODMAN_USERNS—keep-id(predefinito),autoohost
~/.openclaw/.env prima di finalizzare i valori predefiniti di container/immagine, quindi puoi persisterli lì.
Se usi un valore non predefinito di OPENCLAW_CONFIG_DIR o OPENCLAW_WORKSPACE_DIR, 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 repository non persiste gli override di percorso personalizzati tra shell.
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 namespace utentekeep-id. - Imposta
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/.envcomeEnvironmentFiledi runtime per valori comeOPENCLAW_GATEWAY_TOKEN, ma non consuma la allowlist di override specifici per Podman del launcher manuale. - Se ti servono porte di pubblicazione, host di pubblicazione o altri flag di esecuzione del container personalizzati, usa il launcher manuale o 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 - Salute/stato tramite CLI host:
openclaw gateway status --deep(probe RPC + scansione aggiuntiva del servizio)
Risoluzione dei problemi
- Permesso negato (EACCES) su configurazione o workspace: Il container viene eseguito con
--userns=keep-ide--user <your uid>:<your gid>per impostazione predefinita. Assicurati che i percorsi di configurazione/workspace sull’host appartengano al tuo utente corrente. - Avvio del Gateway bloccato (
gateway.mode=localmancante): Assicurati che~/.openclaw/openclaw.jsonesista e impostigateway.mode="local".scripts/podman/setup.shlo crea se manca. - I comandi CLI del container raggiungono il target sbagliato: Usa esplicitamente
openclaw --container <name> ..., oppure esportaOPENCLAW_CONTAINER=<name>nella tua shell. openclaw updatefallisce con--container: Previsto. Ricompila/scarica l’immagine, quindi riavvia il container o il servizio Quadlet.- Il servizio Quadlet non si avvia: Esegui
systemctl --user daemon-reload, quindisystemctl --user start openclaw.service. Sui sistemi headless potresti anche aver bisogno disudo loginctl enable-linger "$(whoami)". - SELinux blocca i mount bind: Lascia invariato il comportamento di mount predefinito; il launcher aggiunge automaticamente
:Zsu Linux quando SELinux è in modalità enforcing o permissive.