Déploiement d'un node sur une blockchain

Dans ce petit tutoriel, nous allons voir comment déployer un node sur une blockchain, en l'occurrence le node Starknet.

1.Préliminaire

Alors pour cette installation, nous avons besoin de :

  • un serveur VPS (ou une machine local) de préférence sous un ubuntu 20.04
  • d'un espace au minima de 100 GO, cela va surtout dépendre de préconisation donnée par l'équipe du projet
  • d'au moins 4Core/4GB de RAM, idem cela va surtout dépendre de préconisation donnée par l'équipe du projet

Pour faciliter le déploiement, je conseil de passer par une instance Docker pour les raisons suivantes :

  • Docker est en quelque sorte une mini-machine virtuelle sur ton VPS donc possède ses propres dépendances
  • Peu importe sur quelle version de distrib linux (debian, ubuntu, arch), le docker est compatible et s'installe facilement
  • En une ligne de commande le setup et fait.
  • Aucun conflit avec les soft/outils installés sur votre machine

Docker permet une isolation d'une instance d'une application sur votre VPS. Il est même possible de gérer des redirections et/ou ports facilement. 😊

Avec ce principe, si lamachine le permet, tu peux faire tourner plusieurs node sans qu'il y ait des problèmes d'interdépendances (ex: besoin de telle version de python, de tel version d'un lib,...).

Dans un premier temps, il faut vérifier que l'équipe projet dispose d'une version docker, sinon il faudra la construire.

Aller c'est parti, go sur https://github.com/eqlabs/pathfinder et on regarde vers la fin du README, on trouve :

mkdir -p $HOME/pathfinder
docker run \
  -p 9545:9545 \
  -e RUST_LOG=info \
  -e PATHFINDER_ETHEREUM_API_URL="https://goerli.infura.io/v3/<project-id>" \
  -v $HOME/pathfinder:/usr/share/pathfinder/data \
  eqlabs/pathfinder

Cela implique qu'une version Docker est disponible, oufff !!! 🥳

2.Installation

On suppose dans cette section, que tu as déjà une machine linux de type Ubuntu 20.04 et que tu peux t'y connecter en SSH. (je ferai peut-être un mini tutoriel pour ceux qui nagent un peu...)

Pour ceux qui n'en aurait pas, vous pouvez louer des VPS sur :

  • DigitalOcean : [https://m.do.co/c/aeea1af961a4]() (lien de parrainage) où vous avez le droit à 100 $ de gratuit pendant 2 mois. (Il faut valider avec sa carte bancaire)
  • Nuage : [https://nua.ge/referral/APEYYALU]() (lien de parrainage) où vous avez le droit à 100 euros de gratuit sans limite de temps. (Il faut valider avec sa carte bancaire)

Sur DigitalOcean, il est possible de créer un VPS en utilisant une clé privée ou directement avec un mot de passe.
Dans le cas où tu veux un maximum de sécurité, tu dois choisir une authentification par clé.
Pour générer une clé privée, il te faut regarder les tutos suivants :

Le lien suivant est un bon résumé : https://www.aquaray.com/blog/articles/comment-generer-une-cle-SSH

Dans la section "Pour les personnes techniques", il y a une petite explication sur comment créer un VPS sous DigitalOcean

En ce qui concerne Nuage, il te faudra absolument une clé privée. L'interface est assez simple pour la création du VPS

Ensuite pour te connecter sur le serveur, tu dois récupérer l'adresse IP Publique disponible sur le panel du dashboard DO ou Nuage/
Sous Windows, il faut utiliser Putty ou Kitty (je préfère celui-là).
Sous linux, il faut utiliser la commande ssh.

Ce tutoriel explique comment utiliser Putty sous Windows (https://pixiscreen.fr/ressources-dev/le-ssh-avec-putty/).

Connexion avec mot de passe : (remplir les cases rouges)
ssh

Connexion avec une clé privée : (remplir les cases rouges)
config%20cl%C3%A9

2.1. Docker et Docker-compose

Je te propose cette ligne de commande pour installer l'ensemble des outils docker (il faut être root !)

wget -O installDocker.sh https://raw.githubusercontent.com/Jazys/OpenMVPBox/main/installDocker.sh && chmod +x installDocker.sh && ./installDocker.sh

Docker est installé en tant que service, il tourne donc en tâche de fond.

Pour vérifier l'installation, les simples commandes suivantes peuvent être utilisées :

docker ps && docker-compose -v

Résultat :

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
docker-compose version 1.26.0, build d4451659

2.2. Alchemy ou infura

Pour connecter son node sur un tesnet ou sur un mainnet, il faut passer par Alchmy ou Infura afin d'interconnecter le node vers la blockchain cible.

La démarche à suivre est la suivante :

  • Se rendre sur alchemy.com et se créer un compte si ce n'est pas déjà fait
  • Sur l'onglet "Dashboard" cliquer "Create" puis choisir le réseau puis "Create App" puis "View" et récupérer le contenu de la valeur HTTP

Screenshot_1

Screenshot_2

2.3. Lancement du node Starknet

Il ne reste plus qu'à se mettre dans le répertoire voulu et tapper le lignes de commande suivantes :

mkdir -p pathfinder

docker run \
  -d \
  -p 9545:9545 \
  -e RUST_LOG=info \
  -e PATHFINDER_ETHEREUM_API_URL="https://eth-goerli.alchemyapi.io/v2/l9EafRksGfSDETxzcn78IlfrIfaUHUTg" \
  -v pathfinder:/usr/share/pathfinder/data \
  eqlabs/pathfinder

La commande docker run permet de lancer un service/une application avec docker.

Explication des commandes :

On crée d'abord un dossier pour stocker le contenu des fichiers qu'on partage entre la machine et le docker. (mkdir)
On lance le docker avec l'image Starknet avec les bons arguments (en tâche de fond par exemple) (docker run)

Alors pour moi ce n'est pas encore optimale et je préfère par avoir une surcouche (docker-compose) pour manipuler plus facilement.
Pour cela, il faut créer le fichier docker-compose.yml et avoir le contenu suivant :


version: "3.7"

services:
  starknet:
    image: eqlabs/pathfinder
    restart: always
    ports:
      - "9545:9545"
    volumes:
      - pathfinder:/usr/share/pathfinder/data
    environment:
      - RUST_LOG=info
      - PATHFINDER_ETHEREUM_API_URL=https://eth-goerli.alchemyapi.io/v2/l9EafRksGfSDETxzcn78IlfrIfaUHUTg

volumes:
  pathfinder:
    driver: local
    driver_opts:
      type: none
      device: ${PWD}/pathfinder
      o: bind

Puis on le lance en ligne de commande de la façon suivante : (il faut être dans le dossier contenant le fichier docker-compose.yml)

  docker-compose up -d

Pour arrêter ce service, il faut tapper la commande suivante : (il faut être dans le dossier contenant le fichier docker-compose.yml)

  docker-compose down

On peut voir l'état de notre node via docker via la commande

docker ps

Donne :

CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS          PORTS                                       NAMES
40a76bc113b8   eqlabs/pathfinder   "/sbin/tini -- /usr/…"   3 minutes ago   Up 14 seconds   0.0.0.0:9545->9545/tcp, :::9545->9545/tcp   ubuntu_starknet_1

Je ne détail pas forcément l'ensemble des commandes, ce n'est pas le but de l'article. L'idée c'est vraiment de comprendre comment utiliser le service docker avec des projets qui en font référence !

Conclusion

Avec quelques commandes et un peu de recherche, on arrive facilement à faire tourner un node sur un VPS.

Pour ceux qui trouvent des node sans docker, on peut toujours essayer de les convertir c'est un bon exercice !

A la prochaine 😁

Article précédent Article suivant