How to Set Up an Ethereum Node: A Complete Step-by-Step Guide

·

Running your own Ethereum (ETH) node empowers you with direct access to the blockchain, enhances network decentralization, and allows you to interact with smart contracts and dApps without relying on third-party services. Since Ethereum's transition to Proof of Stake (PoS), operating a full node requires both an execution client and a consensus client. This guide walks you through setting up a fully functional Ethereum node using Geth and Lighthouse, optimized for performance and reliability.

Whether you're a developer, blockchain enthusiast, or validator-in-training, this tutorial covers everything from hardware requirements to synchronization verification—no staking required.


Why Run an Ethereum Node?

Operating a node strengthens the Ethereum ecosystem by increasing redundancy, security, and censorship resistance. With your own node:

Core keywords naturally integrated: Ethereum node setup, run Ethereum node, Geth and Lighthouse, ETH full node, Ethereum execution client, consensus client configuration, node synchronization, blockchain infrastructure.


System Requirements for Running an Ethereum Node

To ensure smooth operation, meet or exceed these minimum specifications:

💡 This guide uses Ubuntu 22.04.2 LTS with 16-core CPU, 128 GB DDR5 ECC RAM, dual 1.92 TB NVMe SSDs, and 1 Gbps bandwidth in Germany for optimal performance.

👉 Discover how running a node can improve your blockchain development workflow.

While cloud providers like AWS, Google Cloud, or dedicated servers work well, prioritize low-latency networking and sustained disk I/O performance.


Step 1: Server Environment Setup

Begin by updating your system packages.

Update System Packages

For Ubuntu:

sudo apt update && sudo apt dist-upgrade

For CentOS (if used):

yum -y upgrade
⚠️ If apt fails, use apt-get instead.

Install Essential Tools

Install necessary utilities for downloading, compiling, and managing processes:

sudo apt install wget git screen gcc automake autoconf libtool make unzip liblz4-tool aria2 vim

Explanation of key tools:


Step 2: Install the Execution Client – Geth

The execution client handles transaction processing and state execution. We’ll use Geth (Go Ethereum).

Create Directory Structure

cd /
sudo mkdir -p /eth/kuaizhao
cd /eth

We’ll store binaries in /eth and snapshot data in /eth/kuaizhao.

Download and Extract Geth

Visit geth.ethereum.org/downloads or download directly:

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
rm -rf geth-linux-amd64-1.12.0-e501b3b0.tar.gz
mv geth-linux-amd64-1.12.0-e501b3b0 geth

Ensure the binary is executable:

chmod +x geth

Step 3: Install the Consensus Client – Lighthouse

Lighthouse is a Rust-based consensus client that manages PoS duties like block proposal and attestation.

Download and Extract Lighthouse

cd /eth
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 -rf lighthouse-v4.2.0-x86_64-unknown-linux-gnu.tar.gz
chmod +x lighthouse

Step 4: Configure Environment Variables

Add Geth and Lighthouse to your system PATH for easy command access.

Edit /etc/profile:

sudo nano /etc/profile

Append these lines at the end:

export PATH=/eth:$PATH
export PATH=/eth/geth:$PATH

Apply changes:

source /etc/profile

Verify installation:

geth version
lighthouse --version

You should see version outputs confirming successful setup.


Step 5: Generate JWT Secret for Engine Authentication

The execution and consensus layers communicate via the Engine API, secured with a JWT token.

Create the secret:

sudo mkdir -p /secrets
openssl rand -hex 32 | tr -d "\n" | sudo tee /secrets/jwt.hex

This file (/secrets/jwt.hex) will be referenced by both clients.


Step 6: Launch the Execution Client (Geth)

Start Geth with flags optimized for fast sync and external connectivity:

geth \
  --cache 32768 \
  --datadir /data/ethereum \
  --http \
  --http.addr 0.0.0.0 \
  --http.api "eth,net,engine,web3" \
  --ws \
  --ws.addr 0.0.0.0 \
  --ws.api "eth,net,engine,web3" \
  --txlookuplimit 0 \
  --rpc.gascap 0 \
  --rpc.txfeecap 0 \
  --authrpc.addr 0.0.0.0 \
  --authrpc.port 8551 \
  --authrpc.vhosts "*" \
  --authrpc.jwtsecret /secrets/jwt.hex \
  --rpc.allow-unprotected-txs \
  --maxpeers 2000

🔍 Use screen or nohup to keep the process running after SSH disconnects:

screen -S geth-node
# Run the above command inside the screen session

By default, Geth uses snapshot sync—fast and sufficient for most users.

👉 Learn how node operators gain deeper insights into Ethereum's real-time activity.


Step 7: Launch the Consensus Client (Lighthouse)

Now start the beacon node:

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 \
  --disable-deposit-contract-sync \
  --http

Key parameters explained:

Checkpoint sync sources: https://eth-clients.github.io/checkpoint-sync-endpoints/

👉 Explore advanced configurations for high-performance node operation.


Step 8: Monitor Node Synchronization

Attach to Geth’s JavaScript console to check sync status:

geth attach http://127.0.0.1:8545

Or via IPC:

geth attach /data/ethereum/geth.ipc

Run these commands:

eth.syncing        // Returns false when synced; shows progress otherwise
net.peerCount      // Number of connected peers
eth.blockNumber    // Current block height

Sample output during sync:

{
  "currentBlock": 14290861,
  "highestBlock": 14297354,
  "startingBlock": 14270385
}

Once eth.syncing returns false, your node is fully synchronized.

🕒 Initial sync typically takes 3–6 hours with fast hardware and good bandwidth.

Check logs if blockNumber shows zero temporarily—it may take time before catching up.


Frequently Asked Questions (FAQ)

Q: Do I need to stake ETH to run a node?

No. This setup runs a full node for data access and development purposes only—no staking required.

Q: Can I use other client combinations?

Yes! Popular alternatives include Nethermind + Teku or Besu + Prysm. Just ensure compatibility between execution and consensus layers.

Q: What if my sync gets stuck?

Restart the clients, verify disk space (df -h), and confirm network connectivity. Use checkpoint sync to resume quickly.

Q: Is it safe to expose HTTP/RPC endpoints?

Only expose APIs internally or behind a firewall. Avoid public exposure unless reverse-proxied securely.

Q: How much storage will the node use?

As of 2025, expect 800 GB–1.2 TB depending on pruning settings. Archive nodes require significantly more space.

Q: Can I run this on a home server?

Technically yes, but residential internet often has upload limits and dynamic IPs, which can hinder peer connections. A VPS is recommended for reliability.


With your Ethereum node now active, you’re part of the decentralized backbone of Web3. Maintain regular updates to both clients to stay secure and compatible with network upgrades.