Apéndice A: Cheatsheet de Comandos — Docker y Terminal
La referencia rápida que necesitas cuando algo falla a las 2 AM.
Por qué este apéndice
No vas a memorizar 80 comandos. No deberías. Pero cuando tu Gateway se cae, el agente no responde, o necesitas mover archivos entre servidores, no hay tiempo de buscar en Google.
Este apéndice es un copia-pega de supervivencia. Si algo no funciona, copia. Ejecuta. Y sigue adelante.
⚠️ Sobre los comandos: Los comandos openclaw listados aquí están verificados con la documentación del proyecto a fecha de mayo de 2026. Si un comando no funciona en tu versión, ejecuta openclaw --help para ver los disponibles en tu instalación, y openclaw doctor para diagnóstico.
A — Comandos esenciales de OpenClaw
Instalación y verificación
terminal/bash — comando copiable
# Instalar la última versión estable
npm install -g openclaw@latest
# Onboarding interactivo (configura todo: Gateway, providers, canales)
openclaw onboard
# En VPS nativo, instalar también el daemon systemd
openclaw onboard --install-daemon
# Verificar versión instalada
openclaw --version
Gateway (el corazón del sistema)
terminal/bash — comando copiable
openclaw gateway start # Arranca el Gateway como servicio
openclaw gateway stop # Para el servicio
openclaw gateway restart # Reinicia tras cambios críticos de servicio/config
openclaw gateway status # Estado del servicio
💡 Regla de oro: Tras cambios de servicio, Gateway o configuración crítica en ~/.openclaw/openclaw.json, ejecuta openclaw gateway restart. Para skills o archivos del workspace, abre una sesión nueva; si no ves el cambio, reinicia el Gateway.
Agentes y sub-agentes
terminal/bash — comando copiable
openclaw agents add nombre-agente # Crea un sub-agente nuevo
openclaw agents list --bindings # Lista agentes y a qué canales están vinculados
openclaw agents delete nombre-agente # Elimina un sub-agente; acción mutante
Canales (Telegram, Discord, WhatsApp)
terminal/bash — comando copiable
openclaw channels add --channel telegram --token "TU_TOKEN_AQUI" # Telegram
openclaw channels login # Canales con login interactivo, como WhatsApp
openclaw channels status # Estado de canales activos
⚠️ TU_TOKEN_AQUI es un marcador. No pegues tokens reales en el libro, chats, capturas, logs ni commits; introdúcelos solo en tu terminal local o mediante SecretRef/perfil seguro.
Diagnóstico
terminal/bash — comando copiable
openclaw doctor # Diagnóstico completo: config, seguridad, providers
openclaw configure # Reabre el asistente de configuración (cambiar API keys, etc.)
⚠️ openclaw doctor es tu mejor amigo. Si algo falla y no sabes por dónde empezar, este comando te dice qué está roto: API keys que faltan, puertos mal configurados, archivos del workspace corruptos, problemas de permisos.
Actualizaciones
terminal/bash — comando copiable
# Actualizar OpenClaw (usa npm, no hay un canal beta oficial)
npm install -g openclaw@latest
# Verificar qué versión tienes vs. la última publicada
npm view openclaw dist-tags.latest
openclaw --version
B — Comandos de Docker
Gestión de contenedores
terminal/bash — comando copiable
docker compose up -d # Arranca el stack en segundo plano
docker compose down # Para todo el stack
docker compose restart # Reinicia servicios sin recrear contenedores
docker compose pull && docker compose up -d # Actualiza imágenes y reinicia
docker compose logs -f --tail 100 # Logs en directo, últimas 100 líneas
docker compose ps # Estado de los servicios del stack
Inspección de contenedores
terminal/bash — comando copiable
docker ps # Contenedores corriendo
docker ps -a # Todos los contenedores (incluye parados)
docker exec -it nombre_contenedor bash # Entra al contenedor (shell interactivo)
docker logs -f nombre_contenedor # Logs en directo de un contenedor
docker logs --tail 50 nombre_contenedor # Últimas 50 líneas
docker inspect nombre_contenedor | grep Mounts # Volúmenes montados
Limpieza de Docker (cuando se llena el disco)
terminal/bash — comando copiable
docker system df # Cuánto espacio ocupa Docker
docker volume ls # Revisa volúmenes antes de tocar datos
docker image prune -f # Borra imágenes «colgantes» (dangling)
docker system prune -f # Tras revisar: limpia recursos no usados
# docker volume prune -f # Último recurso: requiere confirmación humana
⚠️ Mide antes de borrar: no ejecutes prune en hosts de producción desconocidos ni con servicios activos. docker volume prune puede borrar datos importantes si el volumen no está asociado a un contenedor corriendo; verifica primero con docker volume ls y confirmación humana.
Docker + OpenClaw (Ruta A típica)
terminal/bash — comando copiable
# Ruta Docker oficial validada en smoke test
git clone https://github.com/openclaw/openclaw.git
cd openclaw
export OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest
export OPENCLAW_SKIP_ONBOARDING=1
./scripts/docker/setup.sh
# Verificar contenedores y Gateway
docker compose ps
docker compose logs --tail 50
curl -s http://127.0.0.1:18789/healthz
curl -s http://127.0.0.1:18789/readyz
# Ir al directorio de tu stack OpenClaw (ajusta la ruta)
cd /docker/openclaw
# Arrancar tu instancia
docker compose up -d
# Ver logs del agente
docker compose logs -f openclaw-gateway
# Entrar al contenedor del agente
docker exec -it openclaw-gateway bash
Validado el 2026-05-20: Docker Desktop 4.74.0, Engine 29.4.3, Compose v5.1.3, OpenClaw CLI 2026.5.19. El Control UI respondió en http://127.0.0.1:18789; el smoke test solo verificó Gateway base, sin secretos ni proveedores configurados. Si la UI pide token tras usar OPENCLAW_SKIP_ONBOARDING=1, pega OPENCLAW_GATEWAY_TOKEN desde tu .env local o usa openclaw dashboard --no-open en privado. No publiques URLs con token.
Onboard no interactivo: openclaw onboard --non-interactive está soportado, pero exige --accept-risk y un token por entorno si usas --gateway-token-ref-env OPENCLAW_GATEWAY_TOKEN. En Docker de prueba, evita --install-daemon salvo que quieras un servicio persistente.
Si los logs dicen que falta gateway.mode, entra al contenedor o usa el CLI del stack y repara:
openclaw config set gateway.mode local
openclaw config set gateway.bind lan
openclaw gateway restart
En la reparación verificada también se limitó gateway.controlUi.allowedOrigins a http://localhost:18789 y http://127.0.0.1:18789. Después repite curl -s http://127.0.0.1:18789/healthz y curl -s http://127.0.0.1:18789/readyz. Los valores esperados en la prueba fueron {"ok":true,"status":"live"} y {"ready":true}.
C — Comandos de terminal (Linux/Ubuntu)
Red y conexión a servidores
terminal/bash — comando copiable
# SSH al VPS (sustituye USUARIO e IP por los tuyos)
ssh USUARIO@IP_DEL_VPS
# Copiar archivos al servidor
scp archivo.txt USUARIO@IP_DEL_VPS:/ruta/destino/
# Sincronizar directorios (sin transferir lo que ya está igual)
rsync -avz ./local/ USUARIO@IP_DEL_VPS:/remoto/
# Probar conectividad HTTPS y headers
curl -I https://tu-instancia.tu-dominio.tld
# Health check seguro del Gateway
openclaw gateway status
openclaw doctor
curl -s http://127.0.0.1:18789/healthz
curl -s http://127.0.0.1:18789/readyz
Firewall (UFW)
terminal/bash — comando copiable
ufw status # Estado del firewall y reglas activas
ufw allow 22/tcp # Abre SSH
ufw allow 80/tcp && ufw allow 443/tcp # Abre HTTP y HTTPS
ufw deny 18789 # Cierra el puerto del Gateway al exterior
ufw enable # Activa UFW con consola web disponible
ufw reload # Recarga reglas tras editarlas
⚠️ Antes de activar UFW vía SSH: asegúrate de haber permitido el puerto 22 y de tener la consola web del proveedor disponible. Si no, puedes perder el acceso al VPS.
Servicios del sistema (systemd)
terminal/bash — comando copiable
systemctl status openclaw-gateway # Estado del servicio
systemctl restart openclaw-gateway # Reinicia
systemctl enable openclaw-gateway # Arranca con el sistema
journalctl -u openclaw-gateway -n 100 # Últimas 100 líneas del journal
journalctl -u openclaw-gateway --since "1 hour ago" # Logs de la última hora
Búsqueda y manipulación de archivos
terminal/bash — comando copiable
tail -f /ruta/del/log # Sigue un log en tiempo real
grep "ERROR" archivo.log # Busca un patrón en un archivo
grep -rn "palabra" ./directorio/ # Búsqueda recursiva con números de línea
find /docker/ -name "docker-compose.yml" # Busca archivos por nombre
chmod 700 archivo # Solo el propietario: lee, escribe, ejecuta
chmod 644 archivo # Propietario: lee/escribe. Otros: solo leen
chown usuario:grupo archivo # Cambia propietario y grupo
Automatización con cron
terminal/bash — comando copiable
crontab -l # Lista tareas programadas
crontab -e # Edita el crontab
Sintaxis típica dentro del crontab:
@daily /ruta/script.sh # Ejecuta diario a medianoche
*/5 * * * * /ruta/script.sh # Cada 5 minutos
0 3 * * * /ruta/backup.sh # Todos los días a las 3:00 AM
D — Skills y ClawHub
terminal/bash — comando copiable
# Con la CLI nativa de OpenClaw
openclaw skills search "nombre-o-descripción" # Búsqueda semántica en ClawHub
openclaw skills install nombre-skill # Instala en el workspace activo
# Con la CLI dedicada de ClawHub (consulta y gestión avanzada)
clawhub search "nombre-o-descripción"
# Antes de instalar: abre la ficha en ClawHub y revisa SKILL.md, Files y Audits
clawhub install nombre-skill # Instala
clawhub install nombre-skill --version 1.2.3 # Instala una versión específica
clawhub list # Skills instaladas
⚠️ Nunca instales una skill sin auditarla (ver Capítulo 12). ClawHub muestra auditorías y escaneos como VirusTotal, ClawScan y análisis estático cuando están disponibles, además de reportes/moderación, pero no es infalible.
E — Estructura de directorios de OpenClaw
~/.openclaw/
├── openclaw.json ← Configuración central (Gateway, providers, agentes)
├── models.json ← Modelos disponibles y preferencias de routing
├── auth-profiles.json ← Perfiles de autenticación y proveedores
├── credentials/ ← Credenciales/SecretRefs gestionadas por OpenClaw
├── sessions/ ← Historial de conversaciones (SQLite)
│ └── *.db
└── workspace/ ← Workspace del agente principal
├── SOUL.md ← Personalidad del agente
├── USER.md ← Tu perfil (a quién sirve)
├── AGENTS.md ← Reglas operativas, routing, procedimientos
├── TOOLS.md ← Notas de herramientas y entorno
├── MEMORY.md ← Memoria persistente
├── HEARTBEAT.md ← Tareas programadas
├── IDENTITY.md ← Nombre, emoji, avatar
├── BOOTSTRAP.md ← Instrucciones de primer arranque (se borra después)
├── memory/ ← Notas estructuradas
│ └── 2026-04-05.md
└── skills/ ← Skills del workspace
└── nombre-skill/
└── SKILL.md ← Instrucciones de carga de la skill
/docker/openclaw/
├── docker-compose.yml ← Definición del stack (Ruta A)
├── .env ← Variables de entorno (API keys, tokens) — NUNCA al repo
└── data/ ← Datos persistentes del contenedor
└── .openclaw/ ← Espejo del workspace dentro del contenedor
/docker/traefik/
├── docker-compose.yml ← Reverse proxy + SSL (Ruta A)
└── acme.json ← Certificados Let's Encrypt (chmod 600, no compartir)
F — Tabla de referencia rápida
G — Troubleshooting: qué hacer cuando algo falla
Problema: openclaw: command not found
terminal/bash — comando copiable
# Verifica que Node.js está en el PATH
which node
# Si no aparece, añade el directorio global de npm al PATH
export PATH=$PATH:$(npm config get prefix)/bin
# Reinstala
npm install -g openclaw@latest
Problema: el Gateway no arranca porque el puerto está ocupado
terminal/bash — comando copiable
# Identifica qué proceso usa el puerto 18789
lsof -i :18789
# Intenta cierre normal primero; kill -9 solo como último recurso
kill PID
# kill -9 PID
# Reintenta
openclaw gateway start
Problema: el agente responde pero el modelo da errores
terminal/bash — comando copiable
# Verifica la configuración del provider
cat ~/.openclaw/openclaw.json
# Diagnóstico automático
openclaw doctor
# Si usas Ollama, verifica que el modelo está descargado
ollama list
# Si falta el modelo
ollama pull qwen3:8b
Problema: el certificado SSL no se renueva (Traefik + Let's Encrypt)
terminal/bash — comando copiable
# Reparación avanzada: cuarentena el certificado antes de regenerarlo
docker compose down
cp /docker/traefik/acme.json "/docker/traefik/acme.json.$(date +%Y%m%d_%H%M%S).bak"
mv /docker/traefik/acme.json "/docker/traefik/acme.json.quarantine.$(date +%Y%m%d_%H%M%S)"
install -m 600 /dev/null /docker/traefik/acme.json
chmod 600 /docker/traefik/acme.json
docker compose up -d
docker compose logs -f traefik # Verifica que regenera
Problema: un contenedor Docker no arranca
terminal/bash — comando copiable
# Lee los últimos errores
docker compose logs --tail 50
# Verifica el estado
docker compose ps
# Reinicio completo
docker compose down && docker compose up -d
Problema: el agente no responde en Telegram
terminal/bash — comando copiable
# Verifica que el canal está activo
openclaw channels status
# Filtra logs específicos del canal
journalctl -u openclaw-gateway --since "10 min ago" | grep -i telegram
# Si el bot no responde, suele ser token caducado o agente sin binding
openclaw agents list --bindings
Problema: disco lleno en el VPS
terminal/bash — comando copiable
df -h # Espacio disponible por partición
docker system df # Cuánto ocupa Docker
docker system prune -f # Limpia recursos no usados tras revisar
journalctl --vacuum-time=3d # Borra logs de sistema con más de 3 días
find /tmp -mindepth 1 -mtime +2 -print # Revisa temporales antiguos antes de borrar
La regla de los 30 segundos
Si llevas más de 30 segundos buscando un comando, vuelve aquí. Si el comando no está aquí, es porque no lo necesitas hoy. Hazlo cuando importe, no antes.
LAT3DEV