4NK_env/IA_agents/deploy.md
LeCoffre Deployment a82b2fe520 ci: docker_tag=ext
Update 4NK Environment - Agents IA Integration
- Documentation mise à jour pour agents IA
- Scripts améliorés avec contexte agents IA
- Structure clarifiée (dépôts 4NK vs LeCoffre)
- Contexte et outillage complet pour agents IA
- README.md mis à jour avec architecture agents IA
2025-09-21 19:48:39 +00:00

8.5 KiB
Raw Blame History

agent_deploy.md

Respecte totalement et impérativemment les informations de ce document.


Contexte

Consulte attentivement IA_agents/context.md. Consulte attentivement IA_agents/flux.md. Reste toujours sur la branche git "ext" Fait toujours les build via CI avec des images docker pour le docker registry tagées "ext" Déclanche toujours avec un tag "ext" remplace le précédent.


Objectifs

Le déploiement se fait depuis le répertoire lecoffre_node/, en utilisant les scripts présents dans scripts/. Ces scripts doivent évoluer au fil des retours et être améliorés plutôt que dupliqués. Arretes toi pour corriger chaque problème rencontré avant de passer à la suite. C'est une VM dont assures toi que tous les services écoutent et soient accessibles de l'exétieur via le nom de domaine.

Dans tous les projets à vérifier un par un dont lecoffre_node:

  • Analyse le dossier pour bien le comprendre
  • Analyse le code pour bien le comprendre
  • Une branche Git dédiée ext existe.
  • Aucun tag Git nommé ext nexiste.
  • Les services doivent écouter sur 0.0.0.0 (et non sur 127.0.0.1).
  • Le serveur ngnix gère les url d'accès extérieurs
  • Corrige aussi les erreurs non critiques.

Via les scripts, lance tous les services de lecoffre_node/docker-compose.yml.

Procédure générale

Vérifications initiales par projet

  1. Vérifier que le dépôt distant est public (si possible).
  2. Vérifier lutilisation des clés SSH pour le déploiement Git (idéalement ~/.ssh/id_ed25519)
  3. Vérifier que la branche courante est bien ext.
  4. Mettre à jour les dépendances et les langages
  5. Vérifier les variables denvironnement.

Mise à jour et construction par projet

  1. Supprime les caches, Optimise le build du projet et build le projet.
  2. Mettre à jour la documentation.
  3. Mettre à jour les tests.
  4. Mettre à jour les scripts.
  5. Vérifier que la présence et le contenu exhaustif et spécifique de :
    • .gitignore
    • .dockerignore
    • .cursorignore

Synchronisations par projet

  1. Synchroniser les configurations dans lecoffre_node/conf. Les configurations ngnix doivent toutes être cenralisées dans lecoffre_node/conf/ngninx (à synchroniser par des copies depuis lecoffre_node vers les fichiers cibles qui seront réellement utilisés -sauf dans lecoffre_node ce sont les fichiers de lecoffre_node/conf/ qui sont utilisés-, toujours vérifier la cohérence entre les copie et les fichiers utilisés, à intégrer dans le script existant de synchronisation à mettre à jour). Ne pas faire de liens symboliques pour les confs afin de le maintenir via git et docker.
  2. Synchroniser les logs dans lecoffre_node/logs (brancher grafana pour un dashboard par projet)

Sécurité et conformité par projet

  1. Vérifier que le code ne fournit pas :
    • de données personnelles,
    • de données sensibles exploitables,
    • de failles de sécurité.

Gestion Git par projet

  1. Pousser toutes les modifications sur la branche Git ext.
  2. Supprimer les fichiers distants non suivis par Git.

