Cet ensemble de scripts permet d'installer, de configurer et de surveiller facilement un nœud Pi Network sur un serveur Linux (Ubuntu/Debian). Il s'appuie sur le paquet officiel Linux en ligne de commande (pi-node) sorti par la Core Team, garantissant ainsi des mises à jour fluides et une gestion native des conteneurs Docker sans avoir à bricoler de fichiers docker-compose.yml complexes.
-
-
Save benoitpetit/009a7fc596957fa254050a500642f5ef to your computer and use it in GitHub Desktop.
Déploiement Automatisé d'un Node Pi Network (Ubuntu Server)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| NODE_SEED=SBUX3...[ta_vraie_cle_secrete_de_56_caracteres_ici]... | |
| POSTGRES_PWD=MonMotDePasseSuperSecurise123! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| set -e | |
| echo "=======================================================" | |
| echo " 🚀 Installation & Gestion du Node Pi (Linux CLI) 🚀 " | |
| echo "=======================================================" | |
| echo "" | |
| # 0. On demande les droits sudo dès le départ pour éviter tout blocage ! | |
| echo "🔐 Vérification des droits administrateur (sudo)..." | |
| sudo -v | |
| echo "" | |
| # 1. Gestion du fichier .env | |
| ENV_FILE="$(dirname "$0")/.env" | |
| if [ ! -f "$ENV_FILE" ]; then | |
| echo "📄 Le fichier .env est introuvable. Création de celui-ci..." | |
| read -s -p "🔑 Entrez votre Node Private Key (Seed) commençant par 'S' : " NODE_SEED | |
| echo "" | |
| read -s -p "🔒 Créez un mot de passe pour la base de données PostgreSQL : " POSTGRES_PWD | |
| echo "" | |
| # Enregistrement et sécurisation du fichier | |
| echo "NODE_SEED=$NODE_SEED" > "$ENV_FILE" | |
| echo "POSTGRES_PWD=$POSTGRES_PWD" >> "$ENV_FILE" | |
| chmod 600 "$ENV_FILE" | |
| echo "✅ Fichier .env créé et sécurisé (droits restreints)." | |
| else | |
| echo "📄 Fichier .env détecté. Chargement des variables..." | |
| export $(grep -v '^#' "$ENV_FILE" | xargs) | |
| fi | |
| if [ -z "$NODE_SEED" ] || [ -z "$POSTGRES_PWD" ]; then | |
| echo "❌ Erreur : Les variables NODE_SEED ou POSTGRES_PWD sont vides dans le .env." | |
| exit 1 | |
| fi | |
| # 2. Configuration du pare-feu (UFW) | |
| echo "🛡️ Configuration du pare-feu (UFW)..." | |
| # On laisse l'affichage pour voir si apt-get est bloqué par autre chose | |
| sudo apt-get update | |
| sudo apt-get install -y ufw | |
| sudo ufw allow ssh | |
| sudo ufw allow 31400:31409/tcp | |
| echo "y" | sudo ufw enable | |
| echo "✅ Ports 31400-31409 ouverts et UFW activé." | |
| echo "" | |
| # 3. Installation des dépendances et de Docker | |
| echo "🐳 Vérification de Docker..." | |
| sudo apt-get install -y ca-certificates curl gnupg lsb-release | |
| if ! command -v docker &> /dev/null; then | |
| echo "⚙️ Installation de Docker en cours..." | |
| curl -fsSL https://get.docker.com | sudo sh | |
| sudo usermod -aG docker $USER | |
| echo "✅ Docker installé avec succès." | |
| else | |
| echo "✅ Docker est déjà installé." | |
| fi | |
| echo "" | |
| # ========================================================= | |
| # 🛑 VÉRIFICATION SI LE NŒUD EST DÉJÀ LANCÉ 🛑 | |
| # ========================================================= | |
| echo "🔍 Vérification de l'état actuel du nœud Pi..." | |
| if sudo docker ps -a --format '{{.Names}}' | grep -Eq "^mainnet$"; then | |
| echo "⚠️ ATTENTION : Un nœud Pi (conteneur 'mainnet') est DÉJÀ installé sur ce serveur." | |
| read -p "❓ Voulez-vous le RÉINITIALISER et le relancer ? (o/N) : " RELANCER | |
| if [[ "$RELANCER" =~ ^[oOyY]$ ]]; then | |
| echo "🔄 Arrêt et nettoyage de l'ancien conteneur..." | |
| sudo docker stop mainnet 2>/dev/null || true | |
| sudo docker rm mainnet 2>/dev/null || true | |
| echo "✅ Ancien nœud supprimé. Préparation de la réinstallation..." | |
| else | |
| echo "🛑 Opération annulée par l'utilisateur." | |
| echo "👉 Le nœud actuel continue de tourner normalement." | |
| exit 0 | |
| fi | |
| else | |
| echo "✅ Aucun nœud existant détecté, on procède à l'installation." | |
| fi | |
| echo "" | |
| # ========================================================= | |
| # 4. Ajout du dépôt APT officiel de Pi Network | |
| echo "📦 Configuration du dépôt officiel Pi Network..." | |
| sudo install -m 0755 -d /etc/apt/keyrings | |
| curl -fsSL https://apt.minepi.com/repository.gpg.key | sudo gpg --dearmor --yes -o /etc/apt/keyrings/pinetwork-archive-keyring.gpg | |
| sudo chmod a+r /etc/apt/keyrings/pinetwork-archive-keyring.gpg | |
| echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/pinetwork-archive-keyring.gpg] https://apt.minepi.com/ stable main" | sudo tee /etc/apt/sources.list.d/minepi.list > /dev/null | |
| # 5. Installation de l'outil pi-node | |
| echo "⚙️ Installation/Mise à jour du paquet pi-node..." | |
| sudo apt-get update | |
| sudo apt-get install -y pi-node | |
| # 6. Configuration des dossiers | |
| PI_FOLDER="$HOME/pi-node" | |
| DOCKER_VOLUMES="$PI_FOLDER/docker_volumes/mainnet" | |
| mkdir -p "$DOCKER_VOLUMES" | |
| # 7. Initialisation du nœud | |
| echo "🚀 Initialisation et lancement du nœud Pi..." | |
| pi-node initialize \ | |
| --pi-folder "$PI_FOLDER" \ | |
| --docker-volumes "$DOCKER_VOLUMES" \ | |
| --node-private-key "$NODE_SEED" \ | |
| --postgres-password "$POSTGRES_PWD" \ | |
| --start-node | |
| echo "" | |
| echo "=======================================================" | |
| echo " 🎉 INSTALLATION TERMINÉE AVEC SUCCÈS ! 🎉 " | |
| echo "=======================================================" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| echo "=======================================================" | |
| echo " 🔍 DIAGNOSTIC COMPLET DU NODE PI 🔍 " | |
| echo "=======================================================" | |
| echo "" | |
| # 1. Vérification des conteneurs Docker | |
| echo "🐳 1. ÉTAT DES CONTENEURS DOCKER :" | |
| echo "-------------------------------------------------------" | |
| if command -v docker &> /dev/null; then | |
| docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep -E "pi-|NAMES" | |
| echo "" | |
| CONTAINER_COUNT=$(docker ps -q | wc -l) | |
| if [ "$CONTAINER_COUNT" -gt 0 ]; then | |
| echo "✅ Les conteneurs tournent correctement." | |
| else | |
| echo "❌ ATTENTION : Aucun conteneur Docker n'est en cours d'exécution !" | |
| fi | |
| else | |
| echo "❌ Docker n'est pas installé ou inaccessible." | |
| fi | |
| echo "" | |
| # 2. Vérification de l'outil Pi-Node et de la synchronisation | |
| echo "🔗 2. ÉTAT DE LA SYNCHRONISATION (BLOCKCHAIN) :" | |
| echo "-------------------------------------------------------" | |
| if command -v pi-node &> /dev/null; then | |
| # Capture la sortie du status | |
| pi-node protocol-status | |
| else | |
| echo "❌ L'outil pi-node n'est pas installé ou introuvable." | |
| fi | |
| echo "" | |
| # 3. Vérification du pare-feu (UFW) | |
| echo "🛡️ 3. ÉTAT DU PARE-FEU LOCAL (UFW) :" | |
| echo "-------------------------------------------------------" | |
| sudo ufw status | grep -E "3140|Status|État" | |
| echo "" | |
| # 4. Vérification de l'écoute des ports (Système) | |
| echo "📡 4. ÉCOUTE DES PORTS RÉSEAU :" | |
| echo "-------------------------------------------------------" | |
| echo "Vérification si le serveur écoute bien sur les ports 31400-31409..." | |
| if ss -tuln | grep -q "3140"; then | |
| ss -tuln | grep "3140" | |
| echo "✅ Les ports sont bien ouverts et en écoute sur le serveur." | |
| else | |
| echo "⏳ Les ports ne sont pas encore en écoute (le conteneur démarre peut-être)." | |
| fi | |
| echo "" | |
| # 5. Derniers logs du consensus | |
| echo "📜 5. DERNIERS LOGS DU CONSENSUS (10 dernières lignes) :" | |
| echo "-------------------------------------------------------" | |
| # On cherche le conteneur qui s'appelle pi-consensus (ou similaire) | |
| CONSENSUS_CONTAINER=$(docker ps --format "{{.Names}}" | grep -i "consensus" | head -n 1) | |
| if [ -n "$CONSENSUS_CONTAINER" ]; then | |
| docker logs --tail 10 "$CONSENSUS_CONTAINER" | |
| else | |
| echo "⏳ Le conteneur de consensus n'est pas encore trouvé ou nommé différemment." | |
| fi | |
| echo "" | |
| echo "=======================================================" | |
| echo " 🏁 FIN DU DIAGNOSTIC 🏁 " | |
| echo "=======================================================" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment