Séparation de la génération du docker-compose et empêcher la copie dans storage/
- Créé generate_docker_compose.sh pour générer uniquement docker-compose.yml.auto
- Refactorisé generate_variables.sh pour générer uniquement .env.auto
- Mis à jour replace_variables_and_copy.sh pour ne pas copier docker-compose.yml.auto dans storage/
- Mis à jour generate.sh pour orchestrer 7 étapes au lieu de 6
- Mis à jour la documentation README.md pour refléter les changements
- docker-compose.yml.auto et .env.auto restent dans templates/dev/ pour le traitement mais ne sont plus déployés dans storage/
Empêcher la copie de .env.auto dans storage/
- Supprimé la ligne copiant .env.auto vers storage/dev/ dans replace_variables_and_copy.sh
- Mis à jour README.md pour refléter que .env.auto n'est plus copié dans storage/
- .env.auto reste dans templates/dev/ pour le traitement des variables mais n'est pas déployé
- Ajout de la génération dynamique des ports pour Nginx dans docker-compose.yml.auto
- Nginx a maintenant accès à tous les ports de tous les services pour le routage
- Correction de la génération de la variable HOST dans generate_variables.sh
- Amélioration du nettoyage des ports vides dans docker-compose.yml.auto
- Génération automatique de toutes les configurations Nginx (upstreams, internes, HTTPS)
- Nginx traité comme un module dans _4NK_modules/nginx/
- Tous les ports de tous les services ajoutés aux configurations Nginx
- Correction des chemins relatifs dans les scripts de génération
- Système de templates complètement fonctionnel avec remplacement des variables
- Correction complète du script generate_nginx_configs.sh
- Tous les fichiers nginx sont maintenant générés dans _4NK_modules/nginx/
- Désactivation du traitement du répertoire nginx/ dans replace_variables_and_copy.sh
- Mise à jour des messages d'affichage dans generate.sh
- Cohérence avec la structure des modules 4NK
- Nginx traité comme un module 4NK standard dans _4NK_modules/
- Correction des scripts generate_grafana_dashboards.sh et generate_promtail_config.sh
- Les dashboards Grafana sont maintenant générés dans _4NK_modules/grafana/dashboards/
- La configuration Promtail est maintenant générée dans _4NK_modules/promtail/
- Désactivation du traitement du répertoire 4NK_modules dans replace_variables_and_copy.sh
- Mise à jour des messages d'affichage dans generate.sh
- Cohérence avec la structure existante _4NK_modules/
- Modification du script replace_variables_and_copy.sh pour traiter TOUS les types de fichiers
- Exclusion explicite du répertoire _keys (répertoire sensible)
- Ajout du traitement des répertoires: git, monitoring, projects, supervisor
- Suppression des fichiers _keys précédemment copiés par erreur
- Vérification: tous les fichiers templates/dev/ sont maintenant copiés vers storage/dev/ sauf _keys
- Correction du script replace_variables_and_copy.sh pour traiter TOUS les fichiers
- Ajout de tous les fichiers .env, .gitkeep, .toml, torrc manquants
- Vérification: 39 fichiers templates -> 55 fichiers storage (tous copiés)
- Tous les modules 4NK maintenant présents dans storage/dev/_4NK_modules/
- Régénération de tous les fichiers dans storage/dev/ avec variables remplacées
- Mise à jour des dashboards Grafana avec variables d'environnement
- Configuration Promtail mise à jour avec paths et services
- Configurations logrotate mises à jour pour tous les services
- Configurations Nginx (upstreams, ports internes, HTTPS) mises à jour
- bitcoin.conf avec ZMQ host:port correctement résolus
- .env.auto et docker-compose.yml.auto avec toutes les variables
- Templates nginx mis à jour avec dernières modifications
- Remplacement des références ${VARIABLE} par des valeurs directes
- Correction des variables Docker et URLs pour éviter les erreurs de résolution
- Amélioration de la génération des ports Bitcoin spécifiques
- Correction du template bitcoin.conf pour inclure le nom du conteneur Docker
- Introduction du système de templates avec séparation templates/storage
- Scripts de génération automatisée pour toutes les configurations
- Résolution multi-passes des variables imbriquées
- API simplifiée qui lit uniquement storage/ (plus de traitement de variables)
- Documentation complète du nouveau système
- Support des services externes (BOOTSTRAP, LECOFFRE_BACK_MINI)
- Protection des templates sources et isolation des environnements
Séparation des scripts de génération et amélioration de l'architecture
- Séparé generate_grafana_dashboards.sh en 3 scripts distincts :
* generate_grafana_dashboards.sh (dashboards uniquement)
* generate_promtail_config.sh (configuration Promtail)
* generate_logrotate_configs.sh (configurations Logrotate)
- Supprimé generate_docker_compose.sh et generate_docker_variables.sh
- Centralisé la génération des variables dans generate_variables.sh
- Mis à jour generate.sh pour une architecture en 5 étapes
- Corrigé les chemins de sortie et les références de variables
- Ajouté la gestion d'erreurs pour les fichiers .env problématiques
- Généré toutes les configurations Nginx, Grafana, Promtail et Logrotate
- Amélioré la modularité et la maintenabilité du code
- Ajout des fichiers Python temporaires (*.pyc, *.pyo, *.pyd, __pycache__/)
- Ajout des fichiers de logs (*.log, logs/, log/, **/logs/, **/log/)
- Ajout des fichiers temporaires (*.tmp, *.temp, *.swp, *.swo, *~)
- Ajout des fichiers d'environnement de développement (.env.local, .env.development, etc.)
- Ajout des fichiers de système (.DS_Store, Thumbs.db, .vscode/, .idea/)
- Ajout des fichiers de sauvegarde (*.bak, *.backup, *.old)
Cela évite de voir les fichiers temporaires dans git status et améliore la propreté du repository.
- Restructuration des modules 4NK vers storage/dev/4NK_modules/
* 4NK_certificator, 4NK_miner, 4NK_web_status
* bitcoin, blindbit-oracle, grafana, ihm_client
* loki, promtail, redis, sdk_relay, sdk_signer, sdk_storage, tor-proxy
- Restructuration des projets vers storage/dev/projects/
* Projet lecoffre avec ses composants:
- lecoffre-back-mini, lecoffre-front, lecoffre_node
- docker-compose.yml et docker-compose.yml.auto
- Mise à jour des fichiers .env et .env.auto pour refléter la nouvelle structure
- Amélioration de l'organisation des configurations par modules et projets
- Séparation claire entre les modules 4NK réutilisables et les projets spécifiques
- Ajout du fichier docker-compose.yml.auto dans le répertoire lecoffre_node
- Mise à jour du script generate_variables.sh pour générer le docker-compose.yml au bon endroit
- Mise à jour des fichiers .env et .env.auto avec les dernières modifications
- Suppression de l'ancien docker-compose.yml généré au mauvais endroit
- Amélioration de la structure de génération des fichiers de configuration
- Mise à jour de l'API pour charger les fichiers .env dans l'ordre: .env.secrets -> .env -> .env.auto -> .env.post
- Ajout du script generate_variables.sh pour générer automatiquement les variables Docker
- Création des fichiers .env.auto et .env.post pour le templating complet
- Mise à jour de la documentation pour refléter le nouvel ordre de chargement
- Génération automatique du docker-compose.yml avec templates des services
- Support complet des variables emboîtées entre les fichiers d'environnement
- Keep Cursor-specific content in .cursorignore and .dockerignore
- Keep comprehensive Git ignore rules in .gitignore
- Maintain protection for sensitive files and directories
- Modifier examples/usage.ts pour utiliser VAULT_CONFS_DIR depuis .env au lieu de '../confs' hardcodé
- Ajouter test-usage.js comme script de test fonctionnel
- Nettoyer les anciens fichiers de debug et test
- Ajouter **/confs*/ au .gitignore pour éviter de committer les dossiers de test
Le SDK respecte maintenant correctement le paramètre VAULT_CONFS_DIR du fichier .env.
- Simplification de la logique de résolution des chemins
- Suppression des cas spéciaux pour les chemins relatifs
- Utilisation d'une logique universelle qui fonctionne pour tous les types de chemins
- Le SDK respecte maintenant correctement VAULT_CONFS_DIR depuis le répertoire du fichier .env
- Testé et validé avec VAULT_CONFS_DIR=../confs (78 fichiers synchronisés)
- Ajout de logique spéciale pour les chemins commençant par ../../../
- Détection automatique du répertoire du fichier .env
- Support amélioré pour les chemins relatifs dans les projets clonés
- Fallback vers le répertoire parent du SDK quand approprié
- Ajout de la méthode _getEnvFileDirectory() pour trouver le répertoire du fichier .env
- Modification de syncLocalFiles() pour résoudre les chemins relatifs par rapport au répertoire du .env au lieu de process.cwd()
- Cela corrige le problème où VAULT_CONFS_DIR avec des chemins relatifs n'était pas respecté dans les projets clonés
- Les chemins relatifs comme '../../../projects/lecoffre/lecoffre_node/confs' sont maintenant correctement résolus
- Ajout de .env.example pour faciliter la configuration
- Ajout de .env avec configuration par defaut
- Creation du script test-connection.js pour diagnostic
- Mise a jour du README avec section configuration rapide
- Ajout de script npm test:connection
- Amelioration du depannage pour problemes de connexion
- Documentation completee pour resolution problemes variables environnement
- Correction du probleme de remplacement des variables d'environnement
- Amelioration du processeur de variables d'environnement
- Mise a jour des fichiers gitignore, dockerignore, cursorignore
- SDK client ameliore avec chargement robuste des variables
- Test complet validant 78 fichiers synchronises sans erreur
- Ajout d'un système de chargement robuste des variables d'environnement
- Recherche automatique des fichiers .env dans plusieurs emplacements
- Rechargement des variables à chaque appel de syncLocalFiles()
- Ajout de logs pour indiquer quel fichier .env a été chargé
- Documentation complète avec section de dépannage
- Solutions pour les problèmes courants avec VAULT_CONFS_DIR
Résout le problème où VAULT_CONFS_DIR n'était pas pris en compte
quand le fichier .env n'était pas dans le répertoire courant du projet.
- Ajout du paramètre VAULT_CONFS_DIR dans le SDK pour personnaliser le dossier de destination
- Modification de syncLocalFiles() pour utiliser VAULT_CONFS_DIR par défaut
- Création du fichier .env.example avec tous les paramètres disponibles
- Mise à jour de la documentation SDK avec tableau des variables d\environnement
- Suppression des exceptions spécifiques pour nginx/bitcoin
- Conservation de la protection complète du dossier storage/
- Les fichiers nginx déjà trackés restent visibles
- Renforcement de la sécurité en ignorant tout le contenu de storage/
Impact:
- Aucun fichier sensible n est exposé
- Fichiers nginx déjà commités restent visibles
- Protection renforcée pour les nouveaux fichiers
- Simplification de la maintenance du .gitignore
- Vérification que le dossier storage/ est vide de données sensibles
- Confirmation que les fichiers .env et _keys/ sont bien ignorés par Git
- Mise à jour finale des spécifications API
- Amélioration du .gitignore pour protéger les données sensibles
Vérifications effectuées:
- Dossier storage/ contient 78 fichiers de configuration génériques
- Fichiers de clés (_keys/keys.json) sont ignorés et non poussés
- Fichiers .env sont ignorés et non poussés
- Seuls les fichiers nginx de configuration générique sont trackés
- Aucune donnée sensible n est poussée vers le dépôt
- Spécification technique détaillée (api-specification.md)
- Spécification OpenAPI 3.0.3 (api-specification-openapi.yaml)
- Mise à jour de l index de documentation
Nouvelles fonctionnalités documentées:
- Authentification par clés utilisateur (X-User-ID)
- Chiffrement ChaCha20-Poly1305 quantique résistant
- Variables d environnement avec résolution automatique
- Rotation automatique des clés
- Protection contre les attaques de traversée
- Endpoints /health, /info, /routes, /{env}/{file_path}
- Codes d erreur détaillés (400, 401, 403, 404, 500)
- Exemples d utilisation complets
- Structure du payload chiffré
- Gestion des headers X-Next-Key
Spécification OpenAPI inclut:
- Tous les endpoints avec paramètres
- Schémas de réponse complets
- Codes d erreur avec exemples
- Sécurité UserKeyAuth
- Tags et descriptions détaillées
- Exemples de requêtes/réponses
- Ajout du guide des variables d environnement
- Mise à jour du README principal avec nouvelles fonctionnalités
- Mise à jour de la documentation SDK avec SecureVaultClient
- Ajout du CHANGELOG détaillé
- Documentation des nouvelles fonctionnalités:
* Traitement automatique des variables VAR et VAR
* Résolution récursive des dépendances
* Protection contre les boucles infinies
* Synchronisation locale des fichiers déchiffrés
* Déchiffrement réel avec noble/ciphers
* Configuration automatique via .env
* Rotation automatique des clés
Nouvelles sections:
- Variables d environnement dans docs/environment-variables.md
- Exemples concrets de résolution de variables
- Guide de debugging et logs
- Intégration SDK avec variables résolues
- Protection sécurité et bonnes pratiques
- Ajout de l EnvProcessor dans l API pour résoudre les variables VAR
- Résolution récursive des variables d environnement en mémoire
- Support des syntaxes VAR et VAR entre accolades
- Chargement uniquement du fichier .env principal (pas les sous-répertoires)
- Traitement des variables avant chiffrement des contenus
- Correction des dépendances circulaires (HOST/DOMAIN)
- Harmonisation de la cryptographie API/SDK avec noble/ciphers
- Amélioration de la sécurité avec protection des chemins
- Synchronisation locale des fichiers déchiffrés avec variables résolues
Variables maintenant correctement résolues:
- DOMAIN=4nkweb.com → valeur fixe préservée
- HOST=dev4.DOMAIN → dev4.4nkweb.com
- ROOT_HOST=HOST → dev4.4nkweb.com
- ROOT_URL=https://ROOT_HOST → https://dev4.4nkweb.com
Tests: 72 fichiers synchronisés avec succès, chiffrement ChaCha20-Poly1305 fonctionnel
- Harmonisation cryptographique API/SDK avec @noble/ciphers
- Remplacement de crypto Node.js par @noble/ciphers pour compatibilité Python
- Déchiffrement ChaCha20-Poly1305 maintenant fonctionnel
- Synchronisation complète des 72 fichiers réussie
- Fichiers déchiffrés correctement sauvegardés dans confs/
- SDK mis à jour avec API decrypt() au lieu de open()
- Tests de déchiffrement et synchronisation validés
- API complètement dynamique: routes /<env>/<project>/<file_name>
- Scanner automatique de tous les environnements disponibles
- Sécurité renforcée contre path traversal attacks
- Endpoint /routes dynamique avec 72 fichiers détectés
- SDK mis à jour pour récupération dynamique des routes
- Gestion d'erreurs complète et logs de sécurité
- Architecture production-ready avec multi-environnements
🔒 Implémentation du chiffrement client-serveur sécurisé avec rotation à chaque requête
✅ NOUVEAU SYSTÈME DE SÉCURITÉ:
• Chiffrement client-serveur avec clés partagées
• Rotation automatique à chaque requête (pas à chaque connexion)
• Envoi de la prochaine clé dans le flux chiffré
• SDK conserve la clé pour les requêtes suivantes
🔧 MODIFICATIONS API:
• Nouvelle méthode _encrypt_with_user_key_and_next()
• Rotation automatique dans get_or_create_user_key()
• Headers X-Next-Key avec la prochaine clé
• Contenu chiffré retourné (application/octet-stream)
🔧 MODIFICATIONS SDK:
• Gestion de la prochaine clé dans decryptContent()
• Extraction de X-Next-Key depuis les headers
• Méthode updateNextKey() pour sauvegarder la clé
• Support des métadonnées avec next_key
🧪 TESTS VALIDÉS:
• Rotation à chaque requête confirmée
• Prochaine clé différente à chaque appel
• Contenu chiffré correctement transmis
• Métadonnées avec informations de rotation
🔐 SÉCURITÉ:
• Chiffrement quantique résistant (ChaCha20-Poly1305)
• Clés individuelles par utilisateur et environnement
• Rotation transparente pour l'utilisateur
• Audit complet dans les logs serveur