Ejecuta el Gateway de OpenClaw en un contenedor Podman sin root, administrado por tu usuario actual no root. El modelo previsto es: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 ejecuta el contenedor del Gateway.
- Tu CLI
openclawdel host es el plano de control. - El estado persistente vive en el host bajo
~/.openclawde forma predeterminada. - La administración diaria usa
openclaw --container <name> ...en lugar desudo -u openclaw,podman execo un usuario de servicio separado.
Requisitos previos
- Podman en modo sin root
- CLI de OpenClaw instalada en el host
- Opcional:
systemd --usersi quieres inicio automático administrado por Quadlet - Opcional:
sudosolo si quieresloginctl enable-linger "$(whoami)"para persistencia al arrancar en un host sin interfaz gráfica
Inicio rápido
Ejecutar la incorporación dentro del contenedor
Ejecuta
./scripts/run-openclaw-podman.sh launch setup y luego abre http://127.0.0.1:18789/../scripts/podman/setup.shcompilaopenclaw:localen tu almacén Podman sin root de forma predeterminada, o usaOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEsi estableces una de ellas.- Crea
~/.openclaw/openclaw.jsoncongateway.mode: "local"si falta. - Crea
~/.openclaw/.envconOPENCLAW_GATEWAY_TOKENsi falta. - Para inicios manuales, el ayudante lee solo una pequeña lista permitida de claves relacionadas con Podman desde
~/.openclaw/.envy pasa variables de entorno de tiempo de ejecución explícitas al contenedor; no entrega el archivo de entorno completo a Podman.
OPENCLAW_PODMAN_QUADLET=1.
Variables de entorno opcionales de compilación/configuración:
OPENCLAW_IMAGEoOPENCLAW_PODMAN_IMAGE— usar una imagen existente/descargada en lugar de compilaropenclaw:localOPENCLAW_DOCKER_APT_PACKAGES— instalar paquetes apt adicionales durante la compilación de la imagenOPENCLAW_EXTENSIONS— preinstalar dependencias de plugins en tiempo de compilaciónOPENCLAW_INSTALL_BROWSER— preinstalar Chromium y Xvfb para automatización de navegador (establece en1para habilitar)
--userns=keep-id y monta mediante bind tu estado de OpenClaw en el contenedor.
Incorporación:
http://127.0.0.1:18789/ y usa el token de ~/.openclaw/.env.
Valor predeterminado de la CLI del host:
Podman y Tailscale
Para HTTPS o acceso remoto desde navegador, sigue la documentación principal de Tailscale. Nota específica de Podman:- Mantén el host de publicación de Podman en
127.0.0.1. - Prefiere
tailscale serveadministrado por el host en lugar deopenclaw gateway --tailscale serve. - En macOS, si el contexto de autenticación de dispositivo del navegador local no es fiable, usa acceso por Tailscale en lugar de soluciones improvisadas de túnel local.
Systemd (Quadlet, opcional)
Si ejecutaste./scripts/podman/setup.sh --quadlet, la configuración instala un archivo Quadlet en:
- Iniciar:
systemctl --user start openclaw.service - Detener:
systemctl --user stop openclaw.service - Estado:
systemctl --user status openclaw.service - Registros:
journalctl --user -u openclaw.service -f
Configuración, entorno y almacenamiento
- Directorio de configuración:
~/.openclaw - Directorio de espacio de trabajo:
~/.openclaw/workspace - Archivo de token:
~/.openclaw/.env - Ayudante de inicio:
./scripts/run-openclaw-podman.sh
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
openclaw.json, los auth-profiles.json por agente, el estado de canal/proveedor,
las sesiones y el espacio de trabajo sobreviven al reemplazo del contenedor.
La configuración de Podman también inicializa gateway.controlUi.allowedOrigins para 127.0.0.1 y localhost en el puerto publicado del Gateway, de modo que el panel local funcione con el enlace no loopback del contenedor.
Variables de entorno útiles para el iniciador manual:
OPENCLAW_PODMAN_CONTAINER— nombre del contenedor (openclawde forma predeterminada)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE— imagen que se ejecutaráOPENCLAW_PODMAN_GATEWAY_HOST_PORT— puerto del host asignado al contenedor18789OPENCLAW_PODMAN_BRIDGE_HOST_PORT— puerto del host asignado al contenedor18790OPENCLAW_PODMAN_PUBLISH_HOST— interfaz del host para puertos publicados; el valor predeterminado es127.0.0.1OPENCLAW_GATEWAY_BIND— modo de enlace del Gateway dentro del contenedor; el valor predeterminado eslanOPENCLAW_PODMAN_USERNS—keep-id(predeterminado),autoohost
~/.openclaw/.env antes de finalizar los valores predeterminados de contenedor/imagen, así que puedes conservarlos allí.
Si usas un OPENCLAW_CONFIG_DIR o OPENCLAW_WORKSPACE_DIR no predeterminado, establece las mismas variables tanto para ./scripts/podman/setup.sh como para los comandos posteriores ./scripts/run-openclaw-podman.sh launch. El iniciador local del repositorio no conserva anulaciones de rutas personalizadas entre shells.
Nota de Quadlet:
- El servicio Quadlet generado mantiene intencionalmente una forma predeterminada fija y reforzada: puertos publicados en
127.0.0.1,--bind landentro del contenedor y espacio de nombres de usuariokeep-id. - Fija
OPENCLAW_NO_RESPAWN=1,Restart=on-failureyTimeoutStartSec=300. - Publica tanto
127.0.0.1:18789:18789(Gateway) como127.0.0.1:18790:18790(puente). - Lee
~/.openclaw/.envcomo unEnvironmentFilede tiempo de ejecución para valores comoOPENCLAW_GATEWAY_TOKEN, pero no consume la lista permitida de anulaciones específicas de Podman del iniciador manual. - Si necesitas puertos de publicación personalizados, host de publicación u otras marcas de ejecución de contenedor, usa el iniciador manual o edita
~/.config/containers/systemd/openclaw.containerdirectamente, luego recarga y reinicia el servicio.
Comandos útiles
- Registros del contenedor:
podman logs -f openclaw - Detener contenedor:
podman stop openclaw - Eliminar contenedor:
podman rm -f openclaw - Abrir URL del panel desde la CLI del host:
openclaw dashboard --no-open - Salud/estado mediante la CLI del host:
openclaw gateway status --deep(sondeo RPC + escaneo de servicio adicional)
Solución de problemas
- Permiso denegado (EACCES) en la configuración o el espacio de trabajo: El contenedor se ejecuta con
--userns=keep-idy--user <your uid>:<your gid>de forma predeterminada. Asegúrate de que las rutas de configuración/espacio de trabajo del host pertenezcan a tu usuario actual. - Inicio del Gateway bloqueado (falta
gateway.mode=local): Asegúrate de que~/.openclaw/openclaw.jsonexista y establezcagateway.mode="local".scripts/podman/setup.shlo crea si falta. - Los comandos de la CLI del contenedor llegan al destino equivocado: Usa
openclaw --container <name> ...explícitamente, o exportaOPENCLAW_CONTAINER=<name>en tu shell. openclaw updatefalla con--container: Esperado. Recompila/descarga la imagen y luego reinicia el contenedor o el servicio Quadlet.- El servicio Quadlet no inicia: Ejecuta
systemctl --user daemon-reloady luegosystemctl --user start openclaw.service. En sistemas sin interfaz gráfica también podrías necesitarsudo loginctl enable-linger "$(whoami)". - SELinux bloquea los montajes bind: Deja intacto el comportamiento de montaje predeterminado; el iniciador agrega automáticamente
:Zen Linux cuando SELinux está en modo enforcing o permissive.