Analyse et correction par projet

  1. Analyser les logs.
  2. Corriger toutes les erreurs, petites et grosses, sans désactivation, sans simplification, sans contournement.
  3. Tester.
  4. Analyser de nouveau les logs.
  5. Vérifier que les logs ne contiennent pas de données personnelles ou sensibles.
  6. Corriger à nouveau si nécessaire (jusqu'à l'absence totale d'erreurs)

Boucle damélioration par projet

  1. Ne pas créer de nouvelles versions de scripts : améliorer et tester ceux existants.
  2. Mettre à jour la documentation avec le retour dexpérience à chaque fois par une mise à jour de docs/REX.md.
  3. Recommencer si nécessaire pour obtenir un déploiement fluide et parfait.
  4. Documenter toute nouvelle connaissance technique ou fonctionnelle acquise.
  5. Répéter la synchronisation des confs et logs.
  6. Pousser toutes les modifications sur la branche ext.
  7. Supprimer à nouveau les fichiers distants non suivis.
  8. Répéter anal

Lancement des services

  1. Via les scripts, lance tous les services de lecoffre_node/docker-compose.yml.
  2. Corriger toutes les erreurs, petites et grosses, sans désactivation, sans simplification, sans contournement.
  3. Tester.
  4. Analyser de nouveau les logs.
  5. Vérifier que les logs ne contiennent pas de données personnelles ou sensibles.
  6. Corriger à nouveau si nécessaire (jusqu'à l'absence totale d'erreurs)
  7. Mettre à jour la documentation avec le retour dexpérience à chaque fois par une mise à jour de docs/REX.md.
  8. Recommencer si nécessaire pour obtenir un déploiement fluide et parfait.
  9. Assures toi d'être à jour pour le service grafana
  10. Assures toi d'avoir bien synchroniser la conf ngnix et relance le serveur ngnix
  11. Vérifie que Loki, Promtail et Grafana sont ok avec des dashboard alimentés
  12. Vérifie qu'il n'y a aucun conflit de ports

Spécificités Dockerfile par projet

Architecture Docker optimisée (2024-12-19)

Base standardisée : Tous les Dockerfiles utilisent debian:bookworm-slim pour la cohérence et la légèreté.

Règles Dockerfile obligatoires

Pour tous les projets contenant un Dockerfile, avant de pousser sur la branche ext :

1. Base et packages minimaux

FROM debian:bookworm-slim
RUN apt-get update && apt-get upgrade -y && \
    apt-get install -y --fix-missing \
    ca-certificates curl jq git && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

Packages obligatoires :

  • ca-certificates : Certificats SSL/TLS
  • curl : Requêtes HTTP
  • jq : Traitement JSON
  • git : Clonage de dépôts (si nécessaire)

2. Installation Node.js (pour les services Node.js)

RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get install -y nodejs && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

3. Utilisateur non-root standardisé

RUN useradd -m -u 1000 appuser && \
    mkdir -p /app && chown -R appuser:appuser /app
USER appuser

4. Optimisations obligatoires

  • Optimise les Layers : Combine les RUN commands
  • Exclu les fichiers inutiles : Vérifier .dockerignore
  • Nettoyage complet : Supprimer tous les caches apt
  • Pas de clés SSH : Utiliser HTTPS pour les repos publics
  • Pas de packages de développement : Seulement les packages runtime

5. Packages interdits en production

Ne pas installer :

  • build-essential, autoconf, automake, libtool
  • cmake, ninja-build, clang, lldb, lld, make
  • tree, ncdu, mc, exuberant-ctags, cscope
  • vim, emacs, sed, gawk
  • inetutils-tools, iputils-*, net-tools, iproute2
  • python3-dev, go, rust, cargo
  • wscat (utiliser au besoin via npm install)

6. Image de base réutilisable

Utiliser l'image de base créée dans lecoffre_node/base-image/ pour de nouveaux services.

Services avec Dockerfiles optimisés

  • sdk_relay : Debian bookworm-slim + Rust binary
  • sdk_signer : Debian bookworm-slim + Node.js 20
  • sdk_storage : Debian bookworm-slim + Rust binary
  • lecoffre-back-mini : Debian bookworm-slim + Node.js 19
  • lecoffre-front : Debian bookworm-slim + Node.js 19
  • ihm_client : Debian bookworm-slim + Node.js 20
  • miner : Debian bookworm-slim + Python 3.11

Processus de déploiement

Après le push sur la branche Git ext :

  1. Créer/supprimer le tag Docker ext
  2. Pousser l'image sur le tag Docker ext via la CI
  3. Vérifier le succès du build CI

Tailles d'images cibles

  • Services légers : 120-200MB
  • Services avec Node.js : 180-250MB
  • Services avec Python : 200-300MB

Autres

N'attend pas infiniment le résultat des curls. Si j'interromp un terminal c'est surement que tu attendais pour rien, dans ce cas analyse la sortie du terminal. Tests toute les urls publiques depuis l'extérieur avant de dire qu'elles sont OK. Veuiller à tester les websockets spécifiquement et les services http(s) spécifiquement aussi. Vérifie que tous les imports sont présents. Déclanche les builds via CI. Vérifie les droits et le résultats de l'écriture sur les fichiers de conf ngninx et sur les fichiers de conf de Bitcoin.


Met à jour ce document si tu détectes des incohérences ou pose des questions pour confirmer. Propose des améliorations dans un document lecoffre_node/IA_agents/todo.md