Créer un Node Rocket Pool Natif sans Docker

NOTE

Ce guide est conçu pour Smartnode v1.6.5 et supérieur.

Si vous utilisez une version antérieure, vous devez mettre à niveau vers la v1.6.5 ou supérieur avant de configurer le mode Natif.

Dans cette section, nous allons parcourir le processus d'installation de la stack Rocket Pool Smartnode nativement sur votre système, sans utiliser de conteneurs Docker.

Le plan général est le suivant :

  1. Créer une configuration de solo staking standard avec des services systemd pour le client d'Exécution, le client de Consensus / Beacon Node, et le client Validateur
  2. Créer des services système pour les composants Rocket Pool (les processus node et watchtower)
  3. Configurer Rocket Pool pour communiquer avec vos services clients
  4. Mettre à jour la définition de votre service client Validateur pour utiliser le fee recipient et les clés de validateur de Rocket Pool

Il s'agit d'une installation assez complexe qui prendra donc un certain temps à compléter.

La diversité des systèmes d'exploitation et des distributions disponibles rend impraticable la création de guides pour tous. Les instructions de ce guide sont adaptées à un système basé sur Debian (y compris Ubuntu). Pour les autres distributions ou systèmes d'exploitation, vous pouvez suivre les étapes générales décrites dans le guide mais devrez substituer certaines commandes par celles que votre système utilise de manière appropriée.

Danger

Ce guide est destiné aux utilisateurs expérimentés en administration et utilisation de systèmes Linux. Cela inclut l'utilisation du terminal, la création de comptes système, la gestion des permissions et l'installation de services. Nous supposons que vous êtes familier avec ces activités - puisque vous gérerez l'essentiel de l'infrastructure vous-même, nous ne fournissons qu'un support limité pour les installations natives. Si vous n'êtes pas familier avec ces activités, nous ne recommandons pas d'utiliser le mode Natif.

Étape 1 : Configurer les clients d'Exécution et de Consensus

Le mode Natif étend essentiellement une configuration de solo staking standard et permet simplement au logiciel Smartnode de se connecter aux clients qu'il exécute déjà (avec quelques petites modifications).

À cette fin, nous vous recommandons de commencer par suivre certains des guides de solo staking conventionnels fournis par la communauté :

Notez que vous ne créerez pas réellement de validateur comme défini dans ces guides - Rocket Pool le fera pour vous. Vous pouvez ignorer les portions impliquant l'outil Staking Deposit CLI.

Vous devez simplement suivre les guides jusqu'au point où vous avez un service client d'Exécution, un service client de Consensus / Beacon Node et un service client Validateur tous installés et synchronisant la chaîne. Ignorez les étapes qui impliquent le financement d'un validateur et l'enregistrement de son mnémonique.

De plus, il y a un cas spécial pour le fee recipient - lorsque vous arrivez à la portion du guide où vous spécifiez le fee recipient dans la configuration de votre client Validateur, laissez-le vide pour l'instant. Nous décrirons comment le configurer pour les validateurs Rocket Pool ci-dessous.

Une fois vos clients installés et que vous pouvez voir dans leurs logs qu'ils synchronisent correctement les chaînes, vous pouvez suivre les étapes suivantes pour configurer le Smartnode Rocket Pool et le connecter à vos clients.

Étape 2 : Installer Rocket Pool

Créer le compte de service

La première étape consiste à créer un nouveau compte système pour les services Rocket Pool et à désactiver la connexion et l'accès au shell pour celui-ci :

sudo useradd -r -s /sbin/nologin rp

Maintenant, ajoutez-vous au groupe rp. Vous devrez le faire pour utiliser la CLI Rocket Pool, car elle et le daemon Rocket Pool doivent tous deux accéder au fichier de portefeuille de la couche d'Exécution.

sudo usermod -aG rp $USER

Enfin, ajoutez également le compte utilisateur de votre client Validateur au groupe rp. Le nom de ce compte utilisateur dépend du guide que vous avez suivi pour configurer votre service VC.

Par exemple, si votre VC s'exécute en tant qu'utilisateur lighthousevalidator, vous feriez ce qui suit :

sudo usermod -aG rp lighthousevalidator

Après cela, déconnectez-vous et reconnectez-vous pour que les modifications prennent effet.

Configurer les binaires

Commencez par créer un dossier pour Rocket Pool et un sous-dossier de données. Vous pouvez le placer où vous voulez ; pour ce guide, je le mettrai dans /srv :

