[Tutoriel] Installer Duniter server sur un Raspberry Pi 4

Bonjour,
Voici mes notes prises lors de l’installation de Duniter version server sur un Raspberry Pi 4 sans yunohost.
Est-ce que vous pouvez confirmer que ce tuto est juste et que rien n’y manque ? L’idée étant de publier cela à plus grande échelle.
Merci d’avance.

1 Introduction

La Ğ1 (prononcez « June »), crypto-monnaie atypique, basée sur la blockchain et co-produite par ses utilisateurs, fonctionne sur un réseau d’ordinateurs. Son fonctionnement est totalement décentralisé, en P2P. Et repose sur des centaines de petits (ou gros) ordinateurs sur lesquels est installé un programme : Duniter. C’est ce dernier qui se charge d’effectuer les opérations demandées par les utilisateurs de la Ğ1. Donc, si vous êtes vous même utilisateur de la Ğ1, pour permettre au réseau de fonctionner et à la Ğ1 de circuler, soit vous estimez que vos compétences en informatique/électronique sont trop faibles pour être utiles et alors je vous invite à verser une contribution (une partie de votre DU, par exemple) sous forme de don à la clé publique TENGx7WtzFsTXwnbrPEvb6odX2WnqYcnnrjiiLvp1mS (plus de détail ici), soit vous mettez un peu de votre temps, énergie, argent et vous proposer un serveur à la communauté. Voici ici, la procédure que j’ai suivi pour y arriver. J’utilise pour cela un Raspberry Pi 4.

2 Le Raspberry Pi.

  • Acheter un Raspberry Pi 4 (RP).

La liste des revendeurs dans votre région se trouve à cette adresse. Il se peut qu’un RP 3 pourrait être suffisamment puissant pour faire l’affaire. À tester. Le RP 400 est fourni avec clavier et souris, ce qui n’est pas nécessaire dans ce projet. J’ai acheté le boîtier quand même pour le protéger de la poussière.

  • Vérifiez que votre vendeur vous fournis les câbles nécessaire

(au minima un câble HDMI pour connecter votre RP à un téléviseur et un câble USB type C pour l’alimentation). Pour ce projet, vous aurez besoin d’un câble pour vous connecter à Internet (connu sous les noms de câble Ethernet ou RJ45). À moins que vous ne passiez par le Wi-Fi mais c’est hors sujet. Et temporairement d’un clavier USB et d’une souris USB et d’un écran avec une entrée HDMI.

  • Acheter une micro-carte SD. Minimum 16G, je pense.

  • Installer une image du système d’exploitation (Opereting system, OS) sur la carte SD.

Cette image est disponible sous forme d’un fichier exécutable.
Téléchargez la version qui correspond à l’OS de l’ordinateur que vous utiliser chaque jour, ici. Vous téléchargez l’image sur votre ordinateur, vous insérez votre carte SD dans votre ordinateur, puis vous la transférez sur la carte SD en exécutant le fichier exe. Ensuite, vous placez la carte dans le RP.

À ce stade-ci, le RP est allumé et que vous voyez le bureau sur votre écran.

  • Configuration spécifique du RP pour Duniter.

L’idée ici est qu’en définitive, votre RP soit placé dans un coin de votre maison, avec pour seules connections celles de l’alimentation et de l’Ethernet et que vous y accédiez à partir de votre PC habituel. Pour cela, il existe un outil qui se nomme SSH et qui est disponible par défaut sur les ordinateurs Windows modernes (pour Linux ou Mac, je ne sais pas mais vous bien, j’en suis sûr :-). Pour pouvoir l’utiliser avec votre RP, il faut l’activer. Pour cela, sur votre RP, ouvrez une console, un terminal (une fenêtre noir dans laquelle on peut taper des commandes, accessible via le menu du bureau) et écrivez « sudo raspi-config », vous allez peut être devoir introduire le mdp de pi. Là, vous entrez dans un menu de configuration de RP et choisissez « Interfacing options » et choisissez la ligne SSH puis « Yes ». Sauvez. Voilà, c’est activé. Je reviendrai sur SSH plus tard. Il est possible d’y arriver via le menu « menu des applications ➜ Préférences ➜ Configuration du Raspberry », onglet interfaces.

  • Dans cette console, tapez la commande « ifconfig ». Si votre RP est connecté via le câble RJ45, il y aura dans la réponse une ligne qui commence par « eth0 » et en dessous une autre, décalée qui commence par inet. Notez les nombres qui suivent, c’est l’adresse IP interne à votre réseau du RP. 4
    nombres séparés par 3 points, qui normalement commence par 192.168… Pour la suite du tuto, je noterai « aaa.bbb.ccc.ddd » cette adresse IP.
    Pour s’assurer que l’OS est à jour, tapez « sudo apt-get update » suivi d’un « sudo apt-get upgrade ».

  • Démarrer le RP en mode console.
    Pour ne plus à avoir besoin de clavier, souris, écran. Ce qui libérera des ressources pour Duniter.

3 Le serveur Duniter.

  • Prérequis, obtenez votre adresse IP externe.
    Pour cela ouvrez le navigateur de votre PC et surfez sur « https://www.monippublique.com/ », notez cette adresse. Pour la suite du tuto, je noterai « zzz.yyy.xxx.www » cette adresse IP là.

  • Accéder à votre RP à partir de votre PC.

Il est question ici d’installer une version serveur du nœud Duniter, pas de la version desktop.

Pour cela, vous allez vous connecter à votre RP à partir de votre PC Windows. C’est à dire, sur votre PC, faites une recherche sur « Invite de commandes » (IC) et ouvrez en une. Tapez « ssh pi@aaa.bbb.ccc.ddd » Il vous demandera peut-être le mdp de pi. Vous devriez ensuite alors voir « pi@respberrypi:~$ » et le curseur qui clignote.

À ce stade-ci vous pouvez envoyer des commandes à votre RP à partir de votre PC.

Sur le site de Duniter, il est expliqué comment arriver à forger des blocs. C’est sur base de ces pages que ce texte est rédigé.

  • Téléchargez Duniter sur votre PC.

Pour cela, rendez-vous avec votre navigateur sur cette page et télécharger la version 1.8.0 Linux (Raspbian buster) armv7l - Server [53.6 Mo] disponible à ce jour (sinon, choisissez le package Raspbian Server stable (pas rc ou beta) le plus récent).

  • Copiez le fichier sur RP.

