diff --git a/README.md b/README.md new file mode 100644 index 0000000..e852eb4 --- /dev/null +++ b/README.md @@ -0,0 +1,114 @@ +# 4NK Development Environment + +Ce dépôt contient l'environnement de développement complet pour l'écosystème 4NK, incluant tous les modules SDK, clients et services. + +## 🏗️ Architecture + +### Projets SDK (Rust) +- **sdk_common** : Bibliothèque commune avec types et utilitaires partagés +- **sdk_client** : Client SDK principal avec support WASM (migration flate2 en cours) +- **sdk_storage** : Service de stockage distribué +- **sdk_signer** : Service de signature avec interface TypeScript + +### Clients (Node.js/TypeScript) +- **sdk_signer_client** : Client TypeScript pour sdk_signer +- **ihm_client** : Interface utilisateur web + +### Services +- **4NK_node** : Infrastructure Docker complète avec Bitcoin, Tor, et services 4NK +- **sdk_relay** : Service de relais pour la communication P2P + +### Outils +- **4NK_template** : Template Docker pour les nouveaux projets +- **4NK_wallet** : Application wallet + +## 🚀 Démarrage rapide + +### Prérequis +- Docker et Docker Compose v2 +- Rust (latest stable) +- Node.js 18+ +- Git + +### Installation +```bash +# Cloner le dépôt +git clone +cd 4NK_dev + +# Configurer l'environnement +./setup_dev_env.sh + +# Démarrer l'infrastructure +cd 4NK_node +./scripts/manage_services.sh start +``` + +## 📦 Gestion des dépendances WASM + +### État actuel +- **sdk_common** : ✅ Migré vers `flate2` (remplace `zstd`) +- **sdk_client** : 🔄 Stub WASM temporaire avec `flate2` (en attente de migration complète) +- **sdk_signer** : ✅ Compatible avec le stub WASM + +### Migration en cours +1. **Phase 1** : ✅ Migration `sdk_common` vers `flate2` +2. **Phase 2** : 🔄 Migration `sdk_client` vers `k256` et `flate2` +3. **Phase 3** : ⏳ Intégration complète WASM +4. **Phase 4** : ⏳ Déploiement + +## 🛠️ Développement + +### Compilation des projets +```bash +# Compiler tous les projets Rust +for project in sdk_common sdk_client sdk_storage; do + cd $project && cargo build --release && cd .. +done + +# Compiler les projets Node.js +for project in sdk_signer sdk_signer_client ihm_client; do + cd $project && npm install && npm run build && cd .. +done +``` + +### Gestion des services +```bash +# Arrêter tous les services +cd 4NK_node && ./scripts/manage_services.sh stop + +# Nettoyer l'environnement +./scripts/manage_services.sh clean + +# Redémarrer les services +./scripts/manage_services.sh start +``` + +## 📚 Documentation + +- [Résultats de compilation](COMPILATION_RESULTS.md) - Statut détaillé de tous les projets +- [Modules Docker](docs/modules.md) - Documentation des modules Docker +- [Changelog](CHANGELOG.md) - Historique des versions + +## 🔧 Scripts utiles + +- `setup_dev_env.sh` : Configuration de l'environnement de développement +- `update_repos.sh` : Mise à jour des dépôts depuis repos.csv +- `4NK_node/scripts/manage_services.sh` : Gestion des services Docker + +## 📋 Structure des branches + +- **main** : Branche principale pour 4NK_dev et 4NK_node +- **docker-support** : Branche de développement pour les SDKs et clients +- **dev** : Branche de développement pour certaines fonctionnalités + +## 🤝 Contribution + +1. Créer une branche depuis `docker-support` ou `main` selon le projet +2. Développer et tester localement +3. Pousser les modifications sur la branche appropriée +4. Créer une pull request + +## 📄 Licence + +MIT License - voir les fichiers LICENSE individuels dans chaque projet. diff --git a/docs/modules.md b/docs/modules.md index f0497df..0f91ae3 100644 --- a/docs/modules.md +++ b/docs/modules.md @@ -1,27 +1,73 @@ # Modules Docker (4NK_dev) ## 4NK_node -- S’appuie sur le `docker-compose.yml` existant dans `4NK_node/`. -- Scripts: - - `modules/4NK_node/build.sh` : construit les services avec `docker compose build`. - - `modules/4NK_node/up.sh` : démarre les services en détaché. - - `modules/4NK_node/down.sh` : arrête et nettoie les services. - - `modules/4NK_node/logs.sh` : affiche les logs (suivi). - - `modules/4NK_node/clean.sh` : down -v + prune d’images. -- Version/tag: lit `4NK_node/VERSION` si présent, sinon utilise `git describe` pour définir `COMPOSE_PROJECT_NAME`. +Infrastructure Docker complète pour l'écosystème 4NK avec Bitcoin, Tor, et services 4NK. + +### Services inclus +- **bitcoin-signet** : Nœud Bitcoin testnet +- **tor-proxy** : Proxy Tor pour l'anonymat +- **blindbit-oracle** : Oracle pour les transactions confidentielles +- **sdk-storage** : Service de stockage distribué +- **sdk_relay_1/2/3** : Services de relais P2P +- **4nk-ihm-client** : Interface utilisateur web +- **4nk-reverse-proxy** : Proxy inverse pour les services + +### Scripts de gestion +- `4NK_node/scripts/manage_services.sh` : Script principal de gestion + - `start` : Démarre tous les services + - `stop` : Arrête tous les services + - `clean` : Nettoie conteneurs, images, volumes + - `restart` : Redémarre tous les services + - `status` : Affiche le statut des services + - `logs` : Affiche les logs des services + +### Scripts legacy (modules/) +- `modules/4NK_node/build.sh` : construit les services avec `docker compose build` +- `modules/4NK_node/up.sh` : démarre les services en détaché +- `modules/4NK_node/down.sh` : arrête et nettoie les services +- `modules/4NK_node/logs.sh` : affiche les logs (suivi) +- `modules/4NK_node/clean.sh` : down -v + prune d'images + +### Version/tag +Lit `4NK_node/VERSION` si présent, sinon utilise `git describe` pour définir `COMPOSE_PROJECT_NAME`. ## 4NK_template -- Dockerfile multi-stage Node fourni dans `modules/4NK_template/Dockerfile`. -- Scripts: - - `modules/4NK_template/build.sh` : build de l’image à partir de `4NK_template/`. - - `modules/4NK_template/run.sh` : exécute l’image, mappe le port 3000. - - `modules/4NK_template/clean.sh` : supprime l’image construite et fait un prune. -- Version/tag: lit `4NK_template/VERSION` si présent, sinon `git describe`. +Template Docker multi-stage Node.js pour les nouveaux projets 4NK. + +### Dockerfile +- Multi-stage build optimisé +- Support pour Node.js et Rust +- Configuration automatique des hooks Git + +### Scripts +- `modules/4NK_template/build.sh` : build de l'image à partir de `4NK_template/` +- `modules/4NK_template/run.sh` : exécute l'image, mappe le port 3000 +- `modules/4NK_template/clean.sh` : supprime l'image construite et fait un prune + +### Version/tag +Lit `4NK_template/VERSION` si présent, sinon `git describe`. ## Prérequis -- Docker et Docker Compose (plugin) installés. +- Docker et Docker Compose v2 (plugin) installés +- Rust (latest stable) pour les projets SDK +- Node.js 18+ pour les clients -## Utilisation (séquentielle) +## Utilisation (recommandée) + +### Gestion moderne avec manage_services.sh +```bash +# Démarrer l'infrastructure complète +cd 4NK_node +./scripts/manage_services.sh start + +# Vérifier le statut +./scripts/manage_services.sh status + +# Arrêter et nettoyer +./scripts/manage_services.sh clean +``` + +### Utilisation séquentielle (legacy) 1. Construire 4NK_node - `bash modules/4NK_node/build.sh` 2. Démarrer 4NK_node @@ -35,3 +81,36 @@ 6. Arrêt 4NK_node - `bash modules/4NK_node/down.sh` +## Configuration + +### Variables d'environnement +- `COMPOSE_PROJECT_NAME` : Nom du projet Docker (auto-détecté) +- `DOCKER_BUILDKIT` : Active BuildKit pour des builds plus rapides + +### Ports exposés +- **9050-9051** : Tor proxy +- **18443** : Bitcoin RPC +- **29000** : Bitcoin P2P +- **8000** : Blindbit oracle +- **8081** : SDK Storage +- **8090-8091** : SDK Relays + +## Troubleshooting + +### Problèmes courants +1. **Ports déjà utilisés** : Vérifier avec `netstat -tulpn | grep ` +2. **Images corrompues** : Utiliser `./scripts/manage_services.sh clean` +3. **Services qui ne démarrent pas** : Vérifier les logs avec `./scripts/manage_services.sh logs` + +### Logs et debugging +```bash +# Logs de tous les services +./scripts/manage_services.sh logs + +# Logs d'un service spécifique +docker compose logs + +# Shell dans un conteneur +docker compose exec /bin/bash +``` +