OffshoreVps
Tutoriels18 oct. 20268 min de lecturePar l’équipe OffshoreVps

Comment faire tourner un nœud Ethereum (Geth et Lighthouse) sur un VPS

Exécuter une paire client d’exécution et client de consensus Ethereum sous Linux : secret JWT, unités systemd, synchronisation par checkpoint, ports et matériel nécessaire à un nœud complet.

Depuis The Merge, un nœud Ethereum se compose de deux programmes qui travaillent ensemble : un client d'exécution qui gère les transactions et l'état, et un client de consensus qui suit la chaîne en proof-of-stake. Ce guide exécute Geth (exécution) et Lighthouse (consensus) sur un VPS Linux. La même architecture fonctionne avec d'autres paires de clients.

Fenêtre de terminal sur un VPS montrant les commandes utilisées pour faire tourner un nœud Ethereum avec Geth et Lighthouse, à commencer par « sudo adduser --system --group --no-create-home g »
Le type de commandes que vous exécuterez sur votre serveur dans ce guide.

Ce dont a besoin un nœud complet

  • Disque. C'est la principale limite. Un nœud complet nécessite aujourd'hui environ 1 à 2 To de stockage NVMe rapide, et cela augmente. Un nœud d'archive en demande bien davantage. Consultez la documentation actuelle des clients pour connaître les tailles à jour avant d'acheter.
  • RAM. 16 Go est un minimum confortable. 32 Go aident pendant la synchronisation et sous charge RPC.
  • CPU. 4 cœurs ou plus. La vitesse du stockage compte davantage que la fréquence d'horloge.
  • Réseau. Trafic illimité sur un port rapide. Les nœuds déplacent beaucoup de données.

En raison de la taille du disque, la plupart des gens utilisent un serveur dédié pour Ethereum. Consultez l'hébergement de nœud Ethereum pour des offres dimensionnées.

Étape 1 : préparer le serveur

Utilisez une installation Ubuntu LTS vierge et appliquez les étapes de comment sécuriser un nouveau VPS. Créez un utilisateur pour chaque client afin que rien ne s'exécute en root.

sudo adduser --system --group --no-create-home geth
sudo adduser --system --group --no-create-home lighthouse
sudo mkdir -p /var/lib/geth /var/lib/lighthouse /etc/ethereum
sudo chown geth:geth /var/lib/geth
sudo chown lighthouse:lighthouse /var/lib/lighthouse

Étape 2 : créer un secret JWT partagé

Les deux clients s'authentifient mutuellement avec un fichier de secret partagé.

openssl rand -hex 32 | sudo tee /etc/ethereum/jwt.hex
sudo chmod 640 /etc/ethereum/jwt.hex
sudo chgrp geth /etc/ethereum/jwt.hex
sudo usermod -aG geth lighthouse
Les étapes de ce guide dans l’ordre : 1. Ce dont a besoin un nœud complet ; 2. préparer le serveur ; 3. créer un secret JWT partagé ; 4. installer et lancer Lighthouse ; 5. démarrer et surveiller la synchronisation ; 6. Pare-feu et ports
Les étapes de ce guide, dans l’ordre.

Étape 3 : installer et exécuter Geth

Téléchargez la version stable depuis la page officielle de téléchargement de Geth ou utilisez le dépôt de paquets du projet, et vérifiez-la. Créez ensuite /etc/systemd/system/geth.service :

[Unit]
Description=Geth
After=network-online.target

[Service]
User=geth
ExecStart=/usr/local/bin/geth \
  --mainnet \
  --datadir /var/lib/geth \
  --authrpc.jwtsecret /etc/ethereum/jwt.hex \
  --http --http.addr 127.0.0.1 --http.api eth,net,web3
Restart=on-failure
TimeoutStopSec=180

[Install]
WantedBy=multi-user.target

Lier HTTP à 127.0.0.1 garde le RPC privé. Ne l'exposez jamais directement à Internet.

Étape 4 : installer et exécuter Lighthouse

[Unit]
Description=Lighthouse beacon node
After=geth.service

[Service]
User=lighthouse
ExecStart=/usr/local/bin/lighthouse bn \
  --network mainnet \
  --datadir /var/lib/lighthouse \
  --execution-endpoint http://127.0.0.1:8551 \
  --execution-jwt /etc/ethereum/jwt.hex \
  --checkpoint-sync-url https://mainnet.checkpoint.sigp.io
Restart=on-failure

[Install]
WantedBy=multi-user.target

La synchronisation par checkpoint permet au client de consensus de démarrer à partir d'un état récent de confiance, de sorte qu'il est prêt en quelques minutes au lieu de plusieurs jours. Vérifiez l'URL du checkpoint dans la documentation du client avant de vous y fier.

Étape 5 : démarrer et suivre la synchronisation

sudo systemctl enable --now geth lighthouse
journalctl -u geth -f
curl -s -X POST -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8545

false dans le résultat signifie que le nœud est entièrement synchronisé. La première synchronisation peut prendre de nombreuses heures à quelques jours selon la vitesse du disque.

Pare-feu et ports

Autorisez les ports pair-à-pair (30303 TCP/UDP pour Geth, 9000 TCP/UDP pour Lighthouse par défaut) afin d'obtenir un bon nombre de pairs. Gardez 8545, 8551 et 5052 fermés à l'Internet public.