Pour cela j’utilise l’outil WinSCP. Qui une fois installé et démarré vous demandera un nom d’hôte (inscrivez « aaa.bbb.ccc.ddd », un nom d’utilisateur : « pi » et un mot de passe, celui de pi. Ensuite retrouvez le fichier téléchargé dans la fenêtre de gauche et accédez à « /tmp/ » dans la fenêtre de droite et glissez/déposé le fichier de gauche à droite.

(on dit que sur votre serveur RP, il y aura un nœud du réseau Duniter). Pour cela retournez dans votre programme « Invite de commandes » et tapez « cd /tmp/ » puis « sudo dpkg -i Duniter--linux-.deb ». Normalement, il devrait installer Duniter sur votre RP.

Afin qu’il soit identifiable avec votre propre identité. Pour cela, tapez « Duniter wizard key » et inscrivez votre clé publique de Ğ1 dans « Key’s salt » et votre mot de passe de Ğ1 dans « Key’s password ». Puis configurez l’accès réseau du nœud. Pour cela, tapez « Duniter wizard network ». Voici ce que j’ai introduit :

? IPv4 interface: eth0 aaa.bbb.ccc.ddd
? IPv6 interface: eth0 Je sais plus mais cela n’a pas d’importance, je pense
? Port: 10900
? Remote IPv4: zzz.yyy.xxx.www
? Remote port: 10900
? UPnP is available: use automatic port mapping? (easier) No
? Does this server has a DNS name? No

  • Ouvrir le port du RP

En suite un point crucial et qui n’est pas expliqué, c’est que vous devez permettre à ce qu’Internet ait accès au RP. Et pour cela, vous devez vous connecter à l’administration de votre routeur, de votre box (cela se fait généralement via votre navigateur) et vous devez ouvrir le port 10900 du RP à Internet (l’adresse IP aaa.bbb.ccc.ddd:10900). Vous devez indique que aaa.bbb.ccc.ddd:10900 peut
être accessible de l’extérieur. Mais je ne peux pas vous expliquer comment faire cela car ça
dépend de votre routeur.

  • Démarrer le nœud. Dans l’IC, tapez d’abord la commande « Duniter check-config » pour vérifier que tout est OK. Puis « Duniter sync g1.duniter.org » pour synchroniser votre nœud avec le réseau Duniter. Puis « Duniter direct_webstart –ipv4 aaa.bbb.ccc.dd ». Le nœud est alors accessible via le navigateur de votre PC à l’adresse aaa.bbb.ccc.dd:9220 (vous n’aurez pas à installer un serveur apache). Gardez un œil sur l’IC car vous allez peut être avoir des messages en tous genres dont certains vous renseigneront sur d’éventuelles erreurs.
  • Et plus loin.
    Il existe encore d’autres subtilités comme celle de ne plus afficher les messages dans l’IC, celle de démarrer automatiquement le nœud au démarrage du RP. Pour arrêter le nœud, la commande « Duniter
    stop » devrait faire l’affaire.
4 « J'aime »

Bravo pour ce tuto surtout à destination des windowsiens !

Pour la dernière version stable de Duniter c’est déjà limite en RAM, mais avec la prochaine il semble qu’il faille plus d’1 Go. (ou ajouter du swap)

Attention avec les cartes SD, elles s’usent très vite (avec un usage intensif comme par exemple des synchros Duniter régulières, ça peut durer quelques mois). En plus c’est assez lent. Préférer un HDD ou SSD en USB3.1 sur le RPi4 (dans ce cas une carte SD de 500 Mo pour le boot suffira amplement, mais prévoir un peu plus pour l’installation si le déplacement de l’OS en USB vient après).

Cela se fait automatiquement si l’UPnP est activé dans le wizard network.

Il est aussi possible de télécharger directement le fichier sur le RPi, avec la commande suivante (à entrer dans un terminal sur le RPi) :

wget url_du_fichier

On peut ajouter la précision que le mot de passe tapé ne s’affiche pas, c’est normal. Cela perturbe souvent les habitués des interfaces graphiques.

4 « J'aime »

Salut et bravo pour ton travail. En plus des remarques de Tuxmain, j’étais en train de me demander si ça valait la peine d’intégrer l’installation de l’OS. Comme pour le WIFI, pour moi c’est hors-sujet. Il existe plein de tutos sur le web pour installer Raspbian ou équivalent. J’avais fait un tuto pour installer duniter sur une machine Linux mais mon serveur est down en ce moment et je ne trouve pas le temps de m’en occuper d’autant qu’il est hébergé chez un ami. Peut-être que tu y trouveras des ressources intéressantes quand il sera à nouveau en ligne (https://normandie-libre.fr/installer-un-serveur-duniter/). Quand tu l’auras publié, postes le lien ici que je l’ajoute sur https://spip.infojune.fr

Yo, bravo pour le tuto.

Je rajouterais perso 3 trucs :

1 - installer la version serveur, sans desktop, car ça libère beaucoup de ram et de proc, et on n’a pas besoin de bureau pour un serveur

2 - rajouter une fois la SD faite un fichier vierge intitulé « ssh » à la racine du dossier « boot » AVANT l’install. Cela permet de se connecter direct en ssh (une fois l’IP locale repérée) sans avoir besoin de mettre un écran ou un clavier au raspi… On fait tout en ssh dès le début.

3 - IMPORTANT : en premier lieu, créer son user/admin sous debian, lui accorder les droits sudo, ssh, et VIRER LE USER/ADMIN « PI » INSTALLÉ PAR DÉFAUT. Sinon, c’est comme ouvrir grand la porte de son réseau local, n’importe qui peut se connecter avec le login et mdp ultra-connu du pi. C’est un ajout vraiment crucial, je pense.

Sinon, nickel !

1 « J'aime »

Question très technique: Comment font les nœuds pour se connecter. Sont ils appelé par d’autres ou appelle-t-il d’autres nœuds? Pourquoi cette question? Je dispose d’un PI4 qui a largement de quoi accueillir un serveur. Mais il est derrière une box 4G donc lié par une IP privée du FAI.( qui change régulièrement). S’il peut se connecter à une IP fixe, il peut devenir serveur par un tunnel en reverse SSH. C’est le cas actuellement, pour une autre application. Est ce que ça fonctionnerait pour un serveur duniter ? Merci.

Les deux, il y a des connexions entrantes et sortantes. Derrière une box 4G il peut se connecter à des nœuds (les nœuds connus lors de la sync et les nœuds découverts chez les nœuds connus). Et si le tunnel fonctionne pour un autre service, j’imagine que ça devrait aussi fonctionner pour Duniter…

Mais même sans connexions entrantes ça devrait fonctionner.

Oui, mais le reverse SSH établi est très restrictif. La sécurité chez moi, n’est pas un vain mot. Donc avant de me lancer, je voudrais savoir comment se font les liaisons. (SSH, groupe en liste blanche, clés RSA ) Si t’as une doc, je veux bien la consulter.

Le protocole s’appelle WS2p, c’est du websocket. Il y a juste besoin d’un port en TCP.

Merci tuxmain. C’est très intéressant. Et en capacité mémoire (stockage) , il faut compter combien ?

Ça prend quelques Go tout au plus. Chez moi les données de Duniter font 4 Go (avec l’index des transactions, sans wotwizard). Donc compter au moins 20 Go libres pour être large.