Volver al inicio

Guía para instalar OpenClaw AI en VPS

Guía para desplegar agente de IA OpenClaw en VPS con docker-compose y scripts bash. Agente gestiona contenedores, PostgreSQL, monitorea sitios vía Telegram. Arquitectura completa, ejemplos de código, configuración de contexto.

OpenClaw en VPS: agente de IA para DevOps en Telegram
Advertisement 728x90

Desplegar OpenClaw AI Agent en VPS: Guía paso a paso con scripts

OpenClaw es un agente de IA de código abierto para gestionar tu VPS a través de Telegram. Pila completa: docker-compose, scripts en bash, configuraciones de contexto. Clona el repositorio, configura .env con claves API, ejecuta deploy.sh — el sistema listo en 10 minutos. El agente supervisa contenedores, ejecuta consultas SQL, reinicia servicios y verifica latidos.

Arquitectura del sistema

OpenClaw se ejecuta en un contenedor Docker ghcr.io/openclaw/openclaw con montajes para /var/run/docker.sock, /var/www/projects y /var/log/nginx. El contexto de workspace/SOUL.md define el comportamiento: lista de contenedores PostgreSQL, tabla de proyectos, reglas de seguridad.

Los scripts en /tools/ se activan por solicitudes:

Google AdInline article slot
  • docker-status.sh, docker-logs.sh, docker-restart.sh
  • db-discover.sh, db-query.sh para PostgreSQL
  • health-check.sh para monitoreo de sitios HTTP
  • system-stats.sh, security-check.sh

El agente maneja lenguaje natural: “logs del servicio auth” → docker-logs.sh auth-container.

Requisitos mínimos

  • Ubuntu 20.04+ o Linux con Docker Compose V2 (docker compose version)
  • 2 GB RAM (agente ~300–500 MB)
  • Clave API de OpenRouter (openrouter.ai/keys) para GPT-4o, modelos Claude
  • Token de bot de Telegram de @BotFather

Paso 1: Configuración del repositorio

ssh user@tu-servidor
git clone https://github.com/ShyDamn/openclaw-devops-kit.git /tmp/openclaw-setup
cd /tmp/openclaw-setup

Estructura:

openclaw-devops-kit/
├── docker-compose.yml
├── .env.example
├── deploy.sh
├── config/openclaw.json
├── workspace/SOUL.md, USER.md, HEARTBEAT.md
└── tools/ (14 scripts: docker-*.sh, db-*.sh, health-check.sh, etc.)

Paso 2: Bot de Telegram y .env

  • @BotFather → /newbot → token 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
  • @userinfobot → tu ID 778921250
cp .env.example .env
nano .env
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxx
YOUTRACK_TOKEN=perm:tu-token-aqui  # opcional

En config/openclaw.json:

Google AdInline article slot
"allowFrom": [
  "tg:778921250"
]

Paso 3: Configuración de contexto en workspace/

SOUL.md — Comportamiento principal

Lista tus contenedores PostgreSQL y proyectos:

## Contenedores PostgreSQL: db1, db2, db3

| Path | Proyecto | Stack |
|------|----------|-------|
| /projects/my-app/ | SaaS | Next.js + PostgreSQL |
| /projects/api/ | Backend | NestJS |

Reglas: lecturas sin confirmación, ediciones con doble verificación.

USER.md — Tu perfil

Zona horaria, pila tecnológica, proyectos clave.

Google AdInline article slot

HEARTBEAT.md — Lista de verificación horaria

Monitoreo de recursos, estado de contenedores, sitios HTTP.

Paso 4: Monitoreo de sitios

En tools/health-check.sh:

SITES=(
  "mysite.com|mysite-frontend|mysite"
  "api.mysite.com|mysite-api|mysite"
)

Formato: dominio|contenedor|proyecto. Ante 5xx/timeout — reinicio automático, notificación en fallos.

Paso 5: Despliegue y lanzamiento

bash deploy.sh

Automatización:

  • Verificar Docker Compose V2
  • Crear /var/www/openclaw/
  • Establecer permisos .env (chmod 600)
  • Descargar imagen
  • Iniciar contenedor

Emparejamiento Telegram:

cd /var/www/openclaw
docker compose run --rm --profile cli openclaw-cli pairing approve telegram <CÓDIGO>

Desglose de scripts clave

docker-logs.sh

#!/bin/bash
CONTAINER="${1:?Uso: docker-logs.sh <nombre_contenedor> [líneas]}"
LINES="${2:-50}"
docker logs --tail "$LINES" "$CONTAINER" 2>&1

Detecta automáticamente contenedor desde SOUL.md.

system-stats.sh

#!/bin/bash
echo "=== RAM ==="
free -h
echo ""
echo "=== DISCO ==="
df -h / | tail -1
# ... CPU, estadísticas docker

Salida completa para latido.

db-discover.sh — Descubrimiento de bases de datos

#!/bin/bash
for c in $(docker ps --format '{{.Names}}' | grep -i postgres); do
  echo "=== $c ==="
  DB_USER=$(docker exec "$c" printenv POSTGRES_USER 2>/dev/null)
  # ...
  docker exec "$c" psql -U "$DB_USER" -d "$DB_NAME" -c "\dt"
done

Encuentra automáticamente instancias PostgreSQL, extrae POSTGRES_USER/POSTGRES_DB, lista tablas.

db-query.sh

Ejecuta SQL con parámetros de contenedor.

Puntos clave

  • Contexto SOUL.md es crítico: Sin tabla de proyectos/contenedores, el agente pide detalles.
  • Lista blanca en openclaw.json: Acceso solo por ID de Telegram, sin fugas.
  • Health-check.sh con reinicio auto: 5xx → reinicio → verificación → notificación.
  • Licencia MIT: Control total sobre scripts/configs.
  • OpenRouter: Rotación de modelos (GPT-4o, Claude) en fallos, una sola API.

— Editorial Team

Advertisement 728x90

Leer después