NUEVO 📢 Oferta de lanzamiento limitada: ¡hasta un 70% de descuento en tu primer mes, en todos los juegos!Ver planes

Cómo ejecutar OpenClaw con Docker

OpenClawUpdated Nov 6, 20269 min read

Respuesta corta. Clona el repositorio de OpenClaw y ejecuta ./scripts/docker/setup.sh con OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest" definido, para que use la imagen oficial ya construida en lugar de construir una (compilar desde el código fuente necesita al menos 6 GB de RAM). El script ejecuta el onboarding, escribe un token del Gateway en .env e inicia el Gateway con Docker Compose. Monta la carpeta de estado ~/.openclaw para que no se pierda nada cuando se sustituya el contenedor, y mantén el puerto 18789 cerrado a internet: los puertos publicados de Docker se saltan UFW. Dale al contenedor al menos 2 GB de memoria; con un límite de 1 GB sin swap, la imagen oficial se terminó por falta de memoria en nuestra prueba.

Comprobado el 6 de noviembre de 2026, correcto para OpenClaw 2026.11.1.

Esta guía usa la documentación de Docker de OpenClaw, el docker-compose.yml de su repositorio y una prueba de la imagen oficial que hicimos en nuestro propio servidor (cifras más abajo).

¿Necesitas Docker siquiera?

La documentación de OpenClaw llama a Docker opcional: útil para un Gateway aislado y desechable o para un equipo donde no quieres instalar Node.js. En un VPS que solo ejecuta OpenClaw, la instalación normal con npm y un servicio de systemd es la ruta principal (mira cómo alojar OpenClaw 24/7). Docker encaja bien cuando ya ejecutas otras cosas en contenedores.

Qué es la imagen oficial

  • Dónde está: ghcr.io/openclaw/openclaw (principal) y el espejo de Docker Hub openclaw/openclaw. OpenClaw desaconseja los espejos no oficiales.
  • Etiquetas: latest, versiones exactas como 2026.11.1, variantes -slim y variantes -browser que incluyen Chromium para la automatización del navegador.
  • Por dentro: se ejecuta como el usuario node bajo tini, y su entrypoint ejecuta openclaw doctor --fix sobre tu estado montado antes de iniciar el Gateway, así que las actualizaciones de la imagen migran el estado por ti. Una comprobación de salud integrada llama a /healthz.

Lo que medimos

Descargamos ghcr.io/openclaw/openclaw:2026.11.1 en uno de nuestros servidores Linux e iniciamos el Gateway dos veces con docker run (no con Compose), sin modelo, sin app de chat, sin puerto publicado, limitado a 1 CPU y sin swap: una vez con un límite de memoria de 2 GB y otra con 1 GB. Las cifras de memoria están en MiB, tal como las informa Linux.

Resultado
DescargaUnos 695 MB comprimidos (amd64), 2.818 MiB (unos 3 GB) en disco una vez descargada
Node.js en la imagen24.22.1
Límite de 2 GB: arranque/healthz respondió 48 segundos después de docker run, incluida la pasada de doctor. El Gateway cargó 14 plugins y registró "ready" 22 segundos después de empezar su propio arranque
Límite de 2 GB: memoria en reposo1.349 MiB 30 segundos después de responder a su comprobación de salud, 1.106 MiB dos minutos después, máximo 1.439 MiB. Sin eventos de falta de memoria
Límite de 1 GBEl Gateway llegó a "ready", y luego todo el contenedor se terminó por falta de memoria unos 54 segundos después de empezar (código de salida 137)

Las preguntas frecuentes de OpenClaw dan 1 GB como mínimo absoluto para un VPS. Con esta versión en un contenedor limitado a 1 GB, no fue suficiente. Cuenta con 2 GB o más, y todavía más para conversaciones reales, varias apps de chat o una imagen -browser. Más en cuánta memoria necesita OpenClaw.

Paso a paso con Docker Compose

  1. Instala Docker Engine y Docker Compose v2, y luego obtén el repositorio:
    git clone https://github.com/openclaw/openclaw.git
    cd openclaw
  2. Ejecuta el script de instalación con la imagen ya construida:
    export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
    ./scripts/docker/setup.sh
    Sin OPENCLAW_IMAGE, el script construye openclaw:local desde el código fuente, lo que necesita al menos 6 GB de RAM; una compilación que termina en Killed o con el código de salida 137 se quedó sin memoria. El script te pide tu clave de API del proveedor, genera el token del Gateway y lo escribe en .env, y luego inicia el Gateway.
  3. Abre el panel de control en http://127.0.0.1:18789/ en la misma máquina y pega el token de .env en Settings. Si necesitas el enlace otra vez: docker compose run --rm openclaw-cli dashboard --no-open.
  4. Añade una app de chat:
    docker compose run --rm openclaw-cli channels add --channel telegram --token "<token>"
    docker compose run --rm openclaw-cli channels add --channel discord --token "<token>"
    Los mensajes directos nuevos empiezan en modo pairing: escribe a tu bot y luego ejecuta docker compose run --rm openclaw-cli pairing approve telegram <CODE>. Más en conectar OpenClaw a Telegram.
  5. Compruébalo:
    docker compose ps
    docker compose logs --tail=100 openclaw-gateway
    curl -fsS http://127.0.0.1:18789/healthz

