# RUNBOOK — Telegram rich_messages + restart via Portainer API **Statut** : Validé 2026-06-24 **Scope** : Toutes instances Hermes (tt / nyora / perso / Desktop MacBook) --- ## Symptôme Instance Hermes envoie des messages Telegram en texte brut : pas de MD tables, pas de gras, pas d'emoji. Une autre instance fonctionne bien. ## Cause racine Flag `rich_messages: false` dans `config.yaml` de l'instance. ```yaml # /opt/data/config.yaml (vue depuis le container) # = /mnt/docker/hermes-platform//data/config.yaml (vue depuis le NAS) telegram: extra: rich_messages: false # ← coupable ``` ## Fix (30 secondes) ```bash # Depuis le NAS ou mcp-nas : sed -i 's/rich_messages: false/rich_messages: true/' \ /mnt/docker/hermes-platform//data/config.yaml # Vérifier : grep rich_messages /mnt/docker/hermes-platform//data/config.yaml # → rich_messages: true ``` Puis redémarrer l'agent (voir section ci-dessous). ## Effet de rich_messages: true - Pipe tables MD rendues nativement dans Telegram - Gras, italique, emoji fonctionnels - Messages **texte** (pas d'image/screenshot) → légers, sélectionnables, copiables, modifiables - Méthode `telegram-output` skill : pipe MD direct, sans pipeline HTML → Browser → Screenshot ## Redémarrer un agent Hermes depuis mcp-nas (sans SSH) SSH inaccessible depuis mcp-nas. Pas d'endpoint `/reload` sur l'agent. **Solution : Portainer API.** ```bash # 1. Authentification TOKEN=$(curl -s -X POST http://172.17.0.1:9000/api/auth \ -H "Content-Type: application/json" \ -d '{"username":"bestof","password":""}' \ | python3 -c "import sys,json; print(json.load(sys.stdin)['jwt'])") # 2. Trouver l'ID du container curl -s -H "Authorization: Bearer $TOKEN" \ "http://172.17.0.1:9000/api/endpoints/2/docker/containers/json?all=true" \ | python3 -c " import sys, json for c in json.load(sys.stdin): name = c['Names'][0].lstrip('/') if 'hermes' in name: print(c['Id'][:12], name, c['State']) " # 3. Restart curl -s -o /dev/null -w "%{http_code}" -X POST \ -H "Authorization: Bearer $TOKEN" \ "http://172.17.0.1:9000/api/endpoints/2/docker/containers//restart" # → 204 = succès # 4. Vérifier santé (attendre ~15s) sleep 15 && curl -s http://hermes-agent-:8642/health # → {"status": "ok", ...} ``` ## IDs containers (juin 2026 — peuvent changer après recreate) | Container | ID court | |---|---| | hermes-agent-tt | eb44e9c8225f | | hermes-agent-nyora | d5f198348abb | | hermes-agent-perso | 91f7d7cec688 | > ⚠️ Les IDs changent après `docker compose up --force-recreate`. Toujours re-lister si le restart renvoie 404/500. ## Application MacBook Hermes Desktop Même mécanique, même `config.yaml`, même flag. **Vérifier `rich_messages: true` en premier** avant tout debug Telegram sur une nouvelle instance. Les credentials Portainer sont dans `/volume1/docker/hermes-platform/.env` (NAS) ou l'équivalent local sur le Mac. --- **Runbook lié** : `common/portainer-api-container-ops.md` (à créer si besoin) **Note NyoraNotes** : vault hermes-perso, tags [infra, runbook, telegram]