Base de connaissances du luma Base de connaissances du luma Base de connaissances du luma
  • 🏠 Blog
  • 🔗 Liens
  • 🎖️ Patreon
/
  • Français
  • English

Sur cette page

  • Configuration Requise
  • Avant-propos
  • Créer un Compte Worker
  • Hébergement
    • Configuration SSH
    • Sauvegarde la Clef Privée
    • Connexion
    • Installation
      • Mise à Jour
      • Pare-feu
      • Docker
      • NuLink
    • Configuration
    • Exécution
      • Logs
    • Mises à Jour
  • Lier les Comptes
  • 📜 Historique
BoboTiG/luma 0 0
Modifier cette page
  1. Base de connaissances du luma /
  2. [testnet] Comment déployer un nœud NuLink ?

[testnet] Comment déployer un nœud NuLink ?¶

NuLink Logo

Site web : www.nulink.org¶

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.

Configuration Requise¶

  • 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 :

  1. un compte staker qui stake ses NLK, n’importe quel compte Metamask ou Rabby fait l’affaire ;

  2. 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.

Avant-propos¶

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) :

🖥️ Ordinateur (PC)¶
$ echo 'Coucou depuis le 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é :

☁️ Serveur (VPS)¶
$ echo 'Coucou depuis le serveur !'

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.

Créer un Compte Worker¶

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 :

🖥️ Ordinateur (PC)¶
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'

Et créé le compte :

🖥️ Ordinateur (PC)¶
./geth account new --keystore ./keystore \
    && echo 'OK'

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).

Hébergement¶

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

Configuration SSH¶

Quand tu auras pris connaissance de l’adresse IP du serveur, configure l’accès SSH sur ta machine (remplace ADRESSE_IP par l’adresse IP du serveur) :

🖥️ Ordinateur (PC) ✍️¶
cat << EOF >> ~/.ssh/config
Host nulink
    User root
    HostName ADRESSE_IP
    Port 22
EOF

Sauvegarde la Clef Privée¶

Envoie le fichier de la clé privée depuis ton ordinateur vers le serveur :

🖥️ Ordinateur (PC)¶
scp keystore/UTC--* nulink:/root \
    && echo 'OK'

Connexion¶

Connecte-toi en SSH au serveur (utilise le mot de passe que tu as défini sur Contabo) :

🖥️ Ordinateur (PC)¶
$ ssh nulink

Installation¶

Mise à Jour¶

Mets à jour le système d’exploitation, puis redémarre :

☁️ Serveur (VPS)¶
apt update \
    && apt full-upgrade -y \
    && apt autoremove -y \
    && apt install -y unattended-upgrades \
    && reboot

Patiente quelques secondes et reconnecte-toi au serveur.

Pare-feu¶

Installe et configure le pare-feu pour autoriser seulement les connexions entrantes sur les ports SSH et du nœud :

☁️ Serveur (VPS)¶
apt install -y ufw \
    && ufw limit ssh \
    && ufw allow 9151/tcp \
    && ufw enable \
    && echo 'OK'

Docker¶

Installe Docker :

☁️ Serveur (VPS)¶
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¶

Pré-requis pour la prochaine étape :

☁️ Serveur (VPS)¶
mkdir nulink \
    && mv UTC--* nulink/ \
    && chmod -R 777 nulink \
    && echo 'OK'

Enfin, installe NuLink :

☁️ Serveur (VPS)¶
docker pull nulink/nulink:latest \
    && echo 'OK'

Configuration¶

Avertissement

Envoie maintenant un peu de tBNB sur le compte du worker.

Enregistre les mots de passe pour plus tard :

☁️ Serveur (VPS) ✍️¶
echo "export NULINK_KEYSTORE_PASSWORD='TON_MOT_DE_PASSE_POUR_NULINK'" >> ~/.profile
☁️ Serveur (VPS) ✍️¶
echo "export NULINK_OPERATOR_ETH_PASSWORD='LE_MOT_DE_PASSE_DU_COMPTE_WORKER'" >> ~/.profile

Tu dois te déconnecter pour prendre en compte les changements :

☁️ Serveur (VPS)¶
$ exit

Reconnecte-toi, et teste que les mots de passe sont visibles (tu devrais voir 3 lignes avec les 2 mots de passe et « OK ») :

☁️ Serveur (VPS)¶
echo "${NULINK_KEYSTORE_PASSWORD}" \
    && echo "${NULINK_OPERATOR_ETH_PASSWORD}" \
    && echo 'OK'

Initialise NuLink (remplace 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) :

☁️ Serveur (VPS) ✍️¶
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'

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 :

🖥️ Ordinateur (PC)¶
scp nulink:'/root/nulink/keystore/*' . \
    && echo 'OK'

Exécution¶

Et c’est parti, démarre le nœud :

☁️ Serveur (VPS)¶
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¶

Pour suivre ce qu’il se passe sur le nœud :

☁️ Serveur (VPS)¶
docker logs -f ursula

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 !

Mises à Jour¶

Ceci est à effectuer seulement lors d’une mise à jour du conteneur.

Action à faire dans l’ordre sur le serveur :

  1. mets à jour le système ;

  2. supprime le conteneur actuel, puis installe la dernière version :

☁️ Serveur (VPS)¶
docker stop ursula \
    && docker rm ursula \
    && docker pull nulink/nulink:latest \
    && echo 'OK'
  1. enfin, relance le nœud.

Lier les Comptes¶

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à !

📜 Historique¶

2024-03-03

Installation de unattended-upgrades pour garder le système d’exploitation à jour et réduire le temps de maintenance.

2024-02-17

Règle SSH du pare-feu plus protectrice.

2024-02-10

Simplification des étapes nécessitant SSH.

Mise à jour de l’adresse du token NLKTest (0xa22bfb00be8938c50833bfd2444ec721a9eeacc1 → 0x06a0f0fa38ae42b7b3c8698e987862afa58e90d9) suite à la migration de la phase 1 aux phases 2 & 3.

2024-01-27

Premier jet.

Précédent
Nœud Ξthereum local
Suivant
Les erreurs de kindlegen
🕓 2025-04-02 12:56:21 UTC+0200

2023-2025, Mickaël Schoentgen

Fait avec amour, Sphinx et Shibuya.