Antes de empezar, conviene entender qué es OpenClaw y por qué resulta re­co­me­n­da­ble ejecutar la solución con Docker Compose:

Paso 1: visión general y decisión: ¿por qué OpenClaw en Docker?

  • OpenClaw es un agente de IA autónomo capaz de ejecutar tareas de forma in­de­pe­n­die­n­te, como procesar mensajes, analizar archivos o au­to­ma­ti­zar co­n­ve­r­sa­cio­nes de chat.
  • Puede eje­cu­tar­se en tu propio servidor, es de código abierto y ofrece más de 50 in­te­gra­cio­nes, entre ellas WhatsApp, Telegram, Slack y Discord.
  • La forma más estable y re­co­me­n­da­da de in­s­ta­la­ción es mediante Docker Compose, ya que gestiona las de­pe­n­de­n­cias de forma aislada y au­to­ma­ti­za­da, lo que facilita futuras ac­tua­li­za­cio­nes y am­plia­cio­nes.

OpenClaw utiliza Docker como entorno aislado. Con Docker Compose puedes iniciar varios co­n­te­ne­do­res si­mu­l­tá­nea­me­n­te, como el gateway, la CLI, el sandbox (si procede) y he­rra­mie­n­tas externas que, en conjunto, conforman el sistema completo.

Nota

OpenClaw actúa en muchas co­n­fi­gu­ra­cio­nes pri­n­ci­pa­l­me­n­te como servicio de gateway y or­que­s­ta­ción, co­ne­c­ta­n­do me­n­sa­je­ría, he­rra­mie­n­tas y servicios con un modelo de lenguaje de gran tamaño (LLM). El nivel de autonomía con el que operará dependerá en gran medida de tu co­n­fi­gu­ra­ción in­di­vi­dual, es­pe­cia­l­me­n­te de las reglas de red y los permisos definidos. Por razones de seguridad y para una gestión realista de ex­pe­c­ta­ti­vas, conviene aplicar el principio de mínimo pri­vi­le­gio y conceder úni­ca­me­n­te los accesos es­tri­c­ta­me­n­te ne­ce­sa­rios para tus au­to­ma­ti­za­cio­nes.

Paso 2: encontrar el servidor adecuado

OpenClaw no es un simple chatbot, sino una he­rra­mie­n­ta autónoma que se ejecuta en tu servidor e in­ter­ac­túa con apli­ca­cio­nes, servicios de me­n­sa­je­ría y he­rra­mie­n­tas externas. Puedes uti­li­zar­la, por ejemplo, para gestionar ca­le­n­da­rios, ad­mi­ni­s­trar archivos, enviar no­ti­fi­ca­cio­nes o incluso ejecutar flujos de trabajo completos orie­n­ta­dos al de­sa­rro­llo.

En la mayoría de los casos de uso se re­co­mie­n­da un VPS, ya que ofrece una base rentable y su­fi­cie­n­te­me­n­te potente para ejecutar OpenClaw en Docker. Resulta aún más práctico si el entorno VPS permite integrar he­rra­mie­n­tas de au­to­ma­ti­za­ción como n8n, ya que facilita la conexión de OpenClaw con otros servicios. En general, cuanto más exigentes sean las tareas que delegues en el agente, más RAM y CPU deberías pla­ni­fi­car. Docker Compose y los modelos de IA requieren memoria para imágenes, registros de co­n­te­ne­do­res y pe­r­si­s­te­n­cia de datos. Los recursos ne­ce­sa­rios dependen en gran medida de la carga de trabajo y, es­pe­cia­l­me­n­te, de si utilizas un LLM en la nube o ejecutas los modelos de forma local.

La siguiente tabla ofrece una orie­n­ta­ción apro­xi­ma­da según distintos es­ce­na­rios de uso:

Caso de uso Funciones pri­n­ci­pa­les Recursos VPS re­co­me­n­da­dos
Asistente digital para el día a día Resúmenes de citas, gestión de mensajes y ca­le­n­da­rio 4 vCores CPU, 4 GB RAM, 120 GB de al­ma­ce­na­mie­n­to
Au­to­ma­ti­za­ción de flujos de trabajo y do­cu­me­n­ta­ción Creación de do­cu­me­n­tos, pro­ce­sa­mie­n­to de datos, carga de archivos 6 vCores CPU, 8 GB RAM, 240 GB de al­ma­ce­na­mie­n­to
Pro­du­c­ti­vi­dad para de­sa­rro­lla­do­res y au­to­ma­ti­za­ción remota Tests, builds, análisis de logs y tareas de shell 8 vCores CPU, 16 GB RAM, 480 GB de al­ma­ce­na­mie­n­to
VPS gratis
Servidor virtual 30 días gratis

