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