sudo mkdir -p /srv/rocketpool

sudo chown $USER:$USER /srv/rocketpool

Maintenant, téléchargez les binaires CLI et daemon (ou ignorez ceci et compilez-les depuis les sources si vous préférez). Choisissez la plateforme que votre système utilise parmi les onglets ci-dessous.

Linux x64
Linux arm64
macOS x64
macOS arm64
sudo wget https://github.com/rocket-pool/smartnode/releases/latest/download/rocketpool-cli-linux-amd64 -O /usr/local/bin/rocketpool

sudo wget https://github.com/rocket-pool/smartnode/releases/latest/download/rocketpool-daemon-linux-amd64 -O /usr/local/bin/rocketpoold

sudo chmod +x /usr/local/bin/rocketpool

Maintenant, définissez le propriétaire et le groupe du daemon sur rp :

sudo chown rp:rp /usr/local/bin/rocketpoold

Enfin, définissez le bit suid et les autres bits de permissions sur le binaire daemon :

sudo chmod u+sx,g+sx,o-rwx /usr/local/bin/rocketpoold

Cela garantira que le daemon s'exécute toujours en tant qu'utilisateur rp, afin qu'il ait toujours les permissions appropriées définies.

NOTE

Le Smartnode échouera très probablement avec des erreurs de permissions si vous ne faites pas cela. Veuillez vous assurer d'exécuter cette commande !

Configurer le dossier d'installation

Une fois la CLI et le Daemon installés, vous devrez ensuite configurer la structure de dossiers et les fichiers d'accompagnement que le Smartnode s'attend à trouver. Commencez par créer les dossiers suivants :

mkdir -p /srv/rocketpool/data/validators && sudo chmod 775 /srv/rocketpool/data/validators

mkdir /srv/rocketpool/data/rewards-trees

mkdir /srv/rocketpool/data/custom-keys

sudo chown -R rp:rp /srv/rocketpool/data

Ensuite, téléchargez les scripts suivants - Rocket Pool les utilisera lorsqu'il aura besoin d'arrêter ou de redémarrer votre client Validateur pour changer son fee recipient (discuté plus tard) ou charger de nouvelles clés après avoir créé un nouveau minipool :

wget https://github.com/rocket-pool/smartnode/raw/master/shared/services/rocketpool/assets/install/scripts/restart-vc.sh -O /srv/rocketpool/restart-vc.sh

wget https://github.com/rocket-pool/smartnode/raw/master/shared/services/rocketpool/assets/install/scripts/stop-validator.sh -O /srv/rocketpool/stop-validator.sh

chmod +x /srv/rocketpool/restart-vc.sh

chmod +x /srv/rocketpool/stop-validator.sh

Maintenant, ouvrez ~/.profile avec votre éditeur de choix et ajoutez cette ligne à la fin :

alias rp="rocketpool -d /usr/local/bin/rocketpoold -c /srv/rocketpool"

Enregistrez-le, puis rechargez votre profil :

source ~/.profile

Cela vous permettra d'interagir avec la CLI de Rocket Pool avec la commande rp, ce qui est un raccourci pratique.

Créer les services

Ensuite, nous allons créer un service systemd pour le daemon du node Rocket Pool. C'est le service qui vérifiera automatiquement et réclamera les récompenses RPL après chaque checkpoint, et stakera les minipools une fois que vous les aurez créés via node deposit.

Nous allons également créer un service watchtower. Celui-ci sera utilisé si vous êtes membre de l'Oracle DAO, ou si vous souhaitez générer vos propres arbres d'intervalles de récompenses (discuté dans la section Réclamer les récompenses plus tard).

Node
Watchtower

Créez le service rp-node :

sudo nano /etc/systemd/system/rp-node.service

Contenu :

[Unit]
Description=rp-node
After=network.target

[Service]
Type=simple
User=rp
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/rocketpoold --settings /srv/rocketpool/user-settings.yml node

[Install]
WantedBy=multi-user.target

Créez un fichier journal pour le service, afin que vous puissiez surveiller sa sortie - cela remplacera le comportement de rocketpool service logs node :

nano /srv/rocketpool/node-log.sh

Contenu :

#!/bin/bash
journalctl -u rp-node -b -f

Enregistrez-le, puis rendez-le exécutable :

chmod +x /srv/rocketpool/node-log.sh