Para un equipo sin indicaciones en terminal, OpenClaw documenta un arranque sin interacción: pon la clave del proveedor, OPENCLAW_GATEWAY_TOKEN y TELEGRAM_BOT_TOKEN en .env, y luego ejecuta onboard --non-interactive y channels add --channel telegram --use-env a través del contenedor del Gateway antes de docker compose up -d openclaw-gateway.

Persistencia: qué montar y qué respaldar

En el contenedorQué contieneLado del host (valor por defecto del setup)
/home/node/.openclawopenclaw.json, las bases SQLite (autenticación del proveedor, sesiones), los plugins instalados, los secretos de .env$HOME/.openclaw
/home/node/.openclaw/workspaceEl espacio de trabajo y los archivos de memoria del agente$HOME/.openclaw/workspace
/home/node/.config/openclawLa clave de las credenciales cifradas antiguas$HOME/.openclaw-auth-profile-secrets
  • Monta la carpeta, nunca un solo archivo. OpenClaw guarda openclaw.json reemplazándolo, así que un bind mount de un solo archivo puede hacer que el contenedor siga leyendo una copia antigua.
  • Mantén el estado en un disco local. Los recursos compartidos NFS, SMB y CIFS no ofrecen a SQLite la coordinación de memoria compartida que necesita y pueden corromperlo.
  • Un Gateway por carpeta de estado. Detén el contenedor antiguo antes de iniciar su sustituto.
  • Trata las copias de seguridad como secretos. La documentación de OpenClaw dice que los tokens OAuth están en texto plano en esos archivos SQLite.
  • Todo lo que instales dentro de un contenedor en marcha se pierde cuando se recrea. Las herramientas extra van dentro de la imagen en el momento de construirla.

Mantén el puerto privado

El docker-compose.yml del repositorio publica 18789 (y 18790 y 3978) en el host e inicia el Gateway con --bind lan, así que el puerto publicado llega hasta él. En un VPS eso significa que el puerto del panel de control queda en la dirección pública a menos que lo bloquees. Dos trampas:

  • UFW no lo cubre. Los puertos publicados de los contenedores pasan por las cadenas de reenvío propias de Docker, no solo por las reglas INPUT del host. La documentación de OpenClaw da reglas para la cadena DOCKER-USER; un firewall en la nube que solo admita SSH también sirve.
  • Usa un túnel para llegar al panel de control: ssh -N -L 18789:127.0.0.1:18789 root@<vps-ip>, y luego abre http://127.0.0.1:18789/ en tu propio ordenador.

Compose también define restart: unless-stopped, así que el Gateway vuelve tras un fallo o un reinicio, y quita las capacidades NET_RAW y NET_ADMIN.

Actualizar

docker compose pull openclaw-gateway openclaw-cli
docker compose stop openclaw-gateway
docker compose up -d openclaw-gateway

El entrypoint de la imagen repara y migra el estado montado al arrancar. Haz antes una copia de ~/.openclaw. Con latest avanzas con cada versión estable; fija una etiqueta como 2026.11.1 para quedarte donde estás.

Sin Docker: ejecuta OpenClaw en PlayNHost

Un servidor de PlayNHost ya es un contenedor aislado con su propio límite de memoria, así que no hay nada que componer. No usamos la imagen oficial: el servidor ejecuta Node.js 26 e instala el paquete npm openclaw en el primer arranque, y después busca una versión más nueva en cada arranque.

  • Configuración: pega una clave de proveedor de IA y un token de bot de Telegram o Discord en la página Agente, y pulsa Start. En nuestra prueba de la misma configuración, el agente estaba en marcha 67 segundos después del primer Start, con la instalación incluida.
  • Persistencia: .openclaw vive en el disco del servidor y en sus copias de seguridad (unos 4 MB en nuestra prueba); el programa y sus cachés se reinstalan, no se respaldan.
  • Puerto: el Gateway escucha solo en la dirección loopback del propio servidor, puerto 18789, con un token que genera el panel. No se publica nada, así que no hay un firewall que configurar mal.
  • Memoria: planes de 2 GB, 4 GB y 8 GB. El arranque se niega a ejecutar OpenClaw con menos de 2 GB.
  • Aún no incluido: el panel de control web, apps de chat distintas de Telegram y Discord, y la automatización del navegador (sin Chromium).

Crea un servidor OpenClaw.

PlayNHost no está afiliada a la OpenClaw Foundation. OpenClaw es software de código abierto bajo la licencia MIT.

¿Ya lo tienes en otro proveedor? Trae tu servidor con nosotros

NUESTROS ÚLTIMOS BLOGS