**Motivations:** - Add API services for anchorage and faucet functionality - Add dashboard interface for signet monitoring - Improve documentation and maintenance guides - Enhance existing scripts for better functionality **Root causes:** - Need for API services to interact with Bitcoin Signet - Need for user-friendly dashboard interface - Need for comprehensive documentation - Scripts required improvements for better reliability **Correctifs:** - Updated Dockerfile with better configuration - Improved gen-bitcoind-conf.sh and gen-signet-keys.sh scripts - Enhanced mine.sh, miner, run.sh, and setup-signet.sh scripts - Updated env.example with new configuration options **Evolutions:** - Added api-anchorage service with anchor functionality - Added api-faucet service for testnet coin distribution - Added signet-dashboard for monitoring and management - Added comprehensive documentation in docs/ directory - Added configure-nginx-proxy.sh for proxy configuration - Added update-signet.sh for signet updates - Added ETAT_SYSTEME.md and START_DASHBOARD_AND_FAUCET.md guides - Added .bitcoin-version file for version tracking **Pages affectées:** - Dockerfile - env.example - gen-bitcoind-conf.sh - gen-signet-keys.sh - mine.sh - miner - run.sh - setup-signet.sh - api-anchorage/ (new) - api-faucet/ (new) - signet-dashboard/ (new) - docs/ (new) - configure-nginx-proxy.sh (new) - update-signet.sh (new) - ETAT_SYSTEME.md (new) - START_DASHBOARD_AND_FAUCET.md (new) - .bitcoin-version (new) - .env (modified) - mempool/ (added)
24 KiB
Documentation de Maintenance - Bitcoin Signet Custom
Auteur : Équipe 4NK Date : 2026-01-09 Version : 1.0
Table des Matières
- Vue d'Ensemble
- Architecture
- Configuration
- Commandes de Maintenance
- Gestion du Conteneur
- Gestion des Clés et du Signet
- Mining
- Accès RPC et API
- Mise à Jour
- Dépannage
- Modifications Apportées
- Sauvegarde et Restauration
Vue d'Ensemble
Ce projet installe et configure un Bitcoin Signet custom basé sur le dépôt Easepay/easepay-custom-signet.
Un Signet est un réseau de test Bitcoin qui permet de tester des applications Bitcoin sans risquer de fonds réels et sans l'imprévisibilité du testnet public.
Caractéristiques
- Version Bitcoin Core : 30.2
- Type de Wallet : Descriptor wallets (legacy wallets non supportés depuis Bitcoin Core 30+)
- Réseau : Signet custom
- Mining : Activé avec délai configurable
- Containerisation : Docker
- Base OS : Debian Bookworm
Architecture
Structure des Fichiers
bitcoin/
├── Dockerfile # Image Docker avec Bitcoin Core
├── docker-entrypoint.sh # Point d'entrée du conteneur
├── install.sh # Script d'installation initiale
├── run.sh # Script de démarrage du nœud
├── setup-signet.sh # Configuration du signet
├── gen-signet-keys.sh # Génération des clés du signet
├── gen-bitcoind-conf.sh # Génération de bitcoin.conf
├── mine.sh # Script de mining
├── mine-genesis.sh # Mining du bloc genesis
├── logtail.sh # Visualisation des logs
├── rpcauth.py # Génération d'authentification RPC
├── miner # Script Python de mining
├── miner_imports/ # Imports pour le miner
├── .env # Variables d'environnement
├── env.example # Exemple de configuration
└── docs/ # Documentation
Ports Exposés
| Port | Protocole | Service | Description |
|---|---|---|---|
| 38332 | TCP | RPC | Interface JSON-RPC pour contrôler le nœud |
| 38333 | TCP/UDP | P2P | Réseau peer-to-peer Bitcoin Signet |
| 28332 | TCP | ZMQ | Publication des blocs bruts |
| 28333 | TCP | ZMQ | Publication des transactions brutes |
| 28334 | TCP | ZMQ | Publication des hash de blocs |
Répertoires Importants dans le Conteneur
/root/.bitcoin/: Répertoire de données Bitcoinsignet/: Données de la chaîne signetbitcoin.conf: Configuration du nœudPRIVKEY.txt: Clé privée du signerSIGNETCHALLENGE.txt: Challenge du signetMAGIC.txt: Magic number du réseauinstall_done: Marqueur d'installation complète
Configuration
Fichier .env
Le fichier .env contient toutes les variables de configuration nécessaires au fonctionnement du signet.
Variables de Mining
# Délai entre la génération de chaque bloc (en secondes)
BLOCKPRODUCTIONDELAY=600
# Activer le mining (1 = activé, 0 = désactivé)
MINERENABLED=1
# Difficulté minimale pour le mining (format hexadécimal)
NBITS=1e0377ae
# Clé privée du signer (générée automatiquement si vide)
PRIVKEY=cVCKcgQf2ewV5miairzhrHJCPv4kMbMMBZeJvW5SMhFMSWVtCvXS
# Adresse de minage (générée automatiquement si vide)
MINETO=
# Challenge du signet (généré automatiquement si vide)
SIGNETCHALLENGE=5121028b8d4cea1b3d8582babc8405bc618fbbb281c0f64e6561aa85968251931cd0a651ae
Variables RPC
# Utilisateur RPC
RPCUSER=bitcoin
# Mot de passe RPC
RPCPASSWORD=bitcoin
Variables ZMQ
# Publication des blocs bruts
ZMQPUBRAWBLOCK=tcp://0.0.0.0:28332
# Publication des transactions brutes
ZMQPUBRAWTX=tcp://0.0.0.0:28333
# Publication des hash de blocs
ZMQPUBHASHBLOCK=tcp://0.0.0.0:28334
Variables Réseau
# Commentaire User-Agent
UACOMMENT=CustomSignet
# Binding RPC
RPCBIND=0.0.0.0:38332
# IPs autorisées pour RPC
RPCALLOWIP=0.0.0.0/0
# IPs whitelistées
WHITELIST=0.0.0.0/0
# Nœuds à ajouter (séparés par des virgules)
ADDNODE=
# IP externe (pour l'annonce publique)
EXTERNAL_IP=
Génération des Clés
Les clés sont générées automatiquement lors de la première installation si PRIVKEY et SIGNETCHALLENGE sont vides dans le .env.
Important : Une fois générées, ces clés doivent être conservées et partagées avec les autres nœuds qui souhaitent rejoindre le même signet.
Commandes de Maintenance
Vérification de l'État
# Vérifier que le conteneur est en cours d'exécution
sudo docker ps | grep bitcoin-signet
# Vérifier l'état de la blockchain
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getblockchaininfo
# Vérifier l'état du réseau
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getnetworkinfo
# Vérifier l'état du wallet
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getwalletinfo
# Vérifier les processus en cours
sudo docker exec bitcoin-signet-instance ps aux | grep -E "(bitcoind|mine)"
Logs
# Voir les logs en temps réel
sudo docker logs -f bitcoin-signet-instance
# Voir les derniers logs
sudo docker logs bitcoin-signet-instance --tail 50
# Voir les logs de debug Bitcoin
sudo docker exec bitcoin-signet-instance tail -f /root/.bitcoin/signet/debug.log
Accès au Conteneur
# Accéder au shell du conteneur
sudo docker exec -it bitcoin-signet-instance bash
# Exécuter bitcoin-cli depuis l'hôte
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin <commande>
Gestion du Conteneur
Démarrage
cd /home/ncantu/Bureau/code/bitcoin
sudo docker run --env-file .env -d \
--name bitcoin-signet-instance \
-p 38332:38332 \
-p 38333:38333 \
-p 28332:28332 \
-p 28333:28333 \
-p 28334:28334 \
bitcoin-signet
Arrêt
# Arrêter le conteneur
sudo docker stop bitcoin-signet-instance
# Arrêter et supprimer le conteneur
sudo docker stop bitcoin-signet-instance && sudo docker rm bitcoin-signet-instance
Redémarrage
# Redémarrer le conteneur
sudo docker restart bitcoin-signet-instance
# Redémarrer après modification du .env
sudo docker stop bitcoin-signet-instance
sudo docker rm bitcoin-signet-instance
sudo docker run --env-file .env -d --name bitcoin-signet-instance \
-p 38332:38332 -p 38333:38333 -p 28332:28332 -p 28333:28333 -p 28334:28334 \
bitcoin-signet
Reconstruction de l'Image
cd /home/ncantu/Bureau/code/bitcoin
sudo docker build -t bitcoin-signet .
Gestion des Clés et du Signet
Récupération des Clés Générées
# Récupérer la clé privée
sudo docker exec bitcoin-signet-instance cat /root/.bitcoin/PRIVKEY.txt
# Récupérer le challenge du signet
sudo docker exec bitcoin-signet-instance cat /root/.bitcoin/SIGNETCHALLENGE.txt
# Récupérer le magic number
sudo docker exec bitcoin-signet-instance cat /root/.bitcoin/MAGIC.txt
Mise à Jour du .env avec les Clés
# Mettre à jour PRIVKEY dans .env
PRIVKEY=$(sudo docker exec bitcoin-signet-instance cat /root/.bitcoin/PRIVKEY.txt)
sed -i "s/^PRIVKEY=.*/PRIVKEY=$PRIVKEY/" .env
# Mettre à jour SIGNETCHALLENGE dans .env
SIGNETCHALLENGE=$(sudo docker exec bitcoin-signet-instance cat /root/.bitcoin/SIGNETCHALLENGE.txt)
sed -i "s/^SIGNETCHALLENGE=.*/SIGNETCHALLENGE=$SIGNETCHALLENGE/" .env
Partage du Signet avec d'Autres Nœuds
Pour qu'un autre nœud rejoigne le même signet, il doit avoir dans son .env :
- Le même
SIGNETCHALLENGE - Le même
PRIVKEY(si mining activé) - L'adresse IP du nœud dans
ADDNODE(ex:ADDNODE=192.168.1.100:38333)
Mining
Configuration du Mining
Le mining est contrôlé par les variables suivantes dans .env :
MINERENABLED=1: Active le miningBLOCKPRODUCTIONDELAY=600: Délai en secondes entre chaque bloc (600 = 10 minutes)NBITS=1e0377ae: Difficulté minimale (ne pas modifier sauf nécessité)MINETO=: Adresse de minage (vide = nouvelle adresse par bloc)PRIVKEY: Clé privée du signer (importée automatiquement dans le descriptor wallet)
Note Bitcoin Core 30+ : La PRIVKEY est automatiquement importée dans le descriptor wallet au démarrage via importdescriptors. Cette importation est nécessaire car le miner utilise walletprocesspsbt pour signer les blocs, ce qui nécessite que la clé soit dans le wallet.
Modification Dynamique du Délai
Pour modifier le délai de production de blocs sans redémarrer :
# Modifier le délai à 60 secondes (1 minute)
sudo docker exec bitcoin-signet-instance bash -c "echo 60 > /root/.bitcoin/BLOCKPRODUCTIONDELAY.txt"
Le script mine.sh lit automatiquement ce fichier s'il existe.
Vérification du Mining
# Vérifier que le script de mining est actif
sudo docker exec bitcoin-signet-instance ps aux | grep mine.sh
# Voir les logs de mining
sudo docker logs bitcoin-signet-instance | grep -E "(Mine|Delay|block)"
# Vérifier le dernier bloc miné
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getbestblockhash
Arrêt du Mining
Pour arrêter le mining, modifier .env :
MINERENABLED=0
Puis redémarrer le conteneur.
Accès RPC et API
Commandes RPC Courantes
# Obtenir des informations sur la blockchain
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getblockchaininfo
# Obtenir des informations sur le réseau
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getnetworkinfo
# Obtenir des informations sur le wallet
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getwalletinfo
# Obtenir le solde
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getbalance
# Obtenir une nouvelle adresse
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getnewaddress
# Obtenir la liste des transactions
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin listtransactions
# Obtenir le dernier bloc
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getbestblockhash
# Obtenir un bloc spécifique
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getblock <hash>
Accès RPC depuis l'Extérieur
Pour accéder au RPC depuis un autre hôte, utiliser :
bitcoin-cli -rpcconnect=<IP_DU_SERVEUR> -rpcport=38332 \
-rpcuser=bitcoin -rpcpassword=bitcoin \
getblockchaininfo
Sécurité : En production, restreindre RPCALLOWIP dans .env et utiliser une authentification plus forte.
ZMQ
Les notifications ZMQ sont disponibles sur les ports 28332, 28333, 28334.
Exemple avec Python :
import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://localhost:28332")
socket.setsockopt(zmq.SUBSCRIBE, b"rawblock")
while True:
message = socket.recv()
print(f"New block: {message.hex()}")
Mise à Jour
Script de Mise à Jour Automatique
Un script de mise à jour automatique est disponible : update-signet.sh
Utilisation
# Mise à jour vers la dernière version disponible
./update-signet.sh
# Mise à jour vers une version spécifique
./update-signet.sh 30.2
# Aide
./update-signet.sh --help
Fonctionnalités du Script
Le script update-signet.sh effectue automatiquement :
- Vérification des prérequis : Docker, fichier
.env - Détection de la version actuelle : Depuis
.bitcoin-versionou le Dockerfile - Récupération de la dernière version : Depuis les sources officielles Bitcoin
- Sauvegarde automatique : Données du conteneur et fichier
.env - Mise à jour du Dockerfile : Modification de la version Bitcoin Core
- Reconstruction de l'image : Build de la nouvelle image Docker
- Redémarrage du conteneur : Arrêt propre et redémarrage avec la nouvelle version
- Vérification post-mise à jour : Contrôle de l'état du nœud
Procédure Manuelle de Mise à Jour
Si vous préférez effectuer la mise à jour manuellement :
1. Vérifier la Version Actuelle
# Version dans le Dockerfile
grep BITCOIN_VERSION Dockerfile
# Version enregistrée
cat .bitcoin-version 2>/dev/null || echo "Non enregistrée"
# Version en cours d'exécution
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getnetworkinfo | grep subversion
2. Récupérer la Dernière Version
Consultez les sources officielles :
3. Sauvegarder les Données
# Créer un répertoire de sauvegarde
mkdir -p backups
# Sauvegarder les données du conteneur
sudo docker exec bitcoin-signet-instance tar czf /tmp/bitcoin-backup.tar.gz /root/.bitcoin/
sudo docker cp bitcoin-signet-instance:/tmp/bitcoin-backup.tar.gz backups/signet-backup-$(date +%Y%m%d-%H%M%S).tar.gz
# Sauvegarder le .env
cp .env backups/.env.backup-$(date +%Y%m%d-%H%M%S)
4. Mettre à Jour le Dockerfile
# Modifier la version dans le Dockerfile
sed -i 's/ARG BITCOIN_VERSION=\${BITCOIN_VERSION:-[0-9]\+\.[0-9]\+}/ARG BITCOIN_VERSION=${BITCOIN_VERSION:-30.2}/' Dockerfile
# Vérifier la modification
grep BITCOIN_VERSION Dockerfile
5. Reconstruire l'Image
# Reconstruire l'image Docker
sudo docker build -t bitcoin-signet .
6. Redémarrer le Conteneur
# Arrêter le conteneur actuel
sudo docker stop bitcoin-signet-instance
sudo docker rm bitcoin-signet-instance
# Démarrer avec la nouvelle image
sudo docker run --env-file .env -d \
--name bitcoin-signet-instance \
-p 38332:38332 \
-p 38333:38333 \
-p 28332:28332 \
-p 28333:28333 \
-p 28334:28334 \
bitcoin-signet
7. Vérifier la Mise à Jour
# Attendre quelques secondes pour le démarrage
sleep 10
# Vérifier la version
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getnetworkinfo | grep subversion
# Vérifier l'état de la blockchain
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getblockchaininfo
# Vérifier les logs
sudo docker logs bitcoin-signet-instance --tail 50
8. Enregistrer la Version
# Enregistrer la nouvelle version
echo "30.2" > .bitcoin-version
Notes Importantes sur les Mises à Jour
Compatibilité des Versions
- Bitcoin Core 26.0+ : Peut avoir des changements de compatibilité avec les wallets legacy
- Bitcoin Core 30.2 : Version actuelle recommandée
- Vérifiez toujours les release notes avant de mettre à jour
Impact sur le Mining
- Le mining reprend automatiquement après la mise à jour
- Les blocs minés avant la mise à jour restent valides
- Aucune perte de données si la sauvegarde est effectuée
Rollback en Cas de Problème
Si la mise à jour pose problème :
# Restaurer l'ancienne version du Dockerfile
git checkout HEAD -- Dockerfile
# Restaurer les données si nécessaire
sudo docker stop bitcoin-signet-instance
sudo docker rm bitcoin-signet-instance
sudo docker cp backups/signet-backup-YYYYMMDD-HHMMSS.tar.gz bitcoin-signet-instance:/tmp/
sudo docker exec bitcoin-signet-instance tar xzf /tmp/signet-backup-YYYYMMDD-HHMMSS.tar.gz -C /
# Reconstruire avec l'ancienne version
sudo docker build -t bitcoin-signet .
# Redémarrer
sudo docker run --env-file .env -d --name bitcoin-signet-instance \
-p 38332:38332 -p 38333:38333 -p 28332:28332 -p 28333:28333 -p 28334:28334 \
bitcoin-signet
Vérification Régulière des Mises à Jour
Pour vérifier régulièrement si une nouvelle version est disponible :
# Script de vérification
#!/bin/bash
CURRENT=$(cat .bitcoin-version 2>/dev/null || echo "unknown")
LATEST=$(curl -s https://bitcoincore.org/bin/ | grep -oP 'bitcoin-core-\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -1)
if [ "$CURRENT" != "$LATEST" ]; then
echo "Nouvelle version disponible: $LATEST (actuelle: $CURRENT)"
echo "Exécutez: ./update-signet.sh $LATEST"
else
echo "Déjà à jour: $CURRENT"
fi
Dépannage
Problèmes Courants
Le conteneur ne démarre pas
# Vérifier les logs
sudo docker logs bitcoin-signet-instance
# Vérifier que les ports ne sont pas déjà utilisés
sudo netstat -tlnp | grep -E "(38332|38333|28332|28333|28334)"
# Vérifier que le fichier .env existe
ls -la .env
Bitcoind ne démarre pas
# Vérifier les logs de debug
sudo docker exec bitcoin-signet-instance tail -100 /root/.bitcoin/signet/debug.log
# Vérifier la configuration
sudo docker exec bitcoin-signet-instance cat /root/.bitcoin/bitcoin.conf
# Vérifier les permissions
sudo docker exec bitcoin-signet-instance ls -la /root/.bitcoin/
Le mining ne fonctionne pas
# Vérifier que MINERENABLED=1 dans .env
grep MINERENABLED .env
# Vérifier que la clé privée est importée
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin listprivkeys
# Vérifier que le script mine.sh est actif
sudo docker exec bitcoin-signet-instance ps aux | grep mine.sh
Erreur "Cannot obtain a lock"
Cette erreur indique qu'un autre processus bitcoind est déjà en cours d'exécution.
# Arrêter tous les processus bitcoind dans le conteneur
sudo docker exec bitcoin-signet-instance pkill bitcoind
# Redémarrer le conteneur
sudo docker restart bitcoin-signet-instance
Le wallet n'existe pas
# Créer le wallet manuellement (Bitcoin Core 30+ nécessite descriptor wallets)
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin \
-named createwallet wallet_name="custom_signet" load_on_startup=true descriptors=true
# Charger le wallet si nécessaire
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin loadwallet custom_signet
# Importer la clé privée si mining activé (Bitcoin Core 30+ nécessite descriptor wallets)
PRIVKEY=$(cat .env | grep PRIVKEY | cut -d'=' -f2)
DESCRIPTOR_INFO=$(sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getdescriptorinfo "wpkh($PRIVKEY)")
CHECKSUM=$(echo "$DESCRIPTOR_INFO" | jq -r '.checksum')
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin \
importdescriptors "[{\"desc\":\"wpkh($PRIVKEY)#$CHECKSUM\",\"timestamp\":0,\"internal\":false}]"
Réinitialisation Complète
Si vous devez tout réinitialiser :
# Arrêter et supprimer le conteneur
sudo docker stop bitcoin-signet-instance
sudo docker rm bitcoin-signet-instance
# Supprimer le volume de données (ATTENTION : perte de données)
sudo docker volume rm $(sudo docker volume ls -q | grep bitcoin)
# Ou supprimer manuellement les données
sudo rm -rf /var/lib/docker/volumes/*/bitcoin-signet-instance/_data
# Relancer avec un nouveau .env (clés seront régénérées)
sudo docker run --env-file .env -d --name bitcoin-signet-instance \
-p 38332:38332 -p 38333:38333 -p 28332:28332 -p 28333:28333 -p 28334:28334 \
bitcoin-signet
Modifications Apportées
Modifications du Dockerfile
-
Mise à jour de Debian :
buster-slim→bookworm-slim- Raison : Debian Buster n'est plus supporté
-
Détection automatique de l'architecture : Remplacement de
TARGETPLATFORMparuname -m- Raison :
TARGETPLATFORMn'est pas défini par défaut dansdocker build
- Raison :
-
Installation de setuptools : Via
aptau lieu depip- Raison : PEP 668 empêche l'installation système via pip
Modifications des Scripts
-
gen-signet-keys.sh :
- Correction de
ATADIR→DATADIR(ligne 1) - Mise à jour pour utiliser
descriptors=true(Bitcoin Core 30+) - Raison : Faute de frappe empêchait la création du répertoire temporaire, et Bitcoin Core 30+ nécessite des descriptor wallets
- Correction de
-
setup-signet.sh : Suppression du démarrage de bitcoind
- Raison : Éviter les conflits de verrou, bitcoind est démarré par
run.sh
- Raison : Éviter les conflits de verrou, bitcoind est démarré par
-
run.sh : Ajout de la création du wallet descriptor et import automatique de la clé privée
- Raison : Le wallet doit être créé après le démarrage de bitcoind
- Bitcoin Core 30+ nécessite des descriptor wallets (legacy wallets non supportés)
- La clé privée est importée automatiquement dans le descriptor wallet pour permettre le mining
- L'import utilise
importdescriptorsavec le checksum requis (obtenu viagetdescriptorinfo) - Le miner utilise
walletprocesspsbtqui nécessite que la clé soit dans le wallet
Sauvegarde et Restauration
Sauvegarde
# Sauvegarder les données Bitcoin
sudo docker exec bitcoin-signet-instance tar czf /tmp/bitcoin-backup.tar.gz /root/.bitcoin/
# Copier la sauvegarde hors du conteneur
sudo docker cp bitcoin-signet-instance:/tmp/bitcoin-backup.tar.gz ./bitcoin-backup-$(date +%Y%m%d).tar.gz
# Sauvegarder le fichier .env
cp .env .env.backup-$(date +%Y%m%d)
Restauration
# Arrêter le conteneur
sudo docker stop bitcoin-signet-instance
sudo docker rm bitcoin-signet-instance
# Créer un nouveau conteneur
sudo docker run --env-file .env -d --name bitcoin-signet-instance \
-p 38332:38332 -p 38333:38333 -p 28332:28332 -p 28333:28333 -p 28334:28334 \
bitcoin-signet
# Attendre que le conteneur démarre
sleep 5
# Restaurer les données
sudo docker cp bitcoin-backup-YYYYMMDD.tar.gz bitcoin-signet-instance:/tmp/
sudo docker exec bitcoin-signet-instance tar xzf /tmp/bitcoin-backup-YYYYMMDD.tar.gz -C /
# Redémarrer le conteneur
sudo docker restart bitcoin-signet-instance
Sauvegarde des Clés
Important : Toujours sauvegarder séparément :
- Le fichier
.env(contientPRIVKEYetSIGNETCHALLENGE) - Les fichiers
/root/.bitcoin/PRIVKEY.txtet/root/.bitcoin/SIGNETCHALLENGE.txt
Ces clés sont essentielles pour maintenir la cohérence du signet.
Commandes Utiles
Script de Vérification Rapide
#!/bin/bash
echo "=== État du Conteneur ==="
sudo docker ps | grep bitcoin-signet
echo -e "\n=== État de la Blockchain ==="
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getblockchaininfo | grep -E "(chain|blocks|bestblockhash)"
echo -e "\n=== État du Réseau ==="
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getnetworkinfo | grep -E "(networkactive|connections)"
echo -e "\n=== État du Wallet ==="
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getwalletinfo | grep -E "(walletname|balance)"
echo -e "\n=== Processus de Mining ==="
sudo docker exec bitcoin-signet-instance ps aux | grep -E "(bitcoind|mine)" | grep -v grep
Script de Monitoring
#!/bin/bash
watch -n 5 'sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getblockchaininfo | grep -E "(chain|blocks|bestblockhash|difficulty)"'
Références
Dernière mise à jour : 2026-01-09