Maintenant, vous pouvez surveiller les logs du node en exécutant simplement :

sudo /srv/rocketpool/node-log.sh

Les services sont maintenant installés.

Configurer l'accès aux scripts sans mot de passe

L'étape suivante consiste à donner à l'utilisateur rp la capacité de redémarrer le client Validateur lorsque de nouvelles clés de validateur sont créées, et d'arrêter le client Validateur si une condition d'urgence est détectée.

Créez un nouveau fichier sudoers en utilisant visudo :

sudo visudo -f /etc/sudoers.d/rocketpool

Ajoutez-y les lignes suivantes :

Cmnd_Alias RP_RESTART = /usr/bin/systemctl restart <nom du service validateur>
Cmnd_Alias RP_STOP = /usr/bin/systemctl stop <nom du service validateur>
rp    ALL=(ALL) NOPASSWD: RP_RESTART, RP_STOP

<nom du service validateur> est le nom de votre service VC (par exemple lighthousevalidator)

Maintenant, modifiez /srv/rocketpool/restart-vc.sh :

  • Décommentez la ligne à la fin et changez-la en sudo systemctl restart <nom du service validateur>

Modifiez également /srv/rocketpool/stop-validator.sh :

  • Décommentez la ligne à la fin et changez-la en sudo systemctl stop <nom du service validateur>

Tout est prêt ! Le processus node peut maintenant redémarrer ou arrêter votre VC automatiquement selon les besoins.

Étape 3 : Configurer le Smartnode

Maintenant que tous vos services sont créés, il est temps de configurer la stack Smartnode.

Veuillez visiter le guide Configurer la stack Smartnode (mode Natif) et revenez ici lorsque vous aurez terminé.

Activer et exécuter les services

Avec tous les services installés, il est temps de :

  • Les activer pour qu'ils redémarrent automatiquement s'ils se cassent, et démarrent automatiquement lors d'un redémarrage
  • Les démarrer tous
sudo systemctl daemon-reload

sudo systemctl enable rp-node rp-watchtower

sudo systemctl start rp-node rp-watchtower

Configurer un portefeuille

Ensuite, créez un nouveau portefeuille de node ou récupérez un portefeuille existant. Veuillez suivre attentivement les instructions de la section Configurer un portefeuille du guide, puis revenez ici lorsque vous aurez terminé.

Une fois cela fait, utilisez les scripts de fichier journal de service pour vérifier qu'ils ont bien chargé votre nouveau portefeuille. Vous devriez également vérifier cela en utilisant la commande suivante :

rp wallet status

Si cela fonctionne correctement, cela devrait produire la sortie suivante :

Your Smartnode is currently using the Hoodi Test Network.

The node wallet is initialized.
Node account: <address>

Étape 4 : Mettre à jour la définition du service VC

Contrairement à une configuration de solo staking, Rocket Pool génère et gère automatiquement ses clés de validateur. Il y a quelques ajustements que vous devrez apporter au fichier de définition du service VC que vous venez de créer pour qu'il fonctionne correctement avec Rocket Pool, notamment :

  • Le Fee Recipient
  • Le répertoire de données ou de portefeuille du VC
  • Les répertoires de clés et de secrets du VC

Nous allons les couvrir étape par étape pour chaque client.

Configurer le fichier Fee Recipient

NOTE

Il est crucial que vous suiviez ces étapes - ne pas le faire et utiliser le mauvais fee recipient entraînera l'application de pénalités à vos validateurs et des déductions prises sur votre solde Beacon Chain !

Le fee recipient est l'argument que vous fournissez à votre client Validateur qui spécifie l'adresse sur la couche d'Exécution où vous voulez que vos frais prioritaires et récompenses MEV soient envoyés. Rocket Pool a deux adresses différentes pour le fee recipient :

  • Si vous êtes inscrit au Smoothing Pool, ce doit être l'adresse du Smoothing Pool
  • Si vous n'êtes pas inscrit au Smoothing Pool, ce doit être l'adresse Fee Distributor de votre node

Pour en savoir plus sur le Smoothing Pool et votre Fee Distributor, veuillez consulter la section Fee Distributors et le Smoothing Pool du guide.

Le service node de Rocket Pool le définira automatiquement pour vous en détectant lequel il doit être et en le définissant dans un fichier de configuration et en redémarrant votre service client Validateur pour prendre en compte le changement. Votre service client Validateur peut utiliser ce fichier de configuration automatiquement afin que vous n'ayez pas besoin de coder en dur le fee recipient.

Ouvrez le fichier de définition du service systemd que vous venez de créer pour votre client Validateur. Avant la ligne ExecStart, ajoutez cette ligne :

EnvironmentFile=/srv/rocketpool/data/validators/rp-fee-recipient-env.txt

Ensuite, modifiez votre argument fee recipient comme suit ; sélectionnez votre client de choix parmi les onglets ci-dessous :

Lighthouse
Nimbus
Prysm
Teku
Changez --suggested-fee-recipient address en --suggested-fee-recipient ${FEE_RECIPIENT}
NOTE

Si vous démarrez votre client Validateur avant les services de Rocket Pool, il peut générer une erreur car ce fichier n'existe pas encore. Ne vous inquiétez pas, ce fichier sera créé par Rocket Pool une fois que vous aurez initialisé et démarré ses services.

Définir les répertoires de données et de clés

Ensuite, vous devez indiquer au VC où stocker ses données et charger les clés de validateur que Rocket Pool génère. Cliquez sur le client que vous utilisez dans les onglets ci-dessous :

Lighthouse
Nimbus
Prysm
Teku

Créez les répertoires suivants et définissez leur propriétaire sur rp :

sudo mkdir -p /srv/rocketpool/data/validators/lighthouse/validators

sudo mkdir -p /srv/rocketpool/data/validators/lighthouse/secrets

sudo chown -R rp:rp /srv/rocketpool/data/validators/lighthouse

sudo chmod -R 775 /srv/rocketpool/data/validators/lighthouse

Maintenant, ajoutez ou modifiez les paramètres suivants dans le fichier de définition du service Lighthouse VC avec ces nouvelles valeurs :

--datadir /srv/rocketpool/data/validators/lighthouse

Assouplir umask

Par défaut, votre système viendra généralement avec une configuration umask qui supprimera le bit +w des permissions de groupe chaque fois que le daemon node crée un nouveau dossier. Ceci est problématique pour plusieurs clients de consensus, car ils écriront en fait des choses telles que des fichiers de verrouillage ou d'autres métadonnées dans les répertoires que le Smartnode crée lorsqu'il génère de nouvelles clés de validateur lors d'un dépôt de minipool.

Pour lutter contre cela et garantir que votre VC fonctionne correctement, veuillez assouplir vos paramètres umask. Par exemple, au lieu de 0022, vous devriez envisager de le définir sur 0002 pour l'utilisateur rp.

Chaque système est différent, veuillez donc consulter un guide qui couvre votre système d'exploitation pour apprendre comment faire cela.

WARNING

Cette étape est cruciale pour garantir que les tâches de staking et de validation automatiques sont gérées correctement. Si vous remarquez des problèmes de permissions dans les logs de votre VC après que votre minipool ait passé le contrôle de 12 heures et soit entré dans le statut staking, vous devrez probablement exécuter sudo chmod 775 sur le dossier contenant vos clés de validateur afin que votre service VC puisse écrire dans ce dossier.

Recharger le service VC

Avec ces modifications apportées, vous pouvez maintenant recharger et redémarrer le service VC en utilisant ce qui suit :

sudo systemctl daemon-reload

sudo systemctl restart <vc-service>

Si vous n'utilisez pas Prysm, veuillez surveiller attentivement les logs du VC pour vous assurer qu'il a démarré correctement et que les éléments suivants sont correctement définis :

  • Le fee recipient
  • Le chemin de données
  • Le chemin du portefeuille / clés / secrets

Vous pouvez vérifier cela avec, par exemple, ps aux | grep fee pour filtrer les processus en cours d'exécution afin de regarder le fee recipient que votre VC a utilisé. Il devrait être identique à celui défini dans /srv/rocketpool/data/validators/rp-fee-recipient-env.txt.

Si tous utilisent les valeurs correctes, alors félicitations ! Vous avez configuré avec succès votre node Rocket Pool et pouvez suivre les sections suivantes du guide pour apprendre à l'utiliser.

Prochaines étapes

Maintenant que vos clients sont installés, nous vous recommandons de jeter un coup d'œil aux suggestions de sécurité dans la section Sécuriser votre node ensuite. Comme vous exécutez une configuration native, vous avez probablement déjà fait certaines de ces choses ; néanmoins, cela ne fait pas de mal d'au moins l'explorer et de voir à quel point la posture de sécurité recommandée correspond à votre système.