Files
nas-runbooks/common/veille-infra-v2-montee-fix-activation.md
T

4.4 KiB

Veille Infra v2 — montée + fix activation n8n "Version not found"

Date : 15/07/2026 · Sphère : infra · Statut : opérationnel

Objectif

Digest infra quotidien unique : santé (conteneurs, disques, SMART, certs, VPS Contabo, backup USB) + veille techno/CVE (releases GitHub, CVE NVD), synthèse par LLM gratuit (Bifrost/gemini-2.5-flash), livré Email + Telegram.

Architecture

  • Collecteur /volume1/docker/veille-infra/veille_infra.py (py3.8 + requests, aucun secret dans le script).
    • Santé : docker ps (Best0f, sans sudo) ; df -Ph /volume1 / ; SMART best-effort → need_root si non-root ; certs acme/*bolbol* (glob échappé) ; VPS via tailscale ping sinon "non vérifié" (jamais de faux "injoignable") ; backup /volumeUSB1.
    • Veille : GitHub releases/latest (n8n, gitea, portainer, crowdsec, baserow) ; CVE NVD par mot-clé.
    • Verdict OK/ATTENTION/CRITIQUE + alertes. Synthèse LLM si /volume1/docker/veille-infra/.bifrost_vk (chmod 600) présent → POST http://192.168.100.33:3085/v1/chat/completions header x-bf-vk, model gemini-2.5-flash.
    • Rendu HTML (navy #1A1A2E / or #B8862A, footer Nyora) + Telegram, POST https://n8n.nd.i234.me/webhook/veille-infra.
    • Debug : VEILLE_DUMP=1 → écrit last_payload.json, pas de POST.
  • Workflow livraison n8n X51xQsOpXeedaBKt : Webhook POST veille-infra → Email (IK.ME SMTP 7eBO8ta5EiZOVufh) + Telegram (ND_Telegram OyOHh6jAzCDsiBux, chat 2084513684). Creds auto-assignées. E2E OK (exec 32550 success).
  • Ordonnancement : tâche DSM Planificateur root, quotidienne 08:00 Tunis, python3 /volume1/docker/veille-infra/veille_infra.py (root requis pour SMART). À créer via UI web DSM.

FIX RÉUTILISABLE — publish n8n "Version not found"

Depuis la coupure/purge, workflow_entity.versionId peut pointer vers une version absente de workflow_history (les updates MCP changent versionId sans historiser) → publishVersion échoue en FK. La recréation NE corrige PAS. Le restart n8n NON PLUS.

Correctif (DB Postgres n8n-DB, rayon d action = 1 ligne) :

select "versionId" from workflow_history where "workflowId"='<WF>' order by "createdAt" desc limit 1;
update workflow_entity set "versionId"='<versionId-historisée>' where id='<WF>';

puis publish_workflow MCP → actif (active=t, activeVersionId==versionId).

Dette sécu (rotation)

  • Token Telegram en clair dans le node Code de "INFRA | OpenHuman Watch" (9MkE8Fx3ZlY485Y5) → roter + passer sur credential ND_Telegram.
  • Mot de passe Postgres n8n faible (n8npass).
  • VK Bifrost bfk-0c… (déjà flaggée, transitée en clair).

INCIDENT 25/07/2026 — digest jamais parti depuis le 15/07 (tache DSM jamais creee)

Constat : execution_entity du workflow X51xQsOpXeedaBKt ne compte que 2 executions, 32550 et 32551, toutes deux le 15/07/2026 (tests manuels de validation). Zero execution depuis, soit 10 jours de silence total sur Telegram et email. Cause confirmee : /etc/crontab ne contient aucune ligne pour veille_infra.py ; les 10 taches synoschedtask existantes datent toutes d'avant juillet 2026 (taches systeme historiques). L'etape "a creer via UI web DSM" du plan initial n'a jamais ete faite, le pipeline est valide bout-en-bout mais n'a jamais ete branche a un declencheur automatique.

Statut : passe de "operationnel" a "construit, non ordonnance".

Effet de bord repere en creusant : conteneur veille-frontend (app nyora-veille, dashboard de curation, sans lien avec ce digest infra) tombe le 21/07, notifie uniquement via l'alerte Synology native (sns@synologynotification.com), redemarre depuis (17h up au 25/07). Ce canal natif fonctionne bien pour du temps reel ; le digest quotidien n'a pas vocation a le dupliquer.

Action requise (root, DSM UI, non automatisable via mcp-nas) : creer la tache Panneau de configuration -> Planificateur de taches -> Creer -> Tache declenchee -> Script defini par l'utilisateur, executee en tant que root, quotidienne 08:00, commande python3 /volume1/docker/veille-infra/veille_infra.py.

Recommandation v2 (a construire, necessite acces n8n MCP) : ajouter un heartbeat, un second workflow n8n (Schedule Trigger 09:00) qui verifie si X51xQsOpXeedaBKt a eu une execution success dans les dernieres 30h et alerte Telegram si silence. Objectif : que ce type de panne silencieuse de 10 jours ne puisse plus se reproduire sans alerte.