Co­n­vé­n­ce­te por ti mismo y elige un servidor virtual.

Paso 3: instalar el sistema operativo y es­ta­ble­cer una conexión segura

Antes de instalar OpenClaw en Docker con Docker Compose, necesitas preparar el sistema operativo de tu servidor. Para este tipo de co­n­fi­gu­ra­ción se re­co­mie­n­da una di­s­tri­bu­ción Linux como Ubuntu Server. Instala en tu VPS una versión actual de Ubuntu y establece después una conexión segura con el servidor, por ejemplo mediante SSH (Secure Shell). Para mayor seguridad, utiliza claves SSH en lugar de au­te­n­ti­ca­ción por co­n­tra­se­ña. Así reduces el riesgo de accesos no au­to­ri­za­dos.

Nota

Este tutorial describe una co­n­fi­gu­ra­ción estándar adecuada para entornos de prueba y de­sa­rro­llo. No expongas una in­s­ta­la­ción sin ajustes adi­cio­na­les di­re­c­ta­me­n­te a Internet. Para sistemas en pro­du­c­ción deberías aplicar medidas de refuerzo como pro­te­c­ción TLS/HTTPS mediante un reverse proxy, gestión ce­n­tra­li­za­da de secretos, se­g­me­n­ta­ción de red y reglas de firewall, mo­ni­to­ri­za­ción con alertas y copias de seguridad pe­rió­di­cas de datos y co­n­fi­gu­ra­cio­nes.

Paso 4: instalar Docker y Docker Compose

Una vez hayas es­ta­ble­ci­do una conexión segura con el servidor y co­n­fi­gu­ra­do el sistema operativo, puedes proceder a instalar Docker y Docker Compose.

En primer lugar, actualiza el sistema para ase­gu­rar­te de que todos los paquetes estén al día:

sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-release
bash

A co­n­ti­nua­ción, añade la clave GPG de Docker y configura el re­po­si­to­rio oficial:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
bash

Actualiza de nuevo la lista de paquetes e instala la Docker Engine, la Docker CLI (interfaz de línea de comandos) y el servicio containerd:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
bash

En el último paso, instala Docker Compose. En muchos sistemas actuales puedes utilizar el sistema de plugins:

sudo apt install -y docker-compose-plugin
bash

Como al­te­r­na­ti­va, puedes descargar ma­nua­l­me­n­te los archivos de in­s­ta­la­ción:

mkdir -p ~/.docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 \
    -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
bash

Para comprobar que la in­s­ta­la­ción se ha realizado co­rre­c­ta­me­n­te, ejecuta los si­guie­n­tes comandos:

docker --version
docker compose version
bash

Paso 5: clonar el re­po­si­to­rio de OpenClaw

En este paso de­s­ca­r­ga­rás el código fuente de OpenClaw, que incluye también la co­n­fi­gu­ra­ción necesaria para Docker:

sudo apt install git -y
git clone https://github.com/openclaw/openclaw.git
cd openclaw
bash

Después en­co­n­tra­rás, entre otros archivos, el script docker-setup.sh y el archivo docker-compose.yml, que define los co­n­te­ne­do­res pre­de­te­r­mi­na­dos del sistema. En este archivo de co­n­fi­gu­ra­ción YAML se es­pe­ci­fi­can, entre otros, los si­guie­n­tes elementos:

  • openclaw-gateway: servicio principal que inicia OpenClaw.
  • env_file: indica al co­n­te­ne­dor dónde se en­cue­n­tran las variables de entorno.
  • volumes: permite almacenar los datos de forma pe­r­si­s­te­n­te en el host, en lugar de perderlos al reiniciar el co­n­te­ne­dor.
  • ports: expone el servicio en el puerto 18789 para que puedas acceder a él po­s­te­rio­r­me­n­te desde el navegador.

Paso 6: crear variables de entorno e in­tro­du­cir claves API

