[testnet] Comment déployer un nœud NuLink ?¶
Avertissement
Ce guide est en partie obsolète depuis août 2024.
Ce guide est une traduction libre et simplifiée de la documentation officielle pour le déploiement d’un nœud NuLink, plus communément appelé node validator, worker node ou encore staker node. Système d’exploitation : Debian GNU/Linux ; Architecture : x86-64 ; Espace disque : 30 Gio NVMe ; Mémoire : 4 Gio de RAM ; Une adresse IP statique ; Le port 9951 ouvert. À savoir, il te faudra deux comptes : un compte staker qui stake ses NLK, n’importe quel compte Metamask ou Rabby fait l’affaire ; un compte worker qui sera lié au compte staker (on parle de bond en anglais), et nous verrons comment le créer par la suite. Les futures commandes à taper dans une console sont précédées par une légende pour indiquer sur quel environnement elles doivent être exécutées. Exemple avec une commande qui devra être tapée dans la console de l’ordinateur (PC) : Et une commande qui devra être tapée dans la console du serveur (VPS, pour Virtual Private Server) sur lequel le nœud sera déployé : Astuce Chaque commande peut être copiée/collée directement depuis cet article vers la console (il y a une icône qui apparait en haut à droite de chaque bloc de code quand la souris passe dessus). Quand il y a une partie de la commande a modifier manuellement : je le préciserai en amont ; la légende du bloc de code contiendra l’émoji ✍️ ; la/les ligne en question sera surlignée. Astuce Afin de vérifier qu’une commande se soit terminée avec succès, la dernière ligne affichée dans la console, après l’avoir exécutée, devra être « OK ». Si ce n’est pas le cas, il y a eu une erreur. Important Le compte du worker ne peut pas être un compte ordinaire Metamask. Attention Le mot de passe que tu créeras pour ce compte doit faire 8 caractères ou plus (source). Nous devons passer par Geth pour la création du compte. Donc, sur ton PC, installe Geth : Et créé le compte : Prudence Garde bien les informations en sécurité (le mot de passe et le fichier contenant la clé privée). Le fichier de la clé privée se trouve dans le dossier keystore et se nomme quelque chose comme UTC–xxx (où « xxx » est spécifique à chacun). Créé ton compte sur Contabo, et utilise ce lien vers le serveur à louer avec la bonne configuration présélectionnée. À l’heure où j’écris ces lignes, la première facture est de 18,60 €, puis 11,40 €/mois. Si tu décides d’utiliser un autre fournisseur, voire un ordinateur local, voici la configuration sélectionnée : 6 vCPU Cores 16 GB RAM 200 GB NVMe Debian 12 Quand tu auras pris connaissance de l’adresse IP du serveur, configure l’accès SSH sur ta machine (remplace Envoie le fichier de la clé privée depuis ton ordinateur vers le serveur : Connecte-toi en SSH au serveur (utilise le mot de passe que tu as défini sur Contabo) : Mets à jour le système d’exploitation, puis redémarre : Patiente quelques secondes et reconnecte-toi au serveur. Installe et configure le pare-feu pour autoriser seulement les connexions entrantes sur les ports SSH et du nœud : Installe Docker : Pré-requis pour la prochaine étape : Enfin, installe NuLink : Avertissement Envoie maintenant un peu de tBNB sur le compte du worker. Enregistre les mots de passe pour plus tard : Tu dois te déconnecter pour prendre en compte les changements : Reconnecte-toi, et teste que les mots de passe sont visibles (tu devrais voir 3 lignes avec les 2 mots de passe et « OK ») : Initialise NuLink (remplace Prudence Garde bien les informations en sécurité (les douze mots de la seed phrase et le fichier contenant la clé privée). Depuis ton PC, récupère une copie de la clé privée : Et c’est parti, démarre le nœud : Pour suivre ce qu’il se passe sur le nœud : Si tu vois « Working ~ Keep Ursula Online! » et/ou « learn_from_teacher_node stop now RELAX. », ça veut dire que tout fonctionne nickel. Félicitations ! Ceci est à effectuer seulement lors d’une mise à jour du conteneur. Action à faire dans l’ordre sur le serveur : supprime le conteneur actuel, puis installe la dernière version : enfin, relance le nœud. Le site web pour la gestion du staking est https://dashboard.testnet.nulink.org/staking. Plus bas dans cette page, il y a un bouton « Bond worker », clique dessus et renseigne l’adresse du compte worker. Et voilà ! Installation de Règle SSH du pare-feu plus protectrice. Simplification des étapes nécessitant SSH. Mise à jour de l’adresse du token NLKTest ( Premier jet.Configuration Requise¶
Avant-propos¶
echo 'Coucou depuis le PC !'
echo 'Coucou depuis le serveur !'
Créer un Compte Worker¶
GETH_VERSION='1.13.11-8f7eb9cc'
GETH_FOLDER="geth-linux-amd64-${GETH_VERSION}"
wget "https://gethstore.blob.core.windows.net/builds/${GETH_FOLDER}.tar.gz" \
&& tar -xzf "${GETH_FOLDER}.tar.gz" \
&& cd "${GETH_FOLDER}" \
&& echo 'OK'
./geth account new --keystore ./keystore \
&& echo 'OK'
Hébergement¶
Configuration SSH¶
ADRESSE_IP
par l’adresse IP du serveur) :cat << EOF >> ~/.ssh/config
Host nulink
User root
HostName ADRESSE_IP
Port 22
EOF
Sauvegarde la Clef Privée¶
scp keystore/UTC--* nulink:/root \
&& echo 'OK'
Connexion¶
ssh nulink
Installation¶
Mise à Jour¶
apt update \
&& apt full-upgrade -y \
&& apt autoremove -y \
&& apt install -y unattended-upgrades \
&& reboot
Pare-feu¶
apt install -y ufw \
&& ufw limit ssh \
&& ufw allow 9151/tcp \
&& ufw enable \
&& echo 'OK'
Docker¶
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \
&& echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null \
&& apt update \
&& apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
&& echo 'OK'
NuLink¶
mkdir nulink \
&& mv UTC--* nulink/ \
&& chmod -R 777 nulink \
&& echo 'OK'
docker pull nulink/nulink:latest \
&& echo 'OK'
Configuration¶
echo "export NULINK_KEYSTORE_PASSWORD='TON_MOT_DE_PASSE_POUR_NULINK'" >> ~/.profile
echo "export NULINK_OPERATOR_ETH_PASSWORD='LE_MOT_DE_PASSE_DU_COMPTE_WORKER'" >> ~/.profile
exit
echo "${NULINK_KEYSTORE_PASSWORD}" \
&& echo "${NULINK_OPERATOR_ETH_PASSWORD}" \
&& echo 'OK'
FICHIER_CLEF_PRIVEE
par le nom du fichier contenant la clé privée du compte worker [« UTC–xxx »] et ADRESSE_WORKER
par l’adresse publique du compte worker) :docker run -it --rm \
-p 9151:9151 \
-v /root/nulink:/code \
-v /root/nulink:/home/circleci/.local/share/nulink \
-e NULINK_KEYSTORE_PASSWORD \
nulink/nulink nulink ursula init \
--signer keystore:///code/FICHIER_CLEF_PRIVEE \
--eth-provider https://data-seed-prebsc-2-s2.binance.org:8545 \
--network horus \
--payment-provider https://data-seed-prebsc-2-s2.binance.org:8545 \
--payment-network bsc_testnet \
--operator-address ADRESSE_WORKER \
--max-gas-price 10000000000 \
&& echo 'OK'
scp nulink:'/root/nulink/keystore/*' . \
&& echo 'OK'
Exécution¶
docker run --restart on-failure -d \
--name ursula \
-p 9151:9151 \
-v /root/nulink:/code \
-v /root/nulink:/home/circleci/.local/share/nulink \
-e NULINK_KEYSTORE_PASSWORD \
-e NULINK_OPERATOR_ETH_PASSWORD \
nulink/nulink nulink ursula run --no-block-until-ready \
&& echo 'OK'
Logs¶
docker logs -f ursula
Mises à Jour¶
docker stop ursula \
&& docker rm ursula \
&& docker pull nulink/nulink:latest \
&& echo 'OK'
Lier les Comptes¶
📜 Historique¶
unattended-upgrades
pour garder le système d’exploitation à jour et réduire le temps de maintenance.0xa22bfb00be8938c50833bfd2444ec721a9eeacc1
→ 0x06a0f0fa38ae42b7b3c8698e987862afa58e90d9
) suite à la migration de la phase 1 aux phases 2 & 3.