Files
biblioteca_conocimiento_lab…/vps_opencode_bot/README.md

2.3 KiB

opencode_tg — Bot de Telegram para OpenCode (VPS)

Bot que permite usar OpenCode desde el móvil vía Telegram. Corre en el VPS Contabo junto a opencode serve (headless). Sin librerías extra (solo requests), long-polling, whitelist por chat_id.

Despliegue

  • Código: /opt/opencode-tg/opencode_bot.py
  • .env: /opt/opencode-tg/.env
  • Repo activo del serve: /etc/opencode-tg/repo.env (REPO_DIR=...)
  • Servicios systemd:
    • opencode-serve.service → opencode serve --hostname 127.0.0.1 --port 4097 dentro de $REPO_DIR (credenciales OPENCODE_SERVER_USERNAME/PASSWORD).
    • opencode-tg.service → el bot.

Para cambiar de repo el bot reinicia opencode-serve (escribe repo.env). Cada chat conserva su sesión y modelo en estado.json.

Comandos del bot

/start /ayuda     ayuda
/nueva [texto]    sesión nueva (olvida el contexto)
/proyecto         elegir repo de /home/Github (inline)
/modelo           elegir modelo (inline)
/estado           repo, sesión y modelo actuales
cualquier texto   → lo ejecuta OpenCode en la sesión del chat

Entrega: texto como HTML (bloques ``` en

), ficheros creados/editados
como documentos adjuntos (se leen de state.metadata.files del historial).

PENDIENTE (único paso manual)

  1. Crear el bot con @BotFather y copiar el token.
  2. Rellenar en /opt/opencode-tg/.env:
    TELEGRAM_BOT_TOKEN=<token>
    TELEGRAM_CHAT_ID=<tu chat_id>
    
    (TELEGRAM_CHAT_ID puede ser una lista separada por comas.)
  3. Arrancar:
    systemctl enable --now opencode-tg
    

API comprobada contra opencode 1.17.15: POST /session, POST /session/:id/message (body parts + model con providerID/modelID), GET /session/:id/message, GET /config/providers, GET /global/health, GET /project.

Vigilancia de salud del VPS (05-09-2026)

Tras un incidente de criptomineros en el VPS se instaló vigilancia automática:

  • vps_miner_watch.sh — cron */10 * * * *: detecta y mata procesos "rojos" (ejecutable en /tmp, memfd o deleted, CPU > 80 %). Log: /root/vps_miner.log.
  • vps_check.sh — cron 17 */4 * * *: revisión completa (carga, memoria, disco, top CPU, mineros, servicios opencode/docker). Log: /root/vps_health.log.

Ambos viven en /usr/local/bin/ del VPS. Desplegar de nuevo copiándolos ahí y (re)instalando las líneas de cron correspondientes.