4NK_node/README.md
Nicolas Cantu 72682290c1 feat: Ajout du support des relais externes et intégration dev3.4nkweb.com
- Ajout du script add_external_node.sh pour gérer les nœuds externes
- Configuration external_nodes.conf avec dev3-relay
- Scripts de test pour dev3.4nkweb.com (connectivité WSS)
- Documentation complète (CONFIGURATION_DEV3.md, RESUME_AJOUT_DEV3.md)
- Scripts de test de synchronisation et monitoring
- Configuration multi-relais avec 3 instances
- Mise à jour de la documentation technique et fonctionnelle
- Scripts de démarrage et monitoring pour les 3 relais
2025-08-22 17:00:31 +02:00

8.4 KiB

4NK Node - Infrastructure Docker

Infrastructure Docker complète pour le développement et le déploiement de services 4NK

🏗️ Architecture

4NK Node est composé de plusieurs services orchestrés via Docker Compose :

  • Tor : Proxy anonyme pour Bitcoin Core
  • Bitcoin Core : Nœud Bitcoin en mode signet
  • Blindbit : Service de filtres pour les paiements silencieux
  • sdk_relay : Service de relais pour l'intégration avec les applications

🚀 Démarrage rapide

Prérequis

  • Docker et Docker Compose installés
  • Au moins 10 Go d'espace disque disponible
  • Connexion Internet pour la synchronisation Bitcoin
  • Clé SSH configurée pour GitLab (recommandé)

Installation

# Cloner le repository (avec SSH)
git clone git@git.4nkweb.com:4nk/4NK_node.git
cd 4NK_node

# Ou avec HTTPS (si SSH non configuré)
# git clone https://git.4nkweb.com/4nk/4NK_node.git
# cd 4NK_node

# Lancer tous les services
sudo docker-compose up -d

# Vérifier le statut des services
sudo docker-compose ps

Configuration SSH (optionnel mais recommandé)

Pour une authentification automatique et sécurisée :

# Générer une clé SSH (si pas déjà fait)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk -C "4nk-automation"

# Ajouter la clé à l'agent SSH
ssh-add ~/.ssh/id_ed25519_4nk

# Configurer Git pour utiliser la clé
git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_4nk"

# Ajouter la clé publique à votre compte GitLab
cat ~/.ssh/id_ed25519_4nk.pub
# Copier cette clé dans GitLab > Settings > SSH Keys

Services disponibles

Service Port Description
Tor 9050, 9051 Proxy anonyme
Bitcoin Core 18443 (RPC), 29000 (ZMQ) Nœud Bitcoin signet
Blindbit 8000 Service de filtres
sdk_relay 8090, 8091 Service de relais

📋 Configuration

Bitcoin Core

Configuration automatique pour le réseau signet avec :

  • RPC activé sur le port 18443
  • ZMQ activé sur le port 29000
  • Connexion Tor pour l'anonymat
  • Synchronisation automatique

Blindbit

Service de filtres pour les paiements silencieux :

  • Version stable (branche master)
  • Connexion automatique à Bitcoin Core
  • API REST sur le port 8000

sdk_relay

Service de relais pour l'intégration :

  • Configuration Docker automatique
  • Authentification par cookie Bitcoin Core
  • Connexion aux services via réseau Docker

🔧 Scripts utilitaires

Tests de connectivité


## 📚 Exemples Pratiques

Pour des exemples détaillés d'utilisation, consultez le document [EXEMPLES_PRATIQUES.md](EXEMPLES_PRATIQUES.md) qui contient :

- 🚀 **Exemples de démarrage** : Démarrage complet, avec 3 relais, séquentiel
- 🧪 **Exemples de tests** : Tests de connectivité, synchronisation, performance
- 🌐 **Exemples d'ajout de nœuds externes** : Configuration multi-sites, gestion
- 🔧 **Exemples de configuration** : Bitcoin Core, sdk_relay, réseau personnalisé
- 📊 **Exemples de monitoring** : Temps réel, synchronisation Bitcoin, relais
- 🛠️ **Exemples de debug** : Connexion Bitcoin Core, WebSocket, synchronisation
- 🔒 **Exemples de sécurité** : Pare-feu, SSL/TLS, monitoring de sécurité
- 📈 **Exemples de performance** : Tests de charge, optimisation, monitoring
- 🚀 **Exemples de déploiement** : Production, multi-environnements, backup