Para que OpenClaw sepa qué proveedor de IA utilizar, cómo co­mu­ni­car­se con servicios externos y cómo au­te­n­ti­car­se, debes definir varios pa­rá­me­tros clave en un archivo .env. Este archivo almacena datos sensibles como claves API y tokens, por lo que no debe hacerse público en ningún caso, por ejemplo en re­po­si­to­rios Git. Además, protege el archivo con permisos re­s­tri­c­ti­vos mediante el comando chmod 600 .env.

Paso a paso: cómo crear el archivo .env

  1. Copia el archivo de ejemplo incluido en el re­po­si­to­rio con el siguiente comando: cp .env.example .env
  2. Abre el nuevo archivo para editarlo con nano .env
  3. Verás varias variables co­n­fi­gu­ra­bles. Las líneas más im­po­r­ta­n­tes que deberías adaptar son las si­guie­n­tes (valores a modo de ejemplo):
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ihrapikey123xyz
GATEWAY_TOKEN=my_secure_gateway_token_abc
MODEL_VERSION=claude-4-5-sonnet-20260101
txt
  • LLM_PROVIDER define qué proveedor de IA quieres utilizar. Anthropic suele ser una opción re­co­me­n­da­da, aunque puedes elegir cualquier otro co­m­pa­ti­ble.
  • ANTHROPIC_API_KEY permite a OpenClaw acceder al LLM en la nube mediante la clave co­rre­s­po­n­die­n­te.
  • GATEWAY_TOKEN protege el acceso al panel de control.
  • MODEL_VERSION es­pe­ci­fi­ca la versión del modelo de IA que deseas emplear, por ejemplo Claude 4.5.

Ten en cuenta que los nombres de pro­vee­do­res y versiones cambian con fre­cue­n­cia. Utiliza siempre la do­cu­me­n­ta­ción actual del proveedor co­rre­s­po­n­die­n­te como re­fe­re­n­cia.

Nota

En entornos de pro­du­c­ción, es pre­fe­ri­ble utilizar Docker Secrets o un gestor de co­n­tra­se­ñas en lugar de almacenar claves en texto plano dentro de archivos.

Paso 7: ejecutar el script de co­n­fi­gu­ra­ción

Tras clonar el re­po­si­to­rio de OpenClaw, en­co­n­tra­rás el archivo docker-setup.sh. Se trata de un script de co­n­fi­gu­ra­ción que au­to­ma­ti­za numerosas tareas que, de otro modo, tendrías que realizar ma­nua­l­me­n­te. Forma parte del pro­ce­di­mie­n­to oficial de in­s­ta­la­ción con Docker. Sin este script, tendrías que:

  • crear ma­nua­l­me­n­te las imágenes de Docker
  • ajustar la co­n­fi­gu­ra­ción de Docker Compose
  • definir las variables de entorno (si no lo hiciste en el paso 6)
  • iniciar los co­n­te­ne­do­res

El script si­m­pli­fi­ca todo el proceso y garantiza que los co­n­te­ne­do­res se creen y co­n­fi­gu­ren co­rre­c­ta­me­n­te. Antes de eje­cu­tar­lo, puedes revisar su contenido con el siguiente comando:

less docker-setup.sh

Si todo es correcto, inícialo desde la terminal con:

./docker-setup.sh
bash

Durante la ejecución se te so­li­ci­ta­rán de forma in­ter­ac­ti­va distintos pa­rá­me­tros de co­n­fi­gu­ra­ción, como el modo gateway, el proveedor de IA o los tokens de acceso. Responde según tus ne­ce­si­da­des para completar la in­s­ta­la­ción de OpenClaw en Docker.

Paso 8: iniciar Docker Compose

Una vez que los archivos de Docker Compose estén co­n­fi­gu­ra­dos, puedes iniciar todos los servicios. Con el siguiente comando se de­s­ca­r­ga­rán las imágenes ne­ce­sa­rias, se iniciarán los co­n­te­ne­do­res co­rre­s­po­n­die­n­tes y se montarán au­to­má­ti­ca­me­n­te los volúmenes definidos:

docker compose up -d
bash

Para comprobar que todos los servicios se han iniciado co­rre­c­ta­me­n­te y detectar posibles errores, activa el registro en tiempo real con:

docker compose logs -f
bash
Consejo

La su­pe­r­vi­sión de registros es es­pe­cia­l­me­n­te im­po­r­ta­n­te en entornos de pro­du­c­ción. Te permite controlar a largo plazo el consumo de recursos (CPU, RAM y al­ma­ce­na­mie­n­to) y detectar errores o co­m­po­r­ta­mie­n­tos anómalos de forma temprana.

