Esegui OpenClaw Gateway in un container Podman rootless, gestito dal tuo attuale utente non root. Il modello previsto è:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Podman esegue il container del Gateway.
- La
openclawCLI dell’host è il piano di controllo. - Per impostazione predefinita, lo stato persistente risiede sull’host in
~/.openclaw. - La gestione quotidiana usa
openclaw --container <name> ...invece disudo -u openclaw,podman execo un utente di servizio separato.
Prerequisiti
- Podman in modalità rootless
- OpenClaw CLI installata sull’host
- Facoltativo:
systemd --userse vuoi l’avvio automatico gestito da Quadlet - Facoltativo:
sudosolo se vuoiloginctl enable-linger "$(whoami)"per la persistenza all’avvio 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.shcreaopenclaw:localnel tuo store Podman rootless per impostazione predefinita, oppure usaOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEse ne imposti una.- 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 al container variabili env di runtime esplicite; non passa l’intero file env a Podman.
OPENCLAW_PODMAN_QUADLET=1.
Variabili env facoltative per build/configurazione:
OPENCLAW_IMAGEoOPENCLAW_PODMAN_IMAGE— usa un’immagine esistente/scaricata invece di crearereopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— installa pacchetti apt aggiuntivi durante la build dell’immagineOPENCLAW_EXTENSIONS— preinstalla le dipendenze dei plugin al momento della buildOPENCLAW_INSTALL_BROWSER— preinstalla Chromium e Xvfb per l’automazione del browser (imposta a1per abilitare)
--userns=keep-id e monta in bind lo stato di OpenClaw nel container.
Onboarding:
http://127.0.0.1:18789/ e usa il token da ~/.openclaw/.env.
Predefinito della CLI host:
Podman e Tailscale
Per HTTPS o accesso remoto da 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 dispositivo del browser locale è inaffidabile, usa l’accesso tramite Tailscale invece di soluzioni alternative ad hoc 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 archiviazione
- Directory di configurazione:
~/.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, i file auth-profiles.json per agente, lo stato di canali/provider,
le sessioni e il 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 renderli persistenti 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 persiste override di percorsi personalizzati tra shell.
Nota su Quadlet:
- Il servizio Quadlet generato mantiene intenzionalmente una forma predefinita fissa e rafforzata: 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 di Podman del launcher manuale. - Se ti servono porte di pubblicazione personalizzate, un host di pubblicazione personalizzato o altri flag di esecuzione del container, 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 - Integrità/stato tramite CLI host:
openclaw gateway status --deep(probe RPC + scansione extra 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 host di configurazione/workspace siano di proprietà del tuo utente attuale. - 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 updatenon riesce con--container: Previsto. Ricrea/scarica l’immagine, quindi riavvia il container o il servizio Quadlet.- Il servizio Quadlet non si avvia: Esegui
systemctl --user daemon-reload, poisystemctl --user start openclaw.service. Sui sistemi headless potrebbe servirti anchesudo loginctl enable-linger "$(whoami)". - SELinux blocca i mount bind: Lascia invariato il comportamento di mount predefinito; il launcher aggiunge automaticamente
:Zsu Linux quando SELinux è enforcing o permissive.