Installer et configurer un noeud miroir sous Debian

Ce document vous indique les différentes étapes pour installer un noeud miroir sous Debian. Certaines étapes sont documentées sur des pages annexes : les prérequis et la mise en place du reverse-proxy. Nous vous conseillons de prendre votre temps et de bien faire chaque étape.

Table des matières

  1. Prérequis
  2. Mise en place
  3. Installer
  4. Configurer le noeud
  5. Lancer le service Duniter
  6. VĂ©rifier le bon fonctionnement du noeud
  7. Configurer le reverse-proxy
  8. Vérifier l'accessibilité du noeud depuis l'extérieur

Prérequis

Ce tutoriel suppose que :

Les paquets que nous allons télécharger sont pour des serveurs ayant une architecture amd64. Ceci fonctionnera pour les serveurs loués, et pour un serveur à la maison s'il a une architecture amd64. Mais pour des serveurs ARM (typiquement un raspberry pi), ces fichiers ne fonctionneront pas, il vous faudra compiler Duniter.

Connectez-vous Ă  votre serveur en SSH.

Mise en place

On va créer un utilisateur pour Duniter, puis se placer dans son dossier home

sudo adduser duniter
cd /home/duniter

On va créer un dossier spécifique histoire que nos fichiers soient bien rangés :

mkdir duniter
cd duniter

Installer

Vous allez télécharger la dernière version du paquet Debian pour Duniter :

NB - ce lien de téléchargement est le seul que j'ai trouvé pour le moment (1710/2024). Il n'est peut-être pas le paquet le plus récent.

## télécharger avec Curl
curl https://ipfs.io/ipfs/QmQrEHjXS4uuQuLwhQxtPTigygP6nyU747LCYRs1B4cg5T?filename=duniter_0.8.0-1_amd64.deb.tar.gz -o artifacts.zip

## OU télécharger avec wget
wget https://ipfs.io/ipfs/QmQrEHjXS4uuQuLwhQxtPTigygP6nyU747LCYRs1B4cg5T?filename=duniter_0.8.0-1_amd64.deb.tar.gz

ensuite on ouvre ce qu'on a téléchargé :

## dézipper
tar -xzvf duniter_0.8.0-1_amd64.deb.tar.gz
## se placer dans le bon dossier
ls
## La commande ls doit nous donner le nom du paquet Debian, par exemple : `duniter_0.8.0-1_amd64.deb`

enfin on installe le paquet.

