Dans ce petit tutoriel, nous allons voir comment déployer un node sur une blockchain, en l'occurrence le node Starknet.
Alors pour cette installation, nous avons besoin de :
Pour faciliter le déploiement, je conseil de passer par une instance Docker pour les raisons suivantes :
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 !!! 🥳
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 :
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 :
ssh-keygen
avec une pass-phraseLe 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)
Connexion avec une clé privée : (remplir les cases rouges)
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
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 :
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 !
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 😁