Introduction to Ethereum Node Setup
Ethereum's transition from Proof-of-Work (PoW) to Proof-of-Stake (PoS) requires running two client types: an execution client (formerly "Eth1") and a consensus client (formerly "Eth2"). This tutorial focuses on setting up a non-staking node using Geth (execution) and Lighthouse (consensus).
Key Components
Execution Clients
| Client | Language | OS Support | Networks | Sync Modes | Storage |
|---|---|---|---|---|---|
| Geth | Go | Linux, Windows, macOS | Mainnet, Testnets | Snapshot, Full | Archive/Pruned |
| Nethermind | C# | Linux, Windows, macOS | Mainnet, Testnets | Fast, Full | Archive/Pruned |
| Besu | Java | Linux, Windows, macOS | Mainnet, Testnets | Fast, Full | Archive/Pruned |
| Erigon | Go | Linux, Windows, macOS | Mainnet, Testnets | Full | Archive/Pruned |
Consensus Clients
| Client | Language | OS Support | Networks |
|---|---|---|---|
| Lighthouse | Rust | Linux, Windows, macOS | Beacon Chain, Testnets |
| Lodestar | TypeScript | Linux, Windows, macOS | Beacon Chain, Testnets |
| Nimbus | Nim | Linux, Windows, macOS | Beacon Chain, Testnets |
| Prysm | Go | Linux, Windows, macOS | Beacon Chain, Testnets |
| Teku | Java | Linux, Windows, macOS | Beacon Chain, Testnets |
👉 Why choose Geth + Lighthouse?
Hardware Requirements
Minimum Specifications
- OS: Linux/macOS/Windows
- CPU: 4+ cores
- RAM: 16GB+
- Bandwidth: 25+ MB/sec
- Storage: 1TB+ SSD (NVMe recommended)
Recommended Setup (Used in This Guide)
- OS: Ubuntu 22.04 LTS
- CPU: 16 cores
- RAM: 128GB DDR5
- Bandwidth: 1 Gbit/sec
- Storage: 2×1.92TB NVMe SSDs
Server Configuration
1. Update System Packages
sudo apt update && sudo apt dist-upgrade -y2. Install Essential Tools
sudo apt install wget git screen liblz4-tool vim unzip -yInstalling Execution Client (Geth)
Steps:
Navigate to
/ethdirectory:mkdir /eth && cd /ethDownload and install Geth:
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.12.0-e501b3b0.tar.gz tar -zxvf geth-linux-amd64-1.12.0-e501b3b0.tar.gz mv geth-linux-amd64-1.12.0-e501b3b0 geth rm *.tar.gzVerify installation:
/eth/geth/geth version
Installing Consensus Client (Lighthouse)
Steps:
Download Lighthouse:
wget https://github.com/sigp/lighthouse/releases/download/v4.2.0/lighthouse-v4.2.0-x86_64-unknown-linux-gnu.tar.gz tar -zxvf lighthouse-v4.2.0-x86_64-unknown-linux-gnu.tar.gz rm *.tar.gzAdd to PATH:
echo 'export PATH=/eth:/eth/geth:$PATH' >> /etc/profile source /etc/profileVerify installation:
lighthouse --version
Launching the Node
1. Generate JWT Secret
sudo mkdir -p /secrets
openssl rand -hex 32 | tr -d "\n" | sudo tee /secrets/jwt.hex2. Start Geth (Execution Client)
nohup geth --cache 32768 --datadir /data/ethereum \
--http --http.addr 0.0.0.0 --http.api "eth,net,engine,web3" \
--authrpc.jwtsecret /secrets/jwt.hex --maxpeers 2000 &3. Start Lighthouse (Consensus Client)
nohup lighthouse bn --network mainnet \
--execution-endpoint http://127.0.0.1:8551 \
--execution-jwt /secrets/jwt.hex \
--checkpoint-sync-url https://sync-mainnet.beaconcha.in \
--http &Monitoring Node Sync
Check Sync Status
geth attach http://127.0.0.1:8545
> eth.syncing # Returns false when synced
> eth.blockNumber # Current block height
> net.peerCount # Connected peersFAQ
Q1: How long does syncing take?
A: Typically 3-4 hours with fast SSD storage.
Q2: Why choose Geth + Lighthouse?
A: Geth is the most battle-tested execution client, while Lighthouse offers Rust-based efficiency.
Q3: Can I run this on a Raspberry Pi?
A: Not recommended—requires x86_64 architecture and significant resources.
Q4: How to reduce storage usage?
A: Use --prune flag in Geth (prunes historical state data).