OffshoreVps
Anleitungen18 Okt. 20268 Min. LesezeitVon dem OffshoreVps-Team

So betreiben Sie einen Ethereum-Node (Geth und Lighthouse) auf einem VPS

Ein Ethereum-Execution- und Consensus-Client-Paar unter Linux betreiben: JWT-Secret, systemd-Units, Checkpoint-Sync, Ports und welche Hardware ein Full Node braucht.

Seit The Merge besteht ein Ethereum-Node aus zwei zusammenarbeitenden Programmen: einem Execution Client, der Transaktionen und den State verwaltet, und einem Consensus Client, der der Proof-of-Stake-Chain folgt. Diese Anleitung betreibt Geth (Execution) und Lighthouse (Consensus) auf einem Linux-VPS. Dieselbe Struktur funktioniert auch mit anderen Client-Paaren.

Terminalfenster auf einem VPS mit den Befehlen zum Betrieb eines Ethereum-Nodes mit Geth und Lighthouse, beginnend mit „sudo adduser --system --group --no-create-home g“
Die Art von Befehlen, die Sie in dieser Anleitung auf Ihrem Server ausführen.

Was ein Full Node benötigt

  • Datenträger. Das ist die wichtigste Grenze. Ein Full Node benötigt heute etwa 1 bis 2 TB schnellen NVMe-Speicher, und der Bedarf wächst. Ein Archive Node braucht weit mehr. Prüfen Sie vor dem Kauf die aktuelle Client-Dokumentation auf aktuelle Größenangaben.
  • RAM. 16 GB sind ein komfortables Minimum. 32 GB helfen bei der Synchronisierung und unter RPC-Last.
  • CPU. 4 oder mehr Kerne. Die Speichergeschwindigkeit ist wichtiger als die Taktfrequenz.
  • Netzwerk. Unbegrenzter Traffic an einem schnellen Port. Nodes bewegen viele Daten.

Wegen der Datenträgergröße nutzen die meisten Menschen für Ethereum einen dedizierten Server. Passende Tarife finden Sie unter Ethereum-Node-Hosting.

Schritt 1: Den Server vorbereiten

Verwenden Sie eine frische Ubuntu-LTS-Installation und wenden Sie die Schritte aus So sichern Sie einen neuen VPS an. Legen Sie für jeden Client eigene Benutzer an, damit nichts als root läuft.

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

Schritt 2: Ein gemeinsames JWT-Secret erstellen

Die beiden Clients authentifizieren sich gegenseitig mit einer gemeinsamen Secret-Datei.

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
Die Schritte dieser Anleitung in der Reihenfolge: 1. Was ein Full Node braucht; 2. Den Server vorbereiten; 3. Ein gemeinsames JWT-Secret erzeugen; 4. Lighthouse installieren und starten; 5. Synchronisierung starten und beobachten; 6. Firewall und Ports
Die Schritte dieser Anleitung in der Reihenfolge.

Schritt 3: Geth installieren und ausführen

Laden Sie die stabile Version von der offiziellen Geth-Download-Seite herunter oder nutzen Sie das Paket-Repository des Projekts, und prüfen Sie sie. Erstellen Sie dann /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

Wenn Sie HTTP an 127.0.0.1 binden, bleibt der RPC privat. Machen Sie ihn niemals direkt im Internet erreichbar.

Schritt 4: Lighthouse installieren und ausführen

[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

Mit Checkpoint Sync kann der Consensus Client von einem aktuellen vertrauenswürdigen State starten und ist so in Minuten statt Tagen bereit. Prüfen Sie die Checkpoint-URL anhand der Client-Dokumentation, bevor Sie sich darauf verlassen.

Schritt 5: Starten und die Synchronisierung beobachten

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 im Ergebnis bedeutet, dass der Node vollständig synchronisiert ist. Die erste Synchronisierung kann je nach Datenträgergeschwindigkeit viele Stunden bis einige Tage dauern.

Firewall und Ports

Erlauben Sie die Peer-to-Peer-Ports (standardmäßig 30303 TCP/UDP für Geth, 9000 TCP/UDP für Lighthouse), damit Sie gute Peer-Zahlen erreichen. Halten Sie 8545, 8551 und 5052 für das öffentliche Internet geschlossen.