# 🚀 4NK Node - Infrastructure Docker ComplĂšte Infrastructure Docker complĂšte pour le dĂ©veloppement et le dĂ©ploiement de services 4NK avec support des paiements silencieux (Silent Payments). ## 📋 Table des MatiĂšres - [đŸ—ïž Architecture](#-architecture) - [🚀 DĂ©marrage Rapide](#-dĂ©marrage-rapide) - [📚 Documentation](#-documentation) - [🔧 Configuration](#-configuration) - [đŸ§Ș Tests et Monitoring](#-tests-et-monitoring) - [🌐 RĂ©seau de Relais](#-rĂ©seau-de-relais) - [đŸ› ïž DĂ©veloppement](#-dĂ©veloppement) - [🚹 DĂ©pannage](#-dĂ©pannage) ## đŸ—ïž Architecture 4NK Node est composĂ© de plusieurs services orchestrĂ©s via Docker : | Service | Port | Description | Statut | |---------|------|-------------|---------| | **Tor** | 9050, 9051 | Proxy anonyme pour Bitcoin Core | ✅ Stable | | **Bitcoin Core** | 18443 (RPC), 29000 (ZMQ) | NƓud Bitcoin en mode signet | ✅ Stable | | **Blindbit** | 8000 | Service de filtres pour les paiements silencieux | ✅ Stable | | **sdk_relay** | 8090-8095 | Services de relais (3 instances) | ✅ Stable | ### 🔄 Flux de DonnĂ©es ``` Client → sdk_relay → Bitcoin Core ↓ Blindbit → Bitcoin Core ↓ Tor (anonymat) ``` ## 🚀 DĂ©marrage Rapide ### PrĂ©requis - **Docker** et **Docker Compose** installĂ©s - **10 Go** d'espace disque minimum - **Connexion Internet** stable - **ClĂ© SSH** configurĂ©e pour Gitea (recommandĂ©) ### Installation ```bash # 1. Cloner le repository (SSH recommandĂ©) git clone git@git.4nkweb.com:4nk/4NK_node.git cd 4NK_node # 2. Amorcer l’environnement (git, Docker, Compose, Node/npm) ./scripts/orchestrate_start.sh # Astuce: se dĂ©connecter/reconnecter pour activer le groupe docker # 3. DĂ©marrer tous les services ./scripts/restart_4nk_node.sh # 4. VĂ©rifier le statut docker ps ``` ### Configuration SSH (RecommandĂ©) ```bash # GĂ©nĂ©rer une clĂ© SSH ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk -C "4nk-automation" # Ajouter Ă  l'agent SSH ssh-add ~/.ssh/id_ed25519_4nk # Configurer Git git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_4nk" # Ajouter la clĂ© publique Ă  Gitea cat ~/.ssh/id_ed25519_4nk.pub ``` ## 📚 Documentation ### 📖 Guides Principaux - **[Guide d'Installation](docs/INSTALLATION.md)** - Installation et configuration complĂšte - **[Guide d'Utilisation](docs/USAGE.md)** - Utilisation quotidienne et cas d'usage - **[Guide de Configuration](docs/CONFIGURATION.md)** - Configuration avancĂ©e - **[Guide de DĂ©veloppement](docs/DEVELOPMENT.md)** - DĂ©veloppement et contribution ### 🔧 Guides Techniques - **[Architecture Technique](docs/ARCHITECTURE.md)** - Architecture dĂ©taillĂ©e - **[API Reference](docs/API.md)** - Documentation des APIs - **[SĂ©curitĂ©](docs/SECURITY.md)** - SĂ©curitĂ© et bonnes pratiques - **[Performance](docs/PERFORMANCE.md)** - Optimisation et monitoring ### đŸ§Ș Guides de Test - **[Tests de Base](docs/TESTING.md)** - Tests de connectivitĂ© et fonctionnalitĂ© - **[Tests de Synchronisation](docs/SYNC_TESTING.md)** - Tests de synchronisation entre relais - **[Tests de Performance](docs/PERFORMANCE_TESTING.md)** - Tests de charge et performance ### 🌐 Guides RĂ©seau - **[RĂ©seau de Relais](docs/RELAY_NETWORK.md)** - Configuration du rĂ©seau mesh - **[NƓuds Externes](docs/EXTERNAL_NODES.md)** - Ajout et gestion de nƓuds externes - **[Synchronisation](docs/SYNCHRONIZATION.md)** - Protocole de synchronisation ## 🔧 Configuration ### Services Disponibles | Service | Configuration | Volume | Description | |---------|---------------|---------|-------------| | **Bitcoin Core** | `bitcoin/bitcoin.conf` | `bitcoin_data` | NƓud Bitcoin signet avec RPC et ZMQ | | **Blindbit** | `blindbit/blindbit.toml` | `blindbit_data` | Service de filtres Silent Payments | | **sdk_relay** | `sdk_relay/.conf.docker.*` | `sdk_relay_*_data` | Relais avec synchronisation mesh | | **Tor** | `tor/torrc` | - | Proxy anonyme | ### Variables d'Environnement ```bash # Logs RUST_LOG=debug,bitcoincore_rpc=trace # Bitcoin BITCOIN_COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie # Synchronisation ENABLE_SYNC_TEST=1 ``` ## đŸ§Ș Tests et Monitoring ### Tests de Base ```bash # Test de connectivitĂ© ./test_final_sync.sh # Test de synchronisation ./test_sync_logs.sh # Test des messages WebSocket python3 test_websocket_messages.py ``` ### Monitoring ```bash # Surveillance de la synchronisation ./monitor_sync.sh # Logs en temps rĂ©el docker-compose logs -f # Statut des services docker ps ``` ### Tests de Performance ```bash # Test de charge WebSocket python3 test_websocket_messages.py --load-test # Test de synchronisation ./test_sync_logs.sh continuous ``` ## 🌐 RĂ©seau de Relais ### Architecture Mesh L'infrastructure supporte un rĂ©seau mesh de relais avec : - **3 relais locaux** : `sdk_relay_1`, `sdk_relay_2`, `sdk_relay_3` - **NƓuds externes** : Configuration via `external_nodes.conf` - **Synchronisation automatique** : Partage de donnĂ©es entre relais - **DĂ©couverte automatique** : DĂ©couverte des relais voisins ### Ajout de NƓuds Externes ```bash # Ajouter un nƓud externe ./scripts/add_external_node.sh add external-relay-1 external-relay-1.example.com:8090 # Lister les nƓuds configurĂ©s ./scripts/add_external_node.sh list # Tester la connectivitĂ© ./scripts/add_external_node.sh test external-relay-1 ``` ### Configuration Externe ```toml # external_nodes.conf [relays] external-relay-1 = "external-relay-1.example.com:8090" dev3-relay = "dev3.4nkweb.com:443" [discovery] auto_discover = true bootstrap_nodes = [] ``` ## đŸ› ïž DĂ©veloppement ### Structure du Projet ``` 4NK_node/ ├── bitcoin/ # Configuration Bitcoin Core ├── blindbit/ # Configuration Blindbit ├── sdk_relay/ # Configuration des relais ├── tor/ # Configuration Tor ├── specs/ # SpĂ©cifications techniques ├── docs/ # Documentation ├── tests/ # Scripts de test ├── scripts/ # Scripts utilitaires └── docker-compose.yml ``` ### Ajout d'un Nouveau Service 1. CrĂ©er le Dockerfile dans un sous-rĂ©pertoire 2. Ajouter le service dans `docker-compose.yml` 3. Configurer les dĂ©pendances et le rĂ©seau 4. Ajouter les healthchecks si nĂ©cessaire 5. Documenter dans la section appropriĂ©e ### Modification de la Configuration ```bash # Modifier la configuration Bitcoin Core sudo docker-compose down # Éditer bitcoin/bitcoin.conf sudo docker-compose up -d bitcoin # Modifier la configuration Blindbit # Éditer blindbit/blindbit.toml sudo docker-compose restart blindbit ``` ## 🚹 DĂ©pannage ### ProblĂšmes Courants #### 1. Ports DĂ©jĂ  UtilisĂ©s ```bash # VĂ©rifier les ports utilisĂ©s sudo netstat -tlnp | grep -E "(18443|8000|9050|8090)" # ArrĂȘter les services conflictuels sudo docker-compose down ``` #### 2. ProblĂšmes de Synchronisation Bitcoin ```bash # VĂ©rifier les logs Bitcoin Core sudo docker-compose logs bitcoin # RedĂ©marrer Bitcoin Core sudo docker-compose restart bitcoin ``` #### 3. ProblĂšmes de ConnectivitĂ© sdk_relay ```bash # Tester la connectivitĂ© cd sdk_relay ./test_final.sh # VĂ©rifier la configuration ./debug_container.sh ``` ### Logs DĂ©taillĂ©s ```bash # Logs avec timestamps sudo docker-compose logs -t # Logs des 100 derniĂšres lignes sudo docker-compose logs --tail=100 # Logs depuis une date sudo docker-compose logs --since="2024-01-01T00:00:00" ``` ### Healthchecks ```bash # VĂ©rifier l'Ă©tat des healthchecks sudo docker-compose ps # Logs des healthchecks sudo docker-compose logs | grep health # Test manuel du healthcheck sdk_relay sudo docker exec sdk_relay /usr/local/bin/healthcheck.sh ``` ## 📈 Performance ### Ressources RecommandĂ©es - **CPU** : 2 cƓurs minimum, 4 cƓurs recommandĂ©s - **RAM** : 4 Go minimum, 8 Go recommandĂ©s - **Stockage** : 20 Go minimum pour la blockchain signet - **RĂ©seau** : Connexion stable pour la synchronisation ### Optimisations ```bash # Limiter l'utilisation CPU sudo docker-compose up -d --scale bitcoin=1 # Surveiller l'utilisation des ressources sudo docker stats # Optimiser l'espace disque sudo docker system prune -f ``` ## đŸ€ Contribution 1. Fork le repository 2. CrĂ©er une branche feature (`git checkout -b feature/nouvelle-fonctionnalite`) 3. Commit les changements (`git commit -am 'Ajout de nouvelle fonctionnalitĂ©'`) 4. Push la branche (`git push origin feature/nouvelle-fonctionnalite`) 5. CrĂ©er une Pull Request ## 📄 Licence Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de dĂ©tails. ## 🆘 Support Pour obtenir de l'aide : 1. Consulter la [documentation](docs/) 2. VĂ©rifier les [issues existantes](https://git.4nkweb.com/4nk/4NK_node/issues) 3. CrĂ©er une nouvelle issue avec les dĂ©tails du problĂšme 4. Inclure les logs et la configuration utilisĂ©e --- **✹ Infrastructure 4NK Node - PrĂȘte pour la production !**