La commande est précédée de sudo car elle nécessite les droits administrateur. Votre mot de passe devrait vous être demandé (si ça n'est pas le cas, c'est que vous êtes déjà administrateur, c'est normal)

## ici on utilise le caractère * qui veut dire 'joker'.
## Si vous avez plusieurs fichiers d'installation Duniter .deb, précisez lequel vous voulez installer.
sudo dpkg -i duniter_*_amd64.deb

Configurer le noeud

Une fois installé, le fichier de configuration devrait se trouver dans /etc/duniter/env_file. Nous allons modifier ce fichier avec l'éditeur nano. On se déplace dans nano avec les flèches et pas avec la souris.

sudo nano /etc/duniter/env_file

On y trouve plusieurs paramètres :

Vous pouvez enregistrer vos modifications en cours de route en faisant Ctrl + O.

A la fin, sortez de nano avec Ctrl + X.

Lancer le service Duniter

Votre noeud est prêt à être lancé ! Pour cela, on va indiquer à Debian de le lancer en tant que service, pour qu'il le redémarre automatiquement :

## démarrer le service
sudo systemctl start duniter-mirror.service
## activer le service au démarrage
sudo systemctl enable duniter-mirror.service

vous pouvez voir les logs de votre noeud avec journalctl :

## en différé 
## Par exemple pour les envoyer à quelqu'un qui vous les demande, pour diagnostiquer un problème
journalctl -u duniter-mirror

## en direct
## Faites Ctrl + X pour sortir
journalctl -ef -u duniter-mirror

## sur une période
## ici le 15/10/2024 de 10h Ă  15h
journalctl -u duniter-mirror --since '2024-10-15 10:00:00' --until '2024-10-15 15:00:00'

Vous devriez voir ce genre de lignes :

duniter-mirror_1  | 2024-06-30 09:29:39 Duniter    
duniter-mirror_1  | 2024-06-30 09:29:39 ✌️  version 0.0.0-unknown    
duniter-mirror_1  | 2024-06-30 09:29:39 ❤️  by librelois <c@elo.tf>:tuxmain <tuxmain@zettascript.org>:c-geek <https://forum.duniter.org/u/cgeek>:HugoTrentesaux <https://trentesaux.fr>:bgallois <benjamin@gallois.cc>:Duniter Developers <https://duniter.org>:Axiom-Team Developers <https://axiom-team.fr>, 2021-2024    
duniter-mirror_1  | 2024-06-30 09:29:39 đź“‹ Chain specification: ÄžDev    
duniter-mirror_1  | 2024-06-30 09:29:39 🏷  Node name: matograine    
duniter-mirror_1  | 2024-06-30 09:29:39 👤 Role: FULL    
duniter-mirror_1  | 2024-06-30 09:29:39 đź’ľ Database: ParityDb at /var/lib/duniter/chains/gdev/paritydb/full    
duniter-mirror_1  | 2024-06-30 09:29:44 👶 Creating empty BABE epoch changes on what appears to be first startup.    
duniter-mirror_1  | 2024-06-30 09:29:44 Local node identity is: 12D3KooWLrqPZXz4uFuAvnGcXuZDzsWhEvs8XQcavAmVyg8QyUiJ    
duniter-mirror_1  | 2024-06-30 09:29:44 Running litep2p network backend    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» Operating system: linux    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» CPU architecture: x86_64    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» Target environment: gnu    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» CPU: Intel Core Processor (Haswell, no TSX)    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» CPU cores: 1    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» Memory: 1935MB    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» Kernel: 6.1.0-21-cloud-amd64    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» Linux distribution: Debian GNU/Linux 11 (bullseye)    
duniter-mirror_1  | 2024-06-30 09:29:44 đź’» Virtual machine: yes    
duniter-mirror_1  | 2024-06-30 09:29:44 📦 Highest known block at #0    
duniter-mirror_1  | 2024-06-30 09:29:44 〽️ Prometheus exporter started at 127.0.0.1:9615    
duniter-mirror_1  | 2024-06-30 09:29:44 Running JSON-RPC server: addr=0.0.0.0:9944, allowed origins=["*"]    
duniter-mirror_1  | 2024-06-30 09:29:44 ***** Duniter has fully started *****    
## ... Puis les lignes indiquant que le noeud sync
duniter-mirror_1  | 2024-07-14 07:59:36 ⚙️  Syncing, target=#2227610 (1 peers), best: #1002 (0xfc43…7938), finalized #512 (0x64a6…1fbb), ⬇ 204.1kiB/s ⬆ 0.4kiB/s
duniter-mirror_1  | 2024-07-14 07:59:41 ⚙️  Syncing 323.8 bps, target=#2227610 (7 peers), best: #2621 (0x186b…95a2), finalized #2560 (0x927d…63ed), ⬇ 110.8kiB/s ⬆ 1.9kiB/s
duniter-mirror_1  | 2024-07-14 07:59:46 ⚙️  Syncing 397.4 bps, target=#2227611 (7 peers), best: #4608 (0x081a…e9cc), finalized #4096 (0x6f24…586b), ⬇ 132.0kiB/s ⬆ 0.1kiB/s
duniter-mirror_1  | 2024-07-14 07:59:51 ⚙️  Syncing 306.0 bps, target=#2227612 (7 peers), best: #6138 (0x8380…c8d6), finalized #5632 (0x06cb…186a), ⬇ 98.6kiB/s ⬆ 0.3kiB/s

Il est essentiel d'avoir des lignes qui indiquent 'Syncing'. Si vous voyez des lignes comme celle ci-dessous, c'est que le noeud ne synchronise pas. Notez 'best: #0' et '0 peers' : Il n'y a aucun bloc et aucun autre noeud contacté. Il faut sans doute ouvrir le port p2p (30333 par défaut, celui que vous avez indiqué pour DUNITER_LISTEN_ADDR)

duniter-mirror_1  | 2024-06-30 05:36:33 💤 Idle (0 peers), best: #0 (0xc184…b6c3), finalized #0 (0xc184…b6c3), ⬇ 0 ⬆ 0

VĂ©rifier le bon fonctionnement du noeud

Si vous ne l'avez pas déjà fait, installez Ğcli sur votre serveur.

Puis regardez si le noeud est accessible en local :

gcli -u ws://localhost:9944 blockchain current-block

on doit obtenir :

on ws://localhost:9944
finalized block	2208389
current block	2295714

Configurer le reverse-proxy

Maintenant que le noeud est fonctionel, il faut le rendre accessible depuis l'extérieur. Pour cela, on met en place un reverse proxy, c'est-à-dire un logiciel qui va filtrer les requêtes transmises au noeud Duniter, mais qui va surtout chiffrer la communication du noeud avec les applications.

Vérifier l'accessibilité du noeud depuis l'extérieur

Votre noeud est désormais installé et accessible de l'extérieur. Si vous ne l'avez pas déjà fait, il faut vérifier ce dernier point.