Cómo instalar OpenClaw con Docker Compose

Docker es la forma más limpia de correr OpenClaw cuando quieres aislarlo del resto del sistema: el agente vive en su propio contenedor, las actualizaciones son un comando, y el entorno es idéntico en cualquier máquina. La propia documentación lo describe como una opción pensada para entornos aislados o para validar el flujo antes de instalarlo nativo.
Esta es la vía Docker; si buscas el panorama completo (script, npm, plataformas), está en la guía de instalación de OpenClaw.
¿Docker o instalación nativa?
| Docker Compose | Script / npm | |
|---|---|---|
| Aislamiento | ✅ contenedor propio | ❌ corre sobre tu sistema |
| Actualizar | docker compose pull |
reinstalar el paquete |
| Peso | Mayor (capa de Docker) | Menor (Node nativo) |
| Reproducible | ✅ idéntico en todos lados | depende del host |
Si ya trabajas con contenedores o quieres mantener OpenClaw separado del resto, Docker. Si buscas lo más liviano —por ejemplo en una Raspberry Pi— el script con Node nativo suele convenir más.
Requisitos
- Docker y Docker Compose v2 instalados
- Una API key de tu proveedor de IA (Claude, OpenAI o un modelo local)
- Al menos 4 GB de RAM disponibles para el contenedor
Instalación con el script oficial
El soporte de Docker de OpenClaw es basado en Docker Compose: el repositorio ya incluye un docker-compose.yml, así que no tienes que escribirlo a mano. El flujo oficial clona el repo y corre el script de setup, que levanta el contenedor con ese compose y te pide las API keys:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
# Usar la imagen precompilada (GitHub Container Registry)
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
# Levanta el contenedor y corre el onboarding
./scripts/docker/setup.shEl script te pregunta las claves de API del proveedor, configura el docker-compose.yml y deja el contenedor corriendo. La interfaz de control queda en http://127.0.0.1:18789/.
Si prefieres construir la imagen localmente en vez de bajarla, omite el
export OPENCLAW_IMAGEy el setup compilaopenclaw:localdesde el código del repo.
Variables de entorno del setup
El comportamiento del compose se controla con variables de entorno antes de correr el script. Las más útiles:
| Variable | Para qué sirve |
|---|---|
OPENCLAW_IMAGE |
Imagen a usar (ghcr.io/openclaw/openclaw:latest o un tag fijo) |
OPENCLAW_SKIP_ONBOARDING |
Levanta el contenedor sin lanzar el wizard (útil en setups automatizados) |
OPENCLAW_SANDBOX |
Controla el modo de aislamiento del agente dentro del contenedor |
OPENCLAW_HOME_VOLUME |
Nombre del volumen donde persiste la config del agente |
OPENCLAW_DOCKER_SOCKET |
Ruta al socket de Docker si el agente necesita lanzar contenedores |
Sobre las imágenes: además de latest, el registro publica el tag main (la rama de desarrollo) y tags de versión fijos como 2026.2.26. Para producción conviene fijar una versión en vez de seguir latest, así una actualización no te cambia el comportamiento sin avisar.
Cómo está armado el compose
El docker-compose.yml oficial no es un solo contenedor: define el gateway (el proceso de larga duración que mantiene vivo al agente) y un servicio de CLI para ejecutar comandos puntuales. El servicio de CLI comparte la red del gateway con network_mode: "service:openclaw-gateway", así ambos ven el mismo 127.0.0.1. Por eso ejecutas comandos contra el agente con docker compose run apuntando a ese servicio, sin abrir puertos extra.
Si necesitas correr el onboarding a mano (por ejemplo si lo saltaste con OPENCLAW_SKIP_ONBOARDING), lo lanzas dentro del contenedor del gateway:
docker compose run --rm --no-deps \
--entrypoint node openclaw-gateway \
dist/index.js onboard --mode local --no-install-daemonDónde se guardan tus datos
Docker Compose monta la configuración en volúmenes, así que tus datos sobreviven a recrear o actualizar el contenedor. Los directorios que persiste:
OPENCLAW_CONFIG_DIR→/home/node/.openclaw— configuración del agenteOPENCLAW_WORKSPACE_DIR→/home/node/.openclaw/workspace— espacio de trabajoOPENCLAW_AUTH_PROFILE_SECRET_DIR→/home/node/.config/openclaw— secretos de autenticación
Mientras no borres esos volúmenes, puedes destruir y recrear el contenedor sin perder la configuración ni las claves.
Actualizar OpenClaw en Docker
Una de las ventajas del compose: actualizar es bajar la imagen nueva y recrear el contenedor, sin tocar la configuración (vive en los volúmenes):
cd openclaw
docker compose pull
docker compose up -dComandos útiles
docker compose ps # estado del contenedor
docker compose logs -f # logs en vivo
docker compose down # detener (conserva los volúmenes)
docker compose up -d # volver a levantarVerificar que el gateway está sano
El gateway expone dos endpoints de salud que puedes consultar desde el host para confirmar que arrancó bien:
curl -fsS http://127.0.0.1:18789/healthz # ¿está vivo el proceso?
curl -fsS http://127.0.0.1:18789/readyz # ¿está listo para atender?/healthz responde apenas el proceso está arriba; /readyz solo responde cuando el agente terminó de cargar y está listo para trabajar. Son ideales para un healthcheck en el propio compose o para un monitor externo.
El gotcha del proveedor de IA local
Si usas un modelo local (Ollama, LM Studio, etc.) corriendo en tu máquina, ojo con la dirección: dentro del contenedor, 127.0.0.1 apunta al propio contenedor, no a tu host. El proveedor local no estará ahí y el agente fallará al conectarse.
La solución es apuntar al host con host.docker.internal en la configuración del proveedor (por ejemplo http://host.docker.internal:11434 para Ollama). En Linux, además, asegúrate de que ese nombre resuelva agregando el extra host en el compose:
extra_hosts:
- "host.docker.internal:host-gateway"Con un proveedor en la nube (Claude, OpenAI) no aplica: la conexión sale a internet y el contenedor llega sin problema.
Docker en Raspberry Pi
La imagen funciona en una Pi de 64 bits siempre que sea multi-arquitectura (ARM64). Dicho eso, en una Raspberry Pi el script nativo con Node 22 suele ser más liviano que sumar la capa de Docker. El detalle completo —qué modelo sirve y cómo dejarlo 24/7— está en la guía de OpenClaw en Raspberry Pi.
Preguntas frecuentes
¿Cuál es la imagen oficial de OpenClaw en Docker?
ghcr.io/openclaw/openclaw:latest, alojada en GitHub Container Registry. También puedes construir openclaw:local desde el repositorio.
¿Necesito escribir un docker-compose.yml?
No. El repositorio ya trae el docker-compose.yml; el script ./scripts/docker/setup.sh lo usa por ti.
¿Pierdo mi configuración al actualizar el contenedor?
No, siempre que no borres los volúmenes. La config vive en /home/node/.openclaw y se persiste fuera del contenedor.
¿En qué puerto queda OpenClaw?
El gateway escucha en 127.0.0.1:18789. Para llegar desde otra máquina, mejor un túnel (por ejemplo Cloudflare Tunnel) que abrir el puerto.
¿Cómo sé si el gateway está sano?
Consulta sus endpoints de salud: http://127.0.0.1:18789/healthz responde si el proceso está vivo y /readyz si ya está listo para atender. Sirven para un healthcheck del compose o un monitor externo.
Uso un modelo local y el contenedor no se conecta, ¿por qué?
Dentro del contenedor 127.0.0.1 es el contenedor mismo, no tu host. Apunta el proveedor local a host.docker.internal (y en Linux agrega extra_hosts: ["host.docker.internal:host-gateway"] en el compose).
Cierre
Con Docker Compose, OpenClaw queda aislado, reproducible y trivial de actualizar (docker compose pull && up -d). Para las demás formas de instalarlo —script, npm, nativo por plataforma— está la guía completa de OpenClaw.