Since Ethereum's transition to proof-of-stake, running a full node requires two separate pieces of software working together: an execution client and a consensus client. This guide covers setting up Geth (execution) paired with a consensus client on a VPS.
Why Two Clients Are Needed
The execution client (Geth) handles transaction processing and the EVM; the consensus client handles proof-of-stake consensus and block validation — they communicate with each other to keep your node fully synced and validating correctly.
Prerequisites
- Ubuntu 22.04/24.04 VPS: 4+ vCPU, 16 GB+ RAM
- At least 2 TB SSD storage (Ethereum's state is substantial and continues growing)
Step 1 — Install Geth (Execution Client)
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt update
sudo apt install ethereum -y
Step 2 — Generate a JWT Secret (Required for Client Communication)
openssl rand -hex 32 > /etc/jwt.hex
Both the execution and consensus clients need this shared secret to authenticate their communication with each other.
Step 3 — Start Geth
geth --syncmode snap --authrpc.jwtsecret /etc/jwt.hex
snap sync mode is generally faster for initial synchronization than full archival sync.
Step 4 — Install a Consensus Client (Example: Lighthouse)
curl -LO https://github.com/sigp/lighthouse/releases/latest/download/lighthouse-*-x86_64-unknown-linux-gnu.tar.gz
tar xzf lighthouse-*.tar.gz
sudo mv lighthouse /usr/local/bin/
Step 5 — Start the Consensus Client
lighthouse bn --network mainnet --execution-endpoint http://localhost:8551 --execution-jwt /etc/jwt.hex --checkpoint-sync-url https://mainnet.checkpoint.sigp.io
Using a checkpoint sync URL significantly speeds up initial consensus client sync compared to syncing from genesis.
Step 6 — Monitor Sync Progress
curl http://localhost:5052/eth/v1/node/syncing
Running Both Clients as systemd Services
For production use, wrap both processes in systemd services (see How to Manage Services with systemd and systemctl) so they start automatically and restart on failure, rather than running as manual foreground processes.
Storage Growth Planning
Ethereum's chain data grows continuously and substantially — monitor disk usage regularly and plan for storage expansion over time; see Blockchain Node Storage Requirements and Growth Planning.
Alternative Client Combinations
Geth can be paired with other consensus clients (Prysm, Teku, Nimbus) instead of Lighthouse — client diversity across the network is actually encouraged for resilience; choose based on your own preference and documentation quality for your setup.
Common Errors
Consensus client can't reach the execution client — verify both clients reference the exact same JWT secret file, and that the execution endpoint URL/port matches Geth's actual authrpc configuration.
Sync stalls or is extremely slow — verify sufficient disk I/O performance (SSD required) and stable network connectivity; Ethereum sync is demanding on both.
Continue Reading
- VPS Requirements for Running a Blockchain Node
- How to Secure a Cryptocurrency Node on a VPS
- Blockchain Node Storage Requirements and Growth Planning
Browse more articles in Cryptocurrency & Blockchain Node Hosting.