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/
Système de Templates 4NK Vault
🎯 Vue d'ensemble
Le répertoire templates/ contient tous les fichiers sources avec variables d'environnement qui sont utilisés pour générer automatiquement les configurations finales dans storage/.
📁 Structure
templates/
├── dev/ # Templates pour l'environnement de développement
│ ├── generate.sh # Script principal d'orchestration
│ ├── generate_variables.sh # Génération des variables d'environnement
│ ├── generate_grafana_dashboards.sh # Génération des dashboards Grafana
│ ├── generate_promtail_config.sh # Génération de la config Promtail
│ ├── generate_logrotate_configs.sh # Génération des configs logrotate
│ ├── generate_nginx_configs.sh # Génération des configs nginx
│ ├── replace_variables_and_copy.sh # Résolution des variables + copie
│ ├── .env.secrets # Variables sensibles
│ ├── .env # Variables principales
│ ├── .env.post # Variables finales/composites
│ ├── _4NK_modules/ # Modules avec configurations
│ ├── 4NK_modules/ # Modules générés (Grafana, Promtail)
│ ├── logrotade/ # Configurations logrotate
│ └── nginx/ # Configurations nginx
└── prod/ # Templates pour l'environnement de production
🚀 Utilisation Rapide
Génération Complète
# Générer toutes les configurations
cd templates/dev
./generate.sh
Génération Étape par Étape
# 1. Générer les variables d'environnement
./generate_variables.sh
# 2. Générer les dashboards Grafana
./generate_grafana_dashboards.sh
# 3. Générer la configuration Promtail
./generate_promtail_config.sh
# 4. Générer les configurations logrotate
./generate_logrotate_configs.sh
# 5. Générer les configurations nginx
./generate_nginx_configs.sh
# 6. Résoudre les variables et copier vers storage/
./replace_variables_and_copy.sh
🔧 Configuration
Variables d'Environnement
.env.secrets
Variables sensibles (ne sont jamais copiées dans storage/)
# Variables sensibles
API_SECRET_KEY=secret_value
DATABASE_PASSWORD=password
.env
Variables principales du système
# Configuration de base
ROOT_DIR=/home/debian/_4NK_env
DOMAIN=_4NKweb.com
HOST=dev4.$DOMAIN
# Services
export SERVICES=(
"REDIS"
"POSTGRESQL"
"BITCOIN"
# ...
)
# Services externes
export SERVICES_EXTERNAL=(
"BOOTSTRAP"
"LECOFFRE_BACK_MINI"
)
.env.post
Variables composites et finales
# URLs composites
SDK_RELAY_BOOSTRAP_URL=$BOOTSTRAP_URL_WS_EXTERNAL
RELAY_URLS=$SDK_RELAY_URL,$SDK_RELAY_BOOSTRAP_URL
BITCOIN_RPC_URL=http://$BITCOIN_DOCKER_NAME:$BITCOIN_SIGNET_RPC_PORT
Templates de Fichiers
Les fichiers dans les sous-répertoires utilisent la syntaxe de variables :
$VARIABLE- Variable simple${VARIABLE}- Variable avec accolades$VARIABLE_SUFFIX- Variable avec suffixe
Exemple :
# Dans bitcoin.conf
datadir=$BITCOIN_DATAS_DIR
rpcuser=$BITCOIN_RPC_USER
rpcpassword=$BITCOIN_RPC_PASSWORD
📋 Scripts Disponibles
generate.sh
Script principal qui orchestre tous les autres scripts.
Fonctionnalités :
- Exécution séquentielle de tous les scripts de génération
- Gestion des erreurs et rollback
- Logs détaillés du processus
- Validation des prérequis
generate_variables.sh
Génère les variables d'environnement et le fichier Docker Compose.
Génère :
.env.auto- Variables générées avec référencesdocker-compose.yml.auto- Docker Compose avec variables
generate_grafana_dashboards.sh
Génère automatiquement les dashboards Grafana.
Types de dashboards :
- Services Overview
- Bitcoin Services
- Frontend Services
- SDK Services
generate_promtail_config.sh
Génère la configuration Promtail pour la collecte de logs.
generate_logrotate_configs.sh
Génère les configurations logrotate pour tous les services.
generate_nginx_configs.sh
Génère les configurations nginx (upstreams, HTTPS, etc.).
replace_variables_and_copy.sh
Résout toutes les variables et copie les fichiers vers storage/.
Fonctionnalités :
- Chargement séquentiel des fichiers
.env - Résolution multi-passes (jusqu'à 5 passes)
- Copie sélective (exclusion des fichiers sensibles)
- Validation des variables résolues
🔒 Sécurité
Protection des Templates
- Les fichiers dans
templates/ne sont jamais modifiés par l'API - Seuls les fichiers dans
storage/sont accessibles via l'API - Les fichiers
.env.secretsne sont jamais copiés
Isolation des Environnements
- Chaque environnement (
dev,prod) a ses propres templates - Variables d'environnement isolées par environnement
- Pas de fuite de données entre environnements
🛠️ Maintenance
Ajout d'un Nouveau Service
- Ajouter le service dans
.env:
export SERVICES=(
"REDIS"
"POSTGRESQL"
"NOUVEAU_SERVICE" # Ajouter ici
# ...
)
- Définir les variables du service :
NOUVEAU_SERVICE=nouveau_service
NOUVEAU_SERVICE_IMAGE=image:tag
NOUVEAU_SERVICE_PORT=8080:8080
- Régénérer les configurations :
cd templates/dev
./generate.sh
Modification des Variables
- Modifier les fichiers appropriés dans
templates/dev/ - Régénérer les configurations :
cd templates/dev
./generate.sh
- Vérifier les résultats dans
storage/dev/
📊 Monitoring
Logs de Génération
Les scripts fournissent des logs détaillés :
- Nombre de variables chargées
- Fichiers traités et copiés
- Erreurs de résolution des variables
Validation
- Vérification automatique des variables non résolues
- Protection contre les dépendances circulaires
- Validation des chemins et permissions
🔄 Intégration
Avec l'API
L'API 4NK Vault lit uniquement les fichiers dans storage/<env>/ après génération.
Avec CI/CD
Les scripts de génération peuvent être intégrés dans des pipelines CI/CD pour automatiser le déploiement.
📚 Documentation
docs/templates-system.md- Documentation complète du système../README.md- Documentation principale du projet../CHANGELOG.md- Historique des modifications