OpenClaw en Docker: compose listo para copiar
📌 Guía en revisión activa. El compose definitivo se congelará cuando termine el despliegue en el laboratorio. Mientras tanto: los patrones aquí son estándar Docker Compose y las variables concretas de OpenClaw están en la doc oficial.
Por qué Docker para OpenClaw
- Aislamiento: el agente ejecuta comandos; contenerizar limita el radio de un error.
- Límites de recursos: sin límites, un proceso desbocado se come la máquina.
- Actualizaciones limpias:
docker compose pull && docker compose up -d.
El compose del laboratorio
services:
openclaw:
image: ghcr.io/openclaw/openclaw:latest # verifica la imagen oficial en la doc
container_name: openclaw
restart: unless-stopped
env_file: .env
volumes:
- ./data:/data # estado, memoria y config persisten aquí
ports:
- "127.0.0.1:3000:3000" # solo localhost: el gateway NO se expone directo
mem_limit: 2g
cpus: 2.0
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
Los 4 detalles que importan
127.0.0.1:delante del puerto — sin eso Docker publica en0.0.0.0y tu Gateway queda expuesto a internet. Error clásico nº1.mem_limit+cpus— un agente IA puede desbocarse. Con límites, lo peor que pasa es que el contenedor se frena, no tu servidor.- Volumen
./data— si no persistes el estado, cadadocker compose downborra la memoria del agente. - Rotación de logs (
max-size) — los logs de un Gateway crecen sin freno; sin rotación te llenas el disco en semanas.
Antes de arrancar
# 1. Variables de entorno (claves de API, tokens de canales)
nano .env
# 2. Arrancar
docker compose up -d
# 3. Ver que vive
docker compose logs -f openclaw
Checklist de seguridad mínimo
- Puerto publicado solo en
127.0.0.1(o detrás de reverse proxy con TLS) -
.envcon permisos 600 y fuera de git - Límites de recursos activos
- Backups del volumen
./dataprogramados
Este compose se validará contra la instalación real del laboratorio. Si algo cambia, la tabla de cambios aparece aquí con fecha.