**Motivations:** - Export Signet and mining wallet backups to git with only 2 versions kept - Document and add backup/restore scripts for signet and mining wallet **Correctifs:** - Backup-to-git uses SSH URL for passwordless cron; copy timestamped files only; prune to 2 versions; remove *-latest from backup repo **Evolutions:** - data/backup-to-git-cron.sh: daily export to git.4nkweb.com/4nk/backup - save-signet-datadir-backup.sh, restore-signet-from-backup.sh, export-mining-wallet.sh, import-mining-wallet.sh - features/backup-to-git-daily-cron.md, docs/MAINTENANCE.md backup section - .gitignore: data/backup-to-git.log **Pages affectées:** - .gitignore, data/backup-to-git-cron.sh, docs/MAINTENANCE.md, features/backup-to-git-daily-cron.md - save-signet-datadir-backup.sh, restore-signet-from-backup.sh, export-mining-wallet.sh, import-mining-wallet.sh - Plus autres fichiers modifiés ou non suivis déjà présents dans le working tree
4.7 KiB
Chaîne perdue après recréation du conteneur (hauteur 2 au lieu de ~11535)
Date : 2026-02-02
Auteur : Équipe 4NK
Problème
- Le dashboard affiche une hauteur de bloc 2 alors que la chaîne attendue est autour de 11535.
- La chaîne visible n’est pas la bonne : le nœud est sur une nouvelle chaîne (genèse récente), pas sur la chaîne signet existante.
Cause racine
- Le conteneur Docker
bitcoin-signet-instancea été recréé (docker stop+docker rm+docker run) sans montage persistant du datadir Bitcoin (/root/.bitcoin). - Le Dockerfile déclare
VOLUME $BITCOIN_DIR; en l’absence de-vdansdocker run, Docker utilise un volume anonyme lié au conteneur. - À la suppression du conteneur (
docker rm), ce volume anonyme peut être supprimé (ou n’est plus rattaché), donc les données de la chaîne (blocs, wallet, etc.) sont perdues. - Le nouveau conteneur repart avec un datadir vide : install/signet crée une nouvelle chaîne (hauteur 0), puis le miner produit quelques blocs (ex. hauteur 2).
Correctifs
-
Documentation : Toutes les commandes
docker rundu projet ont été mises à jour pour utiliser un volume nommé :-v signet-bitcoin-data:/root/.bitcoinAinsi, à chaque recréation du conteneur, les données restent dans le volume
signet-bitcoin-data. -
Persistance : Utiliser toujours soit :
- le volume « chaîne complète » (s'il existe) :
update-signet.shutilise par défaut le volume d'ID 4b5dca4d940b9f6e5db67b460f40f230a5ef1195a3769e5f91fa02be6edde649 (~11530 blocs), soit - un volume nommé :
-v signet-bitcoin-data:/root/.bitcoin, soit - un montage host :
-v /chemin/hote/signet-data:/root/.bitcoin
pour tout démarrage ou recréation du conteneur Bitcoin Signet. Voir docs/MAINTENANCE.md.
- le volume « chaîne complète » (s'il existe) :
Récupérer la chaîne ~11535 (reprendre sur la chaîne précédente)
-
Obtenir une sauvegarde complète du datadir (blocs + chainstate + config) :
- Sauvegarde prête à télécharger :
backups/signet-datadir-latest.tar.gz(symlink vers la dernière archive créée par./save-signet-datadir-backup.sh). - Sur la machine qui a encore la chaîne : exécuter
./save-signet-datadir-backup.shpour créerbackups/signet-datadir-YYYYMMDD-HHMMSS.tar.gzet mettre à jour le symlinksignet-datadir-latest.tar.gz. - Ou utiliser une archive existante (ex.
bitcoin-backup-*.tar.gzcréée avecdocker exec ... tar czf /tmp/bitcoin-backup.tar.gz /root/.bitcoin).
- Sauvegarde prête à télécharger :
-
Sur la machine où reprendre la chaîne : placer l’archive dans le projet (ex.
backups/) puis lancer :./restore-signet-from-backup.sh backups/signet-datadir-YYYYMMDD-HHMMSS.tar.gzLe script arrête le conteneur actuel, remplit le volume nommé
signet-bitcoin-dataavec les données restaurées, puis redémarre le conteneur avec ce volume. -
Si aucune sauvegarde n’existe : la chaîne à 11535 n’est plus récupérable sur ce nœud. Il faut qu’un autre nœud (ex. machine bitcoin) ait encore cette chaîne et qu’on en tire une sauvegarde avec
save-signet-datadir-backup.sh, puis qu’on restaure avecrestore-signet-from-backup.sh.
Modifications
- docs/MAINTENANCE.md : section « Persistance du datadir », et ajout de
-v signet-bitcoin-data:/root/.bitcoinà toutes les commandesdocker run. - docs/README.md : idem + note sur le volume.
- docs/INTERFACES.md : idem.
- docs/INSTALLATION_NEW_NODE.md : idem (premier démarrage et recréation).
- docs/TROUBLESHOOTING_MINING.md : idem.
Modalités d’analyse
- Vérifier la hauteur et la chaîne :
sudo docker exec bitcoin-signet-instance bitcoin-cli -datadir=/root/.bitcoin getblockchaininfo - Vérifier les volumes Docker :
docker volume ls(présence designet-bitcoin-datasi déjà utilisé). - En cas de hauteur très basse (0, 1, 2…) après une recréation récente du conteneur : confirmer si un volume persistant était utilisé.
Scripts ajoutés
- save-signet-datadir-backup.sh : crée une archive complète du datadir depuis le conteneur en cours. À exécuter sur la machine qui a encore la chaîne (ex. machine bitcoin).
- restore-signet-from-backup.sh : restaure une archive datadir dans le volume
signet-bitcoin-dataet redémarre le conteneur. Usage :./restore-signet-from-backup.sh <chemin-vers-archive.tar.gz>.
Pages affectées
- docs/MAINTENANCE.md
- docs/README.md
- docs/INTERFACES.md
- docs/INSTALLATION_NEW_NODE.md
- docs/TROUBLESHOOTING_MINING.md
- save-signet-datadir-backup.sh (nouveau)
- restore-signet-from-backup.sh (nouveau)
- fixKnowledge/signet-chain-lost-volume-persistent.md (ce fichier)