Paso 9: acceder a la interfaz web

Una vez que todos los servicios estén en fu­n­cio­na­mie­n­to, podrás acceder a la interfaz web de ad­mi­ni­s­tra­ción desde el navegador mediante la URL http://IHRE_SERVER_IP:18789. Sustituye IHRE_SERVER_IP por la dirección IP de tu servidor. Desde el panel de control de OpenClaw en Docker podrás, entre otras funciones:

  • iniciar co­n­ve­r­sa­cio­nes de chat
  • co­n­fi­gu­rar tus agentes
  • generar tokens de em­pa­re­ja­mie­n­to para clientes o di­s­po­si­ti­vos

Si el navegador muestra mensajes de error como “Unau­tho­ri­zed” (No au­to­ri­za­do) o “Pairing required” (Em­pa­re­ja­mie­n­to requerido), genera un nuevo token para el panel de control con el siguiente comando:

docker compose run --rm openclaw-cli dashboard --no-open
bash

A co­n­ti­nua­ción, aprueba la solicitud pendiente con:

docker compose run --rm openclaw-cli devices list
docker compose run --rm openclaw-cli devices approve <requestID>
bash
Consejo

Si un co­n­te­ne­dor no se inicia, revisa los registros con docker compose logs -f para ide­n­ti­fi­car el problema o comprueba el archivo .env en busca de claves faltantes o errores ti­po­grá­fi­cos.
Si el puerto no es accesible, es posible que debas ajustar la co­n­fi­gu­ra­ción del firewall o los grupos de seguridad del servidor.

Paso 10: asegurar la instancia de OpenClaw en Docker

OpenClaw en Docker puede ejecutar acciones profundas en el sistema. Si expones la instancia di­re­c­ta­me­n­te a Internet sin pro­te­c­ción adicional, aumentas si­g­ni­fi­ca­ti­va­me­n­te el riesgo de accesos no au­to­ri­za­dos. Por ello, aplica las si­guie­n­tes medidas de seguridad:

  • Protege el servidor con un firewall y permite úni­ca­me­n­te las co­ne­xio­nes es­tri­c­ta­me­n­te ne­ce­sa­rias.
  • Abre el puerto de OpenClaw (por defecto, 18789) solo cuando sea im­pre­s­ci­n­di­ble. Si necesitas acceso público, limita el acceso a di­re­c­cio­nes IP de confianza y ca­na­lí­za­lo a través de un proxy inverso con HTTPS o mediante una VPN.
  • Ejecuta los co­n­te­ne­do­res, siempre que sea posible, sin pri­vi­le­gios de root. Utiliza sistemas de archivos en modo read-only, elimina ca­pa­ci­da­des in­ne­ce­sa­rias y evita montajes del host su­pe­r­fluos. Limita también el acceso de red a los servicios realmente ne­ce­sa­rios, como API de me­n­sa­je­ría o pro­vee­do­res de LLM.
  • Activa la au­te­n­ti­ca­ción basada en tokens. El GATEWAY_TOKEN co­n­fi­gu­ra­do en el archivo .env protege el acceso al panel de control.
  • Refuerza la seguridad del co­n­te­ne­dor con flags como --read-only, --cap-drop=ALL y --security-opt=no-new-privileges para reducir la su­pe­r­fi­cie de ataque.
  • Crea una red Docker aislada o define reglas es­pe­cí­fi­cas para que OpenClaw solo pueda co­mu­ni­car­se con los servicios externos im­pre­s­ci­n­di­bles, en lugar de tener acceso libre a Internet.
  • Verifica que la co­n­fi­gu­ra­ción de seguridad de OpenClaw esté co­rre­c­ta­me­n­te definida, in­clu­ye­n­do me­ca­ni­s­mos de au­te­n­ti­ca­ción activos y reglas del gateway ajustadas para pro­du­c­ción.

En sistemas Linux como Ubuntu puedes es­ta­ble­cer una pro­te­c­ción básica rá­pi­da­me­n­te con Un­co­m­pli­ca­ted Firewall (ufw):

sudo ufw allow 22/tcp
sudo ufw allow 18789/tcp
sudo ufw enable
bash