### Exemples rapides

```bash
# Démarrage complet
docker-compose up -d

# Test de synchronisation
./test_final_sync.sh status

# Ajouter un nœud externe
./add_external_node.sh add external-relay-1 external-relay-1.example.com:8090

# Monitoring en temps réel
./monitor_sync.sh

Test complet de tous les services

cd sdk_relay ./test_final.sh

Test de connectivité réseau

./test_connectivity.sh

Test simple

./test_simple.sh


### Débogage

```bash
# Débogage du container sdk_relay
./debug_container.sh

# Test du healthcheck sdk_relay
./test_healthcheck.sh

# Logs des services
sudo docker-compose logs [service_name]

🌐 Réseau Docker

Tous les services communiquent via le réseau 4nk_node_btcnet avec résolution DNS automatique :

  • bitcoin : Bitcoin Core
  • blindbit : Service Blindbit
  • tor : Proxy Tor
  • sdk_relay : Service de relais

📊 Monitoring

Healthchecks

Les services incluent des healthchecks automatiques :

# Vérifier l'état des healthchecks
sudo docker-compose ps

# Logs des healthchecks
sudo docker-compose logs | grep health

Healthcheck sdk_relay

Le service sdk_relay utilise un healthcheck personnalisé qui vérifie :

  • Processus : sdk_relay en cours d'exécution
  • Port WebSocket : Port 8090 en écoute
  • Connectivité Bitcoin Core : Accès au RPC Bitcoin
  • Connectivité Blindbit : Accès au service Blindbit
  • Configuration : Fichier de configuration présent
  • Cookie Bitcoin : Authentification Bitcoin configurée
# Test manuel du healthcheck
sudo docker exec sdk_relay /usr/local/bin/healthcheck.sh

# Test depuis l'hôte
cd sdk_relay && ./test_healthcheck.sh

Logs

# Logs de tous les services
sudo docker-compose logs -f

# Logs d'un service spécifique
sudo docker-compose logs -f bitcoin
sudo docker-compose logs -f blindbit
sudo docker-compose logs -f sdk_relay

🔒 Sécurité

Authentification

  • Bitcoin Core utilise l'authentification par cookie
  • Les cookies sont automatiquement copiés dans les containers
  • Permissions restrictives sur les fichiers sensibles

Réseau

  • Isolation via réseau Docker
  • Communication interne uniquement
  • Ports exposés limités au minimum nécessaire

🛠️ Développement

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

Modification de la configuration

# 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

📁 Structure des fichiers

lecoffre_node/
├── bitcoin/
│   ├── Dockerfile
│   └── bitcoin.conf
├── blindbit/
│   ├── Dockerfile
│   └── blindbit.toml
├── sdk_relay/
│   ├── Dockerfile
│   ├── .conf.docker
│   └── scripts/
├── tor/
│   ├── Dockerfile
│   └── torrc
├── docker-compose.yml
└── README.md

🚨 Dépannage

Problèmes courants

  1. Ports déjà utilisés

    # Vérifier les ports utilisés
    sudo netstat -tlnp | grep -E "(18443|8000|9050)"
    
    # Arrêter les services conflictuels
    sudo docker-compose down
    
  2. Problèmes de synchronisation Bitcoin

    # 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

    # Tester la connectivité
    cd sdk_relay
    ./test_final.sh
    
    # Vérifier la configuration
    ./debug_container.sh
    

Logs détaillés

# 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"

📈 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

# Limiter l'utilisation CPU
sudo docker-compose up -d --scale bitcoin=1

# Surveiller l'utilisation des ressources
sudo docker stats

🤝 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
  2. Vérifier les issues existantes
  3. Créer une nouvelle issue avec les détails du problème
  4. Inclure les logs et la configuration utilisée