Docker
Docker (opcional)
Sección titulada «Docker (opcional)»Docker es opcional. Úselo solo si desea una puerta de enlace contenerizada o para validar el flujo de Docker.
¿Es Docker adecuado para mí?
Sección titulada «¿Es Docker adecuado para mí?»- Sí: desea un entorno de puerta de enlace aislado y desechable o ejecutar OpenClaw en un host sin instalaciones locales.
- No: estás ejecutándolo en tu propia máquina y solo quieres el bucle de desarrollo más rápido. Utiliza el flujo de instalación normal.
- Nota sobre el aislamiento: el aislamiento de agentes también utiliza Docker, pero no requiere que toda la puerta de enlace se ejecute en Docker. Consulte Aislamiento.
Requisitos previos
Sección titulada «Requisitos previos»- Docker Desktop (o Docker Engine) + Docker Compose v2
- Al menos 2 GB de RAM para la compilación de la imagen (
pnpm installpuede terminar por OOM en hosts con 1 GB con el código de salida 137) - Suficiente espacio en disco para las imágenes y los registros
- Si se ejecuta en un VPS/host público, revise
Endurecimiento de seguridad para la exposición a la red,
especialmente la política de
DOCKER-USERdel firewall de Docker.
Pasarela en contenedor
Sección titulada «Pasarela en contenedor»Construir la imagen
Desde la raíz del repositorio, ejecute el script de configuración:
Ventana de terminal ./scripts/docker/setup.shEsto construye la imagen de la puerta de enlace localmente. Para utilizar una imagen preconstruida en su lugar:
Ventana de terminal export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"./scripts/docker/setup.shLas imágenes preconstruidas se publican en el GitHub Container Registry. Etiquetas comunes:
main,latest, `(ej.2026.2.26`).Completar la incorporación (onboarding)
El script de configuración ejecuta la incorporación automáticamente. Hará lo siguiente:
- solicitar las claves de API del proveedor
- generar un token de pasarela y escribirlo en
.env - iniciar la pasarela mediante Docker Compose
Durante la configuración, la incorporación previa al inicio y la escritura de configuraciones se ejecutan a través de
openclaw-gatewaydirectamente.openclaw-clies para los comandos que ejecuta después de que el contenedor de la pasarela ya existe.Abrir la interfaz de usuario de control
Abra
http://127.0.0.1:18789/en su navegador y pegue el token en Configuración (Settings).¿Necesita la URL de nuevo?
Ventana de terminal docker compose run --rm openclaw-cli dashboard --no-openConfigurar canales (opcional)
Utilice el contenedor CLI para añadir canales de mensajería:
Ventana de terminal # WhatsApp (QR)docker compose run --rm openclaw-cli channels login# Telegramdocker compose run --rm openclaw-cli channels add --channel telegram --token "”
# Discorddocker compose run --rm openclaw-cli channels add --channel discord --token "” ```
Documentación: [WhatsApp](/en/channels/whatsapp), [Telegram](/en/channels/telegram), [Discord](/en/channels/discord)
Flujo manual
Sección titulada «Flujo manual»Si prefieres ejecutar cada paso tú mismo en lugar de usar el script de configuración:
docker build -t openclaw:local -f Dockerfile .docker compose run --rm --no-deps --entrypoint node openclaw-gateway \ dist/index.js onboard --mode local --no-install-daemondocker compose run --rm --no-deps --entrypoint node openclaw-gateway \ dist/index.js config set gateway.mode localdocker compose run --rm --no-deps --entrypoint node openclaw-gateway \ dist/index.js config set gateway.bind landocker compose run --rm --no-deps --entrypoint node openclaw-gateway \ dist/index.js config set gateway.controlUi.allowedOrigins \ '["http://localhost:18789","http://127.0.0.1:18789"]' --strict-jsondocker compose up -d openclaw-gatewayVariables de entorno
Sección titulada «Variables de entorno»El script de configuración acepta estas variables de entorno opcionales:
| Variable | Propósito |
|---|---|
OPENCLAW_IMAGE | Utilizar una imagen remota en lugar de compilar localmente |
OPENCLAW_DOCKER_APT_PACKAGES | Instalar paquetes apt adicionales durante la compilación (separados por espacios) |
OPENCLAW_EXTENSIONS | Preinstalar dependencias de extensión en tiempo de compilación (nombres separados por espacios) |
OPENCLAW_EXTRA_MOUNTS | Montajes de enlace de host adicionales (source:target[:opts] separados por comas) |
OPENCLAW_HOME_VOLUME | Persistir /home/node en un volumen de Docker con nombre |
OPENCLAW_SANDBOX | Optar por el arranque de sandbox (1, true, yes, on) |
OPENCLAW_DOCKER_SOCKET | Anular la ruta del socket de Docker |
Verificaciones de estado
Sección titulada «Verificaciones de estado»Endpoints de sondeo del contenedor (no se requiere autenticación):
curl -fsS http://127.0.0.1:18789/healthz # livenesscurl -fsS http://127.0.0.1:18789/readyz # readinessLa imagen de Docker incluye una HEALTHCHECK integrada que hace ping a /healthz.
Si las comprobaciones siguen fallando, Docker marca el contenedor como unhealthy y
los sistemas de orquestación pueden reiniciarlo o reemplazarlo.
Instantánea de estado profundo autenticada:
docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLAW_GATEWAY_TOKEN"LAN vs loopback
Sección titulada «LAN vs loopback»scripts/docker/setup.sh tiene como valor predeterminado OPENCLAW_GATEWAY_BIND=lan para que el acceso del host a
http://127.0.0.1:18789 funcione con la publicación de puertos de Docker.
lan(predeterminado): el navegador del host y la CLI del host pueden alcanzar el puerto de puerta de enlace publicado.loopback: solo los procesos dentro del espacio de nombres de red del contenedor pueden alcanzar la puerta de enlace directamente.
Almacenamiento y persistencia
Sección titulada «Almacenamiento y persistencia»Docker Compose monta OPENCLAW_CONFIG_DIR en /home/node/.openclaw y
OPENCLAW_WORKSPACE_DIR en /home/node/.openclaw/workspace, por lo que esas rutas
sobreviven al reemplazo del contenedor.
Para obtener detalles completos sobre la persistencia en implementaciones de VM, consulte Docker VM Runtime - What persists where.
Puntos calientes de crecimiento del disco: vigile media/, los archivos JSONL de sesión, cron/runs/*.jsonl,
y los registros de archivos rotativos en /tmp/openclaw/.
Asistentes de shell (opcionales)
Sección titulada «Asistentes de shell (opcionales)»Para una gestión diaria de Docker más sencilla, instale ClawDock:
mkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/clawdock/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.shecho 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrcSi instaló ClawDock desde la ruta scripts/shell-helpers/clawdock-helpers.sh anterior, vuelva a ejecutar el comando de instalación anterior para que su archivo auxiliar local rastree la nueva ubicación.
Luego use clawdock-start, clawdock-stop, clawdock-dashboard, etc. Ejecute
clawdock-help para ver todos los comandos.
Consulte ClawDock para la guía completa de ayuda.
Habilitar sandbox del agente para la puerta de enlace Docker
export OPENCLAW_SANDBOX=1./scripts/docker/setup.shRuta de socket personalizada (ej. Docker sin root):
export OPENCLAW_SANDBOX=1export OPENCLAW_DOCKER_SOCKET=/run/user/1000/docker.sock./scripts/docker/setup.shEl script monta docker.sock solo después de que se cumplan los requisitos previos del sandbox. Si
la configuración del sandbox no puede completarse, el script restablece agents.defaults.sandbox.mode
a off.
Automatización / CI (no interactivo)
Deshabilite la asignación de pseudo-TTY de Compose con -T:
docker compose run -T --rm openclaw-cli gateway probedocker compose run -T --rm openclaw-cli devices list --jsonNota de seguridad de red compartida
openclaw-cli usa network_mode: "service:openclaw-gateway" para que los comandos de la CLI puedan alcanzar la puerta de enlace a través de 127.0.0.1. Trate esto como un límite de confianza compartida. La configuración de compose descarta NET_RAW/NET_ADMIN y habilita no-new-privileges en openclaw-cli.
Permisos y EACCES
La imagen se ejecuta como node (uid 1000). Si ve errores de permisos en
/home/node/.openclaw, asegúrese de que sus montajes de enlace del host sean propiedad del uid 1000:
sudo chown -R 1000:1000 /path/to/openclaw-config /path/to/openclaw-workspaceReconstrucciones más rápidas
Ordene su Dockerfile para que las capas de dependencias se almacenen en caché. Esto evita volver a ejecutar
pnpm install a menos que cambien los archivos de bloqueo:
FROM node:24-bookwormRUN curl -fsSL https://bun.sh/install | bashENV PATH="/root/.bun/bin:${PATH}"RUN corepack enableWORKDIR /appCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./COPY ui/package.json ./ui/package.jsonCOPY scripts ./scriptsRUN pnpm install --frozen-lockfileCOPY . .RUN pnpm buildRUN pnpm ui:installRUN pnpm ui:buildENV NODE_ENV=productionCMD ["node","dist/index.js"]Opciones de contenedor para usuarios avanzados
La imagen predeterminada prioriza la seguridad y se ejecuta como no root node. Para un contenedor con más funciones:
- Persistir
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - Incluir dependencias del sistema:
export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq" - Instalar navegadores Playwright:
Ventana de terminal docker compose run --rm openclaw-cli \node /app/node_modules/playwright-core/cli.js install chromium - Persistir descargas del navegador: configure
PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwrighty useOPENCLAW_HOME_VOLUMEoOPENCLAW_EXTRA_MOUNTS.
OpenAI Codex OAuth (Docker sin interfaz gráfica)
Si elige OpenAI Codex OAuth en el asistente, este abre una URL del navegador. En configuraciones de Docker o sin interfaz gráfica (headless), copie la URL de redireccionamiento completa a la que llegue y péguela de nuevo en el asistente para finalizar la autenticación.
Metadatos de la imagen base
La imagen principal de Docker utiliza node:24-bookworm y publica anotaciones de imagen base OCI, incluyendo org.opencontainers.image.base.name,
org.opencontainers.image.source y otras. Consulte
Anotaciones de imagen OCI.
¿Ejecutando en un VPS?
Sección titulada «¿Ejecutando en un VPS?»Consulte Hetzner (Docker VPS) y Docker VM Runtime para ver los pasos de implementación en VM compartida, incluida la inclusión de binarios, la persistencia y las actualizaciones.
Sandbox de Agente
Sección titulada «Sandbox de Agente»Cuando agents.defaults.sandbox está habilitado, la puerta de enlace ejecuta las herramientas del agente
(shell, lectura/escritura de archivos, etc.) dentro de contenedores Docker aislados, mientras que la
propia puerta de enlace permanece en el host. Esto proporciona una barrera sólida alrededor de sesiones de agente no confiables o
multiinquilino sin tener que contenerizar toda la puerta de enlace.
El ámbito del sandbox puede ser por agente (predeterminado), por sesión o compartido. Cada ámbito
obtiene su propio espacio de trabajo montado en /workspace. También puede configurar
políticas de herramientas de permitir/denegar, aislamiento de red, límites de recursos y contenedores
de navegador.
Para obtener la configuración completa, las imágenes, las notas de seguridad y los perfiles multiagente, consulte:
- Sandboxing — referencia completa del sandbox
- OpenShell — acceso a shell interactivo a contenedores de espacio aislado
- Multi-Agent Sandbox and Tools — anulaciones por agente
Activación rápida
Sección titulada «Activación rápida»{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all scope: "agent", // session | agent | shared }, }, },}Construir la imagen del espacio aislado predeterminada:
scripts/sandbox-setup.shSolución de problemas
Sección titulada «Solución de problemas»Falta la imagen o el contenedor del espacio aislado no se inicia
Construya la imagen del espacio aislado con
scripts/sandbox-setup.sh
o establezca agents.defaults.sandbox.docker.image en su imagen personalizada.
Los contenedores se crean automáticamente por sesión bajo demanda.
Errores de permisos en el espacio aislado
Establezca docker.user en un UID:GID que coincida con la propiedad de su espacio de trabajo montado, o cambie el propietario de la carpeta del espacio de trabajo.
Herramientas personalizadas no encontradas en el espacio aislado
OpenClaw ejecuta comandos con sh -lc (shell de inicio de sesión), lo que obtiene /etc/profile y puede restablecer PATH. Establezca docker.env.PATH para anteponer sus rutas de herramientas personalizadas, o agregue un script bajo /etc/profile.d/ en su Dockerfile.
Matado por OOM durante la construcción de la imagen (salida 137)
La VM necesita al menos 2 GB de RAM. Use una clase de máquina más grande y vuelva a intentar.
No autorizado o emparejamiento requerido en la Interfaz de usuario de control
Obtenga un enlace nuevo del panel de control y apruebe el dispositivo del navegador:
docker compose run --rm openclaw-cli dashboard --no-opendocker compose run --rm openclaw-cli devices listdocker compose run --rm openclaw-cli devices approveMás detalles: [Dashboard](/en/web/dashboard), [Devices](/en/cli/devices).El objetivo de la puerta de enlace muestra ws://172.x.x.x o errores de emparejamiento desde la CLI de Docker
Restablezca el modo de puerta de enlace y el enlace:
docker compose run --rm openclaw-cli config set gateway.mode localdocker compose run --rm openclaw-cli config set gateway.bind landocker compose run --rm openclaw-cli devices list --url ws://127.0.0.1:18789Relacionado
Sección titulada «Relacionado»- Install Overview — todos los métodos de instalación
- Podman — alternativa Podman a Docker
- ClawDock — configuración comunitaria de Docker Compose
- Actualización — mantener OpenClaw actualizado
- Configuración — configuración de la puerta de enlace después de la instalación