El puerto TCP 22 habilita el acceso SSH seguro, mientras que el puerto 18789 co­rre­s­po­n­de al puerto estándar de OpenClaw en Docker, salvo que lo hayas mo­di­fi­ca­do. Si no deseas abrir el puerto de forma global, puedes re­s­tri­n­gi­r­lo a di­re­c­cio­nes IP es­pe­cí­fi­cas.

Consejo

Una co­n­fi­gu­ra­ción segura habitual consiste en utilizar un reverse proxy como NGINX, Traefik o Caddy, junto con un ce­r­ti­fi­ca­do TLS como el gratuito Let’s Encrypt. El tráfico se redirige in­te­r­na­me­n­te a localhost:18789. Además, se re­co­mie­n­da habilitar li­mi­ta­ción de tasa de so­li­ci­tu­des (rate limiting) y me­ca­ni­s­mos adi­cio­na­les de au­te­n­ti­ca­ción como Basic Auth u OIDC.

Paso 11: co­n­fi­gu­rar in­te­gra­cio­nes de me­n­sa­je­ría

OpenClaw en Docker puede co­ne­c­tar­se con distintas pla­ta­fo­r­mas de me­n­sa­je­ría, como Slack, WhatsApp o Telegram. De este modo, puedes controlar tu agente de IA di­re­c­ta­me­n­te desde tu entorno de trabajo habitual. Por ejemplo, si integras OpenClaw con Slack, el agente actuará como un bot dentro del espacio de trabajo. Podrás enviarle in­s­tru­c­cio­nes o preguntas en el chat del equipo y este re­s­po­n­de­rá o ejecutará acciones en segundo plano.

La in­te­gra­ción suele seguir estos pasos (pueden variar li­ge­ra­me­n­te según el servicio):

  1. Registrar el bot o la apli­ca­ción: crea un bot o una apli­ca­ción en la pla­ta­fo­r­ma co­rre­s­po­n­die­n­te (por ejemplo, Telegram, Slack o Discord) desde su portal para de­sa­rro­lla­do­res. Al finalizar, obtendrás uno o varios tokens o claves API para au­te­n­ti­car la conexión.
  2. In­tro­du­cir los tokens en OpenClaw: añade las cre­de­n­cia­les de acceso (por ejemplo, TELEGRAM_BOT_TOKEN o SLACK_BOT_TOKEN) en el archivo .env de OpenClaw o en la interfaz de co­n­fi­gu­ra­ción co­rre­s­po­n­die­n­te.
  3. Reiniciar OpenClaw en Docker: reinicia los servicios para aplicar la nueva co­n­fi­gu­ra­ción de in­te­gra­ción.
  4. Autorizar la conexión: según el servicio, puede ser necesario completar un proceso de au­to­ri­za­ción inicial, como un em­pa­re­ja­mie­n­to, un flujo OAuth o la co­n­fi­r­ma­ción mediante un enlace o código.
  5. Realizar una prueba: envía un mensaje de prueba a través del bot para verificar que OpenClaw responde y ejecuta las acciones previstas.
Consejo

Mantén los tokens de API en un entorno seguro y concede úni­ca­me­n­te los permisos ne­ce­sa­rios. Tras la co­n­fi­gu­ra­ción, verifica la conexión in­me­dia­ta­me­n­te y completa todos los pasos de au­to­ri­za­ción (por ejemplo, em­pa­re­ja­mie­n­to u OAuth). Para las primeras pruebas, utiliza pre­fe­ri­ble­me­n­te un canal o espacio de trabajo privado y revisa los registros en caso de error.

Paso 12: mantener OpenClaw en Docker ac­tua­li­za­do

Para be­ne­fi­ciar­te de las funciones más recientes, co­rre­c­cio­nes de errores y ac­tua­li­za­cio­nes de seguridad, es fu­n­da­me­n­tal mantener OpenClaw en Docker al día.

Primero, accede al di­re­c­to­rio del proyecto:

cd ~/openclaw
bash

A co­n­ti­nua­ción, descarga la versión más reciente del re­po­si­to­rio y actualiza las imágenes de Docker:

git pull
docker compose pull
bash

Por último, reinicia la instancia para aplicar los cambios:

docker compose up -d
bash
Consejo

Planifica copias de seguridad pe­rió­di­cas de los volúmenes pe­r­si­s­te­n­tes (co­n­fi­gu­ra­ción, tokens y datos re­le­va­n­tes). Así podrás restaurar rá­pi­da­me­n­te tu in­s­ta­la­ción en caso de in­ci­de­n­cia.

Ir al menú principal