Node Setup Guide
Complete guide to running Ethereum nodes. Choose your execution and consensus clients, configure your hardware, and get synced with the network.
Post-Merge Architecture
Since The Merge (September 2022), Ethereum requires two clients running together:
Execution Client
Handles transactions, smart contracts, and state. Connects to other execution clients via the devp2p network. Examples: Geth, Erigon, Reth.
Consensus Client
Implements Proof of Stake, handles block proposals and attestations. Connects to beacon chain network. Examples: Prysm, Lighthouse, Teku.
Both clients communicate via the Engine API using JWT authentication. You must run BOTH clients for a functioning node.
Hardware Requirements
| Spec | Minimum | Recommended | Notes |
|---|---|---|---|
| CPU | 4 cores | 8+ cores | Higher clock speed helps sync |
| RAM | 16 GB | 32 GB | 64 GB for archive nodes |
| Storage | 1 TB SSD | 2 TB NVMe | NVMe strongly recommended |
| Network | 25 Mbps | 100+ Mbps | Low latency important |
Execution Clients
Geth
GoThe original and most widely used Ethereum execution client. Written in Go.
Install
sudo add-apt-repository -y ppa:ethereum/ethereum && sudo apt-get update && sudo apt-get install gethRun
geth --http --http.addr 0.0.0.0 --http.api eth,net,web3 \ --authrpc.addr localhost --authrpc.port 8551 \ --authrpc.jwtsecret /path/to/jwt.hex
Erigon
GoEfficiency-focused implementation with archive node capabilities. Optimized for disk I/O.
Install
git clone https://github.com/ledgerwatch/erigon && cd erigon && make erigonRun
erigon --chain mainnet --datadir /data/erigon \ --http --http.addr 0.0.0.0 --http.api eth,erigon,web3 \ --authrpc.jwtsecret /path/to/jwt.hex
Reth
RustHigh-performance Rust implementation focused on speed and efficiency. Rising star in the ecosystem.
Install
cargo install rethRun
reth node --datadir /data/reth \ --http --http.addr 0.0.0.0 --http.api eth,net,web3 \ --authrpc.jwtsecret /path/to/jwt.hex
Nethermind
C#Enterprise-grade .NET implementation with advanced features and monitoring.
Install
sudo apt-get install nethermindRun
nethermind --config mainnet \ --JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0 \ --JsonRpc.JwtSecretFile /path/to/jwt.hex
Consensus Clients
Most popular consensus client. Go implementation by Prysmatic Labs.
Rust-based consensus client known for reliability and performance.
Enterprise-grade Java implementation by ConsenSys.
JWT Authentication Setup
Execution and consensus clients communicate using the Engine API, which requires JWT authentication. Create a shared secret:
openssl rand -hex 32 | sudo tee /var/lib/ethereum/jwt.hexPass this file path to both clients using the --authrpc.jwtsecret(or equivalent) flag.
Docker Compose Setup
version: "3.8"
services:
geth:
image: ethereum/client-go:stable
container_name: geth
restart: unless-stopped
ports:
- "8545:8545" # HTTP RPC
- "8546:8546" # WebSocket
- "30303:30303" # P2P
volumes:
- geth-data:/root/.ethereum
- ./jwt.hex:/jwt.hex:ro
command:
- --http
- --http.addr=0.0.0.0
- --http.api=eth,net,web3,txpool
- --http.vhosts=*
- --http.corsdomain=*
- --ws
- --ws.addr=0.0.0.0
- --ws.api=eth,net,web3
- --authrpc.addr=0.0.0.0
- --authrpc.vhosts=*
- --authrpc.jwtsecret=/jwt.hex
prysm:
image: gcr.io/prysmaticlabs/prysm/beacon-chain:stable
container_name: prysm
restart: unless-stopped
depends_on:
- geth
ports:
- "4000:4000" # gRPC
- "3500:3500" # HTTP
volumes:
- prysm-data:/data
- ./jwt.hex:/jwt.hex:ro
command:
- --accept-terms-of-use
- --execution-endpoint=http://geth:8551
- --jwt-secret=/jwt.hex
- --checkpoint-sync-url=https://beaconstate.ethstaker.cc
- --genesis-beacon-api-url=https://beaconstate.ethstaker.cc
volumes:
geth-data:
prysm-data:Checkpoint Sync
Syncs beacon chain in minutes instead of days
Auto Restart
unless-stopped policy keeps nodes running
Persistent Data
Named volumes preserve blockchain data
Common Issues
Node not syncing?
- Check that ports 30303 (TCP/UDP) are open for P2P
- Verify JWT secret is identical for both clients
- Ensure execution client is fully synced before starting consensus client
Slow sync speed?
- Use NVMe SSD instead of SATA SSD or HDD
- Increase system RAM to 32GB or more
- Use checkpoint sync for consensus client