- Podman esegue il container del Gateway.
- La CLI
openclawdell’host funge da piano di controllo. - Per impostazione predefinita, lo stato persistente risiede sull’host in
~/.openclaw. - La gestione quotidiana utilizza
openclaw --container <name> ...anzichésudo -u openclaw,podman execo un utente di servizio separato.
Prerequisiti
- Podman in modalità senza privilegi di root
- CLI OpenClaw installata sull’host
- Facoltativo:
systemd --userse desideri l’avvio automatico gestito da Quadlet - Facoltativo:
sudosolo se desideri usareloginctl enable-linger "$(whoami)"per mantenere il servizio attivo all’avvio su un host headless
Avvio rapido
1
Configurazione iniziale
Dalla radice del repository, esegui Oppure imposta
./scripts/podman/setup.sh.Questo comando compila openclaw:local nell’archivio Podman senza privilegi di root (oppure scarica OPENCLAW_IMAGE / OPENCLAW_PODMAN_IMAGE, se impostata), crea ~/.openclaw/openclaw.json con gateway.mode: "local" se non esiste e crea ~/.openclaw/.env con un OPENCLAW_GATEWAY_TOKEN generato se non esiste.Variabili di ambiente facoltative per la compilazione:In alternativa, per una configurazione gestita da Quadlet (solo Linux con servizi utente systemd):
OPENCLAW_PODMAN_QUADLET=1.2
Avvia il container del Gateway
--userns=keep-id e monta tramite bind lo stato di OpenClaw nel container.3
Esegui la configurazione iniziale nel container
http://127.0.0.1:18789/ e usa il token presente in ~/.openclaw/.env.Autenticazione del modello: durante la configurazione usa l’autenticazione gestita da OpenClaw (chiavi API Anthropic oppure autenticazione OAuth tramite browser/codice dispositivo di OpenAI Codex per OpenAI basato su Codex). Il programma di avvio Podman non monta nel container di configurazione o del Gateway le directory delle credenziali delle CLI dell’host, come ~/.claude o ~/.codex. Gli accessi esistenti alle CLI dell’host sono soltanto percorsi pratici sullo stesso host; per le installazioni in container, conserva l’autenticazione dei provider nello stato ~/.openclaw montato e gestito dalla configurazione.4
Gestisci il container in esecuzione dalla CLI dell'host
openclaw vengono quindi eseguiti automaticamente all’interno del container:~/.openclaw/.env soltanto un piccolo elenco consentito di chiavi relative a Podman e passa al container variabili di ambiente di runtime esplicite; non fornisce a Podman l’intero file di ambiente.
Podman e Tailscale
Per l’accesso HTTPS o remoto tramite browser, segui la documentazione principale di Tailscale. Note specifiche per Podman:- Mantieni l’host di pubblicazione Podman su
127.0.0.1. - Preferisci
tailscale servegestito dall’host aopenclaw gateway --tailscale serve. - Su macOS, se il contesto locale di autenticazione del dispositivo tramite browser non è affidabile, utilizza l’accesso tramite Tailscale anziché soluzioni temporanee basate su tunnel locali.
Systemd (Quadlet, facoltativo)
Se hai eseguito./scripts/podman/setup.sh --quadlet, la configurazione installa un file Quadlet in ~/.config/containers/systemd/openclaw.container.
Dopo aver modificato il file Quadlet:
127.0.0.1 (18789 per il Gateway, 18790 per il bridge), --bind lan all’interno del container, spazio dei nomi utente keep-id, OPENCLAW_NO_RESPAWN=1, Restart=on-failure e TimeoutStartSec=300. Legge ~/.openclaw/.env come EnvironmentFile di runtime per valori come OPENCLAW_GATEWAY_TOKEN, ma non utilizza l’elenco consentito di sostituzioni specifiche di Podman del programma di avvio manuale. Per porte di pubblicazione personalizzate, un host di pubblicazione personalizzato o altri flag di esecuzione del container, usa invece il programma di avvio manuale oppure modifica direttamente ~/.config/containers/systemd/openclaw.container, quindi ricarica e riavvia il servizio.
Configurazione, ambiente e archiviazione
- Directory di configurazione:
~/.openclaw - Directory dell’area di lavoro:
~/.openclaw/workspace - File del token:
~/.openclaw/.env - Script ausiliario di avvio:
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR -> /home/node/.openclaw, OPENCLAW_WORKSPACE_DIR -> /home/node/.openclaw/workspace. Per impostazione predefinita, si tratta di directory dell’host e non di stato anonimo del container; pertanto openclaw.json, i file auth-profiles.json dei singoli agenti, lo stato dei canali/provider, le sessioni e l’area di lavoro persistono dopo la sostituzione del container. La configurazione inizializza inoltre gateway.controlUi.allowedOrigins per 127.0.0.1 e localhost sulla porta pubblicata del Gateway, affinché la dashboard locale funzioni con il binding non-local loopback del container.
Variabili di ambiente utili per il programma di avvio manuale (salvale in ~/.openclaw/.env; il programma di avvio legge questo file prima di determinare le impostazioni predefinite definitive del container e dell’immagine):
Se utilizzi valori non predefiniti per
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 programma di avvio locale del repository non mantiene le sostituzioni personalizzate dei percorsi tra una shell e l’altra.
Aggiornamento delle immagini
Dopo aver ricompilato o scaricato una nuova immagine, riavvia il container o il servizio Quadlet. Al primo avvio di una nuova versione di OpenClaw, il Gateway esegue riparazioni sicure dello stato e dei plugin prima di segnalare di essere pronto. Se il Gateway termina anziché diventare pronto, esegui una volta la stessa immagine conopenclaw doctor --fix sullo stesso stato/configurazione montato, quindi riavvia normalmente il Gateway:
,Z a entrambi i montaggi bind se Podman blocca l’accesso allo stato montato.
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 dell’host:
openclaw dashboard --no-open - Integrità/stato tramite la CLI dell’host:
openclaw gateway status --deep(sonda RPC + ulteriore scansione dei servizi)
Risoluzione dei problemi
- Permesso negato (EACCES) per la configurazione o l’area di lavoro: Per impostazione predefinita, il container viene eseguito con
--userns=keep-ide--user <il tuo uid>:<il tuo gid>. Assicurati che i percorsi di configurazione/area di lavoro sull’host appartengano all’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. - Il container si riavvia dopo l’aggiornamento di un’immagine: Esegui il comando monouso
openclaw doctor --fixdescritto in Aggiornamento delle immagini, quindi avvia nuovamente il Gateway. - I comandi della CLI del container raggiungono la destinazione errata: Usa esplicitamente
openclaw --container <name> ...oppure esportaOPENCLAW_CONTAINER=<name>nella shell. openclaw updatenon riesce 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 potrebbe essere necessario anche eseguiresudo loginctl enable-linger "$(whoami)". - SELinux blocca i montaggi bind: Non modificare il comportamento predefinito dei montaggi; il programma di avvio aggiunge automaticamente
:Zsu Linux quando SELinux è in modalità enforcing o permissive.