# 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=TELEGRAM_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.