Execute o OpenClaw Gateway em um contêiner Podman sem root, gerenciado pelo seu usuário atual não root. O modelo 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.
- O Podman executa o contêiner do gateway.
- Sua CLI
openclawdo host é o plano de controle. - O estado persistente fica no host em
~/.openclawpor padrão. - O gerenciamento diário usa
openclaw --container <name> ...em vez desudo -u openclaw,podman execou um usuário de serviço separado.
Pré-requisitos
- Podman em modo sem root
- CLI do OpenClaw instalada no host
- Opcional:
systemd --userse você quiser inicialização automática gerenciada por Quadlet - Opcional:
sudosomente se você quiserloginctl enable-linger "$(whoami)"para persistência de inicialização em um host headless
Início rápido
Execute o onboarding dentro do contêiner
Execute
./scripts/run-openclaw-podman.sh launch setup e abra http://127.0.0.1:18789/../scripts/podman/setup.shcriaopenclaw:localno seu armazenamento Podman sem root por padrão, ou usaOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEse você definir um deles.- Ele cria
~/.openclaw/openclaw.jsoncomgateway.mode: "local"se estiver ausente. - Ele cria
~/.openclaw/.envcomOPENCLAW_GATEWAY_TOKENse estiver ausente. - Para inicializações manuais, o auxiliar lê apenas uma pequena lista permitida de chaves relacionadas ao Podman em
~/.openclaw/.enve passa variáveis de ambiente de runtime explícitas ao contêiner; ele não entrega o arquivo de ambiente completo ao Podman.
OPENCLAW_PODMAN_QUADLET=1.
Variáveis de ambiente opcionais de build/configuração:
OPENCLAW_IMAGEouOPENCLAW_PODMAN_IMAGE— usa uma imagem existente/baixada em vez de criaropenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— instala pacotes apt extras durante o build da imagemOPENCLAW_EXTENSIONS— pré-instala dependências de plugins durante o buildOPENCLAW_INSTALL_BROWSER— pré-instala Chromium e Xvfb para automação de navegador (defina como1para habilitar)
--userns=keep-id e monta por bind o estado do OpenClaw no contêiner.
Onboarding:
http://127.0.0.1:18789/ e use o token de ~/.openclaw/.env.
Padrão da CLI do host:
Podman e Tailscale
Para HTTPS ou acesso remoto pelo navegador, siga a documentação principal do Tailscale. Observação específica do Podman:- Mantenha o host de publicação do Podman em
127.0.0.1. - Prefira
tailscale servegerenciado pelo host em vez deopenclaw gateway --tailscale serve. - No macOS, se o contexto de autenticação de dispositivo do navegador local não for confiável, use acesso via Tailscale em vez de soluções alternativas de túnel local ad hoc.
Systemd (Quadlet, opcional)
Se você executou./scripts/podman/setup.sh --quadlet, a configuração instala um arquivo Quadlet em:
- Iniciar:
systemctl --user start openclaw.service - Parar:
systemctl --user stop openclaw.service - Status:
systemctl --user status openclaw.service - Logs:
journalctl --user -u openclaw.service -f
Configuração, ambiente e armazenamento
- Diretório de configuração:
~/.openclaw - Diretório do workspace:
~/.openclaw/workspace - Arquivo de token:
~/.openclaw/.env - Auxiliar de inicialização:
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
openclaw.json, auth-profiles.json por agente, estado de canal/provedor,
sessões e workspace sobrevivem à substituição do contêiner.
A configuração do Podman também semeia gateway.controlUi.allowedOrigins para 127.0.0.1 e localhost na porta publicada do gateway, para que o dashboard local funcione com o bind não loopback do contêiner.
Variáveis de ambiente úteis para o inicializador manual:
OPENCLAW_PODMAN_CONTAINER— nome do contêiner (openclawpor padrão)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— imagem a executarOPENCLAW_PODMAN_GATEWAY_HOST_PORT— porta do host mapeada para a porta18789do contêinerOPENCLAW_PODMAN_BRIDGE_HOST_PORT— porta do host mapeada para a porta18790do contêinerOPENCLAW_PODMAN_PUBLISH_HOST— interface do host para portas publicadas; o padrão é127.0.0.1OPENCLAW_GATEWAY_BIND— modo de bind do gateway dentro do contêiner; o padrão élanOPENCLAW_PODMAN_USERNS—keep-id(padrão),autoouhost
~/.openclaw/.env antes de finalizar os padrões de contêiner/imagem, então você pode persistir esses valores ali.
Se você usar um OPENCLAW_CONFIG_DIR ou OPENCLAW_WORKSPACE_DIR fora do padrão, defina as mesmas variáveis tanto para os comandos ./scripts/podman/setup.sh quanto para comandos posteriores ./scripts/run-openclaw-podman.sh launch. O inicializador local do repositório não persiste substituições de caminho personalizadas entre shells.
Observação sobre Quadlet:
- O serviço Quadlet gerado mantém intencionalmente um formato padrão fixo e reforçado: portas publicadas em
127.0.0.1,--bind landentro do contêiner e namespace de usuáriokeep-id. - Ele fixa
OPENCLAW_NO_RESPAWN=1,Restart=on-failureeTimeoutStartSec=300. - Ele publica tanto
127.0.0.1:18789:18789(gateway) quanto127.0.0.1:18790:18790(bridge). - Ele lê
~/.openclaw/.envcomo umEnvironmentFilede runtime para valores comoOPENCLAW_GATEWAY_TOKEN, mas não consome a lista permitida de substituições específicas do Podman do inicializador manual. - Se você precisar de portas de publicação personalizadas, host de publicação personalizado ou outras flags de execução de contêiner, use o inicializador manual ou edite
~/.config/containers/systemd/openclaw.containerdiretamente, depois recarregue e reinicie o serviço.
Comandos úteis
- Logs do contêiner:
podman logs -f openclaw - Parar contêiner:
podman stop openclaw - Remover contêiner:
podman rm -f openclaw - Abrir URL do dashboard pela CLI do host:
openclaw dashboard --no-open - Saúde/status via CLI do host:
openclaw gateway status --deep(sonda RPC + varredura extra de serviço)
Solução de problemas
- Permissão negada (EACCES) na configuração ou no workspace: O contêiner é executado com
--userns=keep-ide--user <your uid>:<your gid>por padrão. Garanta que os caminhos de configuração/workspace do host sejam propriedade do seu usuário atual. - Início do Gateway bloqueado (
gateway.mode=localausente): Garanta que~/.openclaw/openclaw.jsonexista e definagateway.mode="local".scripts/podman/setup.shcria isso se estiver ausente. - Comandos da CLI do contêiner atingem o destino errado: Use
openclaw --container <name> ...explicitamente, ou exporteOPENCLAW_CONTAINER=<name>no seu shell. openclaw updatefalha com--container: Esperado. Recrie/baixe a imagem e reinicie o contêiner ou o serviço Quadlet.- O serviço Quadlet não inicia: Execute
systemctl --user daemon-reloade depoissystemctl --user start openclaw.service. Em sistemas headless, talvez você também precise desudo loginctl enable-linger "$(whoami)". - SELinux bloqueia montagens bind: Deixe o comportamento padrão de montagem como está; o inicializador adiciona
:Zautomaticamente no Linux quando SELinux está em modo enforcing ou permissive.