# Script de Redémarrage 4NK Node ## 📋 Description Le script `restart_4nk_node.sh` est un outil automatisé pour redémarrer complètement l'infrastructure 4NK Node. Il transforme les commandes manuelles en un processus automatisé avec gestion d'erreurs et vérifications. ## 🚀 Utilisation ### Redémarrage complet (par défaut) ```bash ./restart_4nk_node.sh ``` ### Options disponibles ```bash ./restart_4nk_node.sh [OPTIONS] ``` ## 📖 Options | Option | Description | Exemple | |--------|-------------|---------| | `-h, --help` | Afficher l'aide | `./restart_4nk_node.sh -h` | | `-s, --stop` | Arrêter tous les services | `./restart_4nk_node.sh -s` | | `-c, --clean` | Nettoyer les conteneurs | `./restart_4nk_node.sh -c` | | `-n, --network` | Créer le réseau | `./restart_4nk_node.sh -n` | | `-t, --tor` | Démarrer Tor | `./restart_4nk_node.sh -t` | | `-b, --bitcoin` | Démarrer Bitcoin | `./restart_4nk_node.sh -b` | | `-l, --blindbit` | Démarrer Blindbit | `./restart_4nk_node.sh -l` | | `-r, --relays` | Démarrer les relais | `./restart_4nk_node.sh -r` | | `-v, --verify` | Vérifier le statut | `./restart_4nk_node.sh -v` | ## 🎯 Exemples d'utilisation ### 1. Redémarrage complet ```bash ./restart_4nk_node.sh ``` **Résultat :** Arrêt → Nettoyage → Réseau → Tor → Bitcoin → Blindbit → Construction → Relays → Vérification ### 2. Arrêter uniquement ```bash ./restart_4nk_node.sh -s ``` **Résultat :** Arrêt de tous les services et conteneurs ### 3. Démarrer uniquement les relais ```bash ./restart_4nk_node.sh -r ``` **Résultat :** Construction de l'image + démarrage des 3 relais ### 4. Vérifier le statut ```bash ./restart_4nk_node.sh -v ``` **Résultat :** Affichage de l'état de tous les services ## 🔧 Configuration ### Variables principales ```bash # Images Docker TOR_IMAGE="dperson/torproxy:latest" BITCOIN_IMAGE="4nk_node_bitcoin" BLINDBIT_IMAGE="4nk_node_blindbit" RELAY_IMAGE="4nk_node_sdk_relay_1" # Réseau NETWORK_NAME="4nk_node_btcnet" # Volumes BITCOIN_VOLUME="bitcoin_data" BLINDBIT_VOLUME="blindbit_data" RELAY_1_VOLUME="sdk_relay_1_data" RELAY_2_VOLUME="sdk_relay_2_data" RELAY_3_VOLUME="sdk_relay_3_data" ``` ### Ports exposés | Service | Ports Internes | Ports Externes | |---------|----------------|----------------| | **Tor** | 9050, 9051 | 9050, 9051 | | **Bitcoin** | 38333, 18443, 29000 | 38333, 18443, 29000 | | **Blindbit** | 8000 | 8000 | | **Relay 1** | 8090, 8091 | 8090, 8091 | | **Relay 2** | 8090, 8091 | 8092, 8093 | | **Relay 3** | 8090, 8091 | 8094, 8095 | ### Fichiers de configuration ```bash BITCOIN_CONF="$PROJECT_DIR/bitcoin/bitcoin.conf" BLINDBIT_CONF="$PROJECT_DIR/blindbit/blindbit.toml" RELAY_1_CONF="$PROJECT_DIR/sdk_relay/.conf.docker.relay1" RELAY_2_CONF="$PROJECT_DIR/sdk_relay/.conf.docker.relay2" RELAY_3_CONF="$PROJECT_DIR/sdk_relay/.conf.docker.relay3" ``` ## 🛠️ Fonctionnalités ### 1. Gestion d'erreurs - **Vérification de Docker** : S'assure que Docker est installé et en cours d'exécution - **Vérification des fichiers** : Contrôle l'existence des fichiers de configuration - **Timeouts** : Gestion des timeouts pour le démarrage des conteneurs - **Arrêt en cas d'erreur** : `set -e` pour arrêter le script en cas d'erreur ### 2. Affichage coloré - **Vert** : Succès ✅ - **Rouge** : Erreurs ❌ - **Jaune** : Avertissements ⚠️ - **Bleu** : En-têtes 🔄 - **Cyan** : Étapes 🔄 - **Violet** : Informations ℹ️ ### 3. Vérifications automatiques - **Attente des conteneurs** : Vérifie que chaque conteneur démarre correctement - **Vérification des ports** : Contrôle que les ports sont correctement exposés - **Statut final** : Affiche un résumé de tous les services ### 4. Modularité - **Fonctions séparées** : Chaque service a sa propre fonction de démarrage - **Options flexibles** : Possibilité de démarrer des services individuels - **Réutilisabilité** : Fonctions utilitaires réutilisables ## 📊 Sortie du script ### Exemple de sortie réussie ``` ============================================================================= SCRIPT DE REDÉMARRAGE COMPLET 4NK Node ============================================================================= ℹ️ Répertoire de travail: /home/desk/Téléchargements/code/4NK/4NK_node ℹ️ Date: Mon Dec 16 10:30:00 CET 2024 ============================================================================= ARRÊT DE TOUS LES SERVICES ============================================================================= 🔄 Arrêt de tous les conteneurs 🔄 Arrêt de docker-compose 🔄 Vérification qu'aucun conteneur ne tourne ✅ Aucun conteneur en cours d'exécution ============================================================================= NETTOYAGE COMPLET ============================================================================= 🔄 Suppression de tous les conteneurs ℹ️ Conteneurs supprimés: abc123 def456 ghi789 🔄 Nettoyage des réseaux ℹ️ Réseaux supprimés: 4nk_node_btcnet [... autres étapes ...] ============================================================================= VÉRIFICATION FINALE ============================================================================= 🔄 État de tous les services CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e969cb2ead81 4nk_node_sdk_relay_1 "/bin/sh -c 'cp /hom…" 21 seconds ago Up 20 seconds 0.0.0.0:8094->8090/tcp, :::8094->8090/tcp, 0.0.0.0:8095->8091/tcp, :::8095->8091/tcp sdk_relay_3 [... autres conteneurs ...] 🔄 Résumé des services actifs Services en cours d'exécution: tor-proxy Up 3 minutes (healthy) 8118/tcp, 0.0.0.0:9050-9051->9050-9051/tcp, :::9050-9051->9050-9051/tcp bitcoin-signet Up 3 minutes 0.0.0.0:18443->18443/tcp, :::18443->18443/tcp, 0.0.0.0:29000->29000/tcp, :::29000->29000/tcp, 0.0.0.0:38333->38333/tcp, :::38333->38333/tcp, 38332/tcp [... autres services ...] 🔄 Vérification des ports ✅ tor-proxy: ✅ En cours d'exécution ✅ bitcoin-signet: ✅ En cours d'exécution ✅ blindbit-oracle: ✅ En cours d'exécution ✅ sdk_relay_1: ✅ En cours d'exécution ✅ sdk_relay_2: ✅ En cours d'exécution ✅ sdk_relay_3: ✅ En cours d'exécution ℹ️ Services actifs: 6/6 ✅ Tous les services sont opérationnels ! ============================================================================= REDÉMARRAGE TERMINÉ ============================================================================= ✅ L'infrastructure 4NK Node est maintenant opérationnelle ! ℹ️ Services actifs: 6 ℹ️ Ports exposés: 12 ``` ## ⚠️ Dépannage ### Erreurs courantes #### 1. Docker non installé ``` ❌ Docker n'est pas installé ou n'est pas dans le PATH ``` **Solution :** Installer Docker et s'assurer qu'il est dans le PATH #### 2. Docker daemon non démarré ``` ❌ Docker daemon n'est pas en cours d'exécution ``` **Solution :** Démarrer le service Docker : `sudo systemctl start docker` #### 3. Fichier de configuration manquant ``` ❌ Fichier manquant: Configuration Bitcoin (/path/to/bitcoin.conf) ``` **Solution :** Vérifier que tous les fichiers de configuration existent #### 4. Timeout de démarrage ``` ❌ Timeout: bitcoin-signet n'a pas démarré dans les temps ``` **Solution :** Vérifier les logs : `docker logs bitcoin-signet` ### Logs utiles ```bash # Logs d'un service spécifique docker logs tor-proxy docker logs bitcoin-signet docker logs blindbit-oracle docker logs sdk_relay_1 # Logs de tous les services docker logs $(docker ps --format "{{.Names}}") # Statut des conteneurs docker ps -a # Utilisation des ressources docker stats ``` ## 🔄 Maintenance ### Mise à jour du script 1. Modifier les variables de configuration si nécessaire 2. Tester avec `./restart_4nk_node.sh -v` 3. Documenter les changements ### Ajout de nouveaux services 1. Ajouter les variables de configuration 2. Créer une fonction de démarrage 3. Ajouter l'option correspondante 4. Mettre à jour la fonction de vérification ## 📝 Historique - **v1.0** : Script initial basé sur les commandes manuelles - **Fonctionnalités** : Redémarrage complet, options modulaires, gestion d'erreurs - **Compatibilité** : Bash 4.0+, Docker 20.0+ ## 🎯 Avantages 1. **Automatisation** : Élimine les erreurs manuelles 2. **Reproductibilité** : Processus identique à chaque exécution 3. **Modularité** : Possibilité de démarrer des services individuels 4. **Robustesse** : Gestion d'erreurs et vérifications 5. **Visibilité** : Affichage coloré et informatif 6. **Maintenance** : Code structuré et documenté