anchorage_layer_simple/fixKnowledge/signet-chain-lost-volume-persistent.md
ncantu 937646cc45 Daily backup to git cron, backup/restore scripts, docs
**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
2026-02-04 03:07:57 +01:00

4.7 KiB
Raw Permalink Blame History

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 nest 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-instance a été recréé (docker stop + docker rm + docker run) sans montage persistant du datadir Bitcoin (/root/.bitcoin).
  • Le Dockerfile déclare VOLUME $BITCOIN_DIR ; en labsence de -v dans docker run, Docker utilise un volume anonyme lié au conteneur.
  • À la suppression du conteneur (docker rm), ce volume anonyme peut être supprimé (ou nest 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

  1. Documentation : Toutes les commandes docker run du projet ont été mises à jour pour utiliser un volume nommé :

    -v signet-bitcoin-data:/root/.bitcoin
    

    Ainsi, à chaque recréation du conteneur, les données restent dans le volume signet-bitcoin-data.

  2. Persistance : Utiliser toujours soit :

    • le volume « chaîne complète » (s'il existe) : update-signet.sh utilise 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.

Récupérer la chaîne ~11535 (reprendre sur la chaîne précédente)

  1. 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.sh pour créer backups/signet-datadir-YYYYMMDD-HHMMSS.tar.gz et mettre à jour le symlink signet-datadir-latest.tar.gz.
    • Ou utiliser une archive existante (ex. bitcoin-backup-*.tar.gz créée avec docker exec ... tar czf /tmp/bitcoin-backup.tar.gz /root/.bitcoin).
  2. Sur la machine où reprendre la chaîne : placer larchive dans le projet (ex. backups/) puis lancer :

    ./restore-signet-from-backup.sh backups/signet-datadir-YYYYMMDD-HHMMSS.tar.gz
    

    Le script arrête le conteneur actuel, remplit le volume nommé signet-bitcoin-data avec les données restaurées, puis redémarre le conteneur avec ce volume.

  3. Si aucune sauvegarde nexiste : la chaîne à 11535 nest plus récupérable sur ce nœud. Il faut quun autre nœud (ex. machine bitcoin) ait encore cette chaîne et quon en tire une sauvegarde avec save-signet-datadir-backup.sh, puis quon restaure avec restore-signet-from-backup.sh.

Modifications

  • docs/MAINTENANCE.md : section « Persistance du datadir », et ajout de -v signet-bitcoin-data:/root/.bitcoin à toutes les commandes docker 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 danalyse

  • 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 de signet-bitcoin-data si 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-data et 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)