How to Set Up an Ethereum Node at Home — Full Guide

in

How to Set Up an Ethereum Node at Home — Full Guide

Who This Is For

This guide is for crypto enthusiasts who want to run their own Ethereum node from home for privacy, security, or to support the network without relying on third-party services.

💡
Ready to Trade with AI?
Join thousands trading smarter on Aivora — the AI-powered crypto exchange. Spot trading, futures, and AI-driven market predictions.
Open Free Account →

What You’ll Need

  • A computer with at least 2TB of SSD storage, 16GB RAM, and a quad-core processor (an old gaming PC or a dedicated mini PC works fine)
  • A fast, stable internet connection with at least 10 Mbps download speed and no data caps (sync can use 100-200GB+ monthly)
  • A static IP address or dynamic DNS setup for consistent peer discovery
  • Basic familiarity with the command line (terminal) and Linux (Ubuntu recommended)
  • Optional but helpful: an uninterruptible power supply (UPS) to avoid corruption during power outages

Step 1: Choose Your Client and Prepare Your Machine

Ethereum nodes run on a “client” — software that validates transactions and blocks. The two most popular execution layer clients are Geth (Go Ethereum) and Nethermind. Geth is the most battle-tested, with about 80% of the network using it. But Nethermind is lighter on RAM, making it a solid pick for home setups.

For the consensus layer (since the Merge), you’ll need a separate client like Prysm, Lighthouse, or Teku. Most people pair Geth with Prysm — it’s well-documented and stable. I’d recommend starting with Geth + Prysm. Install Ubuntu 22.04 LTS on your machine, update everything with sudo apt update && sudo apt upgrade, and make sure your firewall allows ports 30303 (TCP/UDP for execution) and 13000 (TCP/UDP for consensus).

And yes, you can run this on Windows, but Linux is way easier for long-term maintenance. So if you’re not already on Linux, set aside an hour to install Ubuntu.

Step 2: Install Geth (Execution Client)

Geth is the backbone of your node. Head to the official Geth download page and grab the latest stable build for Linux. Or use the command line:

sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt update
sudo apt install ethereum

Once installed, test it with geth version — you should see “Geth/v1.14.0” or similar. Next, create a dedicated directory for your blockchain data. I use /home/ethereum. Run geth --datadir /home/ethereum init genesis.json to initialize your node — but for mainnet, you can skip the genesis file and just sync from scratch.

A quick note: Geth defaults to “snap sync,” which downloads the latest state instead of replaying every block from day one. That’ll save you weeks of sync time. So don’t change the sync mode unless you really know what you’re doing.

Step 3: Install Prysm (Consensus Client)

Now for the beacon chain. Prysm is the most popular consensus client, and it’s easy to set up. Download the latest release from their GitHub — use the “prysm.sh” script for automatic updates:

curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh
chmod +x prysm.sh
./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --checkpoint-sync-url=https://beaconstate.info

The --checkpoint-sync-url flag is a lifesaver — it starts your beacon chain from a recent checkpoint instead of processing 2+ years of history. That cuts initial sync time from days to hours. Your execution and consensus clients need to talk to each other via the Engine API on port 8551. Both Geth and Prysm handle this automatically if you configure the JWT secret (a security token).

Create a JWT secret file: openssl rand -hex 32 | tr -d "n" > /home/ethereum/jwt.hex. Then start Geth with geth --datadir /home/ethereum --authrpc.jwtsecret /home/ethereum/jwt.hex. And Prysm with --jwt-secret=/home/ethereum/jwt.hex. They’ll handshake and start syncing together.

Step 4: Sync Your Node — Patience Required

Syncing an Ethereum node from scratch takes 12-48 hours with a fast SSD and good internet. Snap sync for the execution layer grabs the latest state, then backfills old blocks. The consensus layer syncs the beacon chain, which is around 500GB of data. Your total disk usage after sync will be roughly 1.5-2TB.

Monitor progress with geth attach and check eth.syncing. It’ll return “false” when you’re fully synced. For Prysm, use curl http://localhost:3500/eth/v1/node/syncing. Don’t panic if your node seems stuck at 99.9% — that’s the “state heal” phase, which can take a few hours.

A screenshot of a terminal showing Geth and Prysm syncing progress bars
A screenshot of a terminal showing Geth and Prysm syncing progress bars

And here’s a pro tip: set up a cron job to restart both clients daily. Nodes that run for weeks without restart can have memory leaks. A simple @daily systemctl restart geth prysm-beacon keeps things fresh.

Step 5: Verify Your Node Is Working

Once synced, your node is live and participating in the network. But how do you know it’s actually working? Check the peer count: Geth should show 50-100 peers, Prysm 60-80. Use geth attach --exec 'net.peerCount' and curl http://localhost:3500/eth/v1/node/peers.

Also, make sure you can query the latest block. Run geth attach --exec 'eth.blockNumber' and compare it to a block explorer like Etherscan. If it’s within a few blocks, you’re golden. Your node is now a full participant in the Ethereum network — validating transactions, storing the entire blockchain state, and helping decentralize the network.

You can even connect your MetaMask wallet to your local node. In MetaMask, add a custom RPC: http://localhost:8545. Now you’re not relying on Infura or Alchemy — every transaction you send is verified by your own hardware. That’s real self-sovereignty.

Step 6: Maintain and Secure Your Node

Running a node isn’t “set it and forget it.” You need to keep the software updated. Geth and Prysm release updates every few weeks — security patches, performance improvements, or consensus changes. Subscribe to the Ethereum Foundation’s blog or the client’s GitHub release feed. Upgrade with sudo apt upgrade for Geth, and re-run the Prysm script for the latest beacon chain build.

Security matters too. Don’t expose your node’s RPC ports (8545, 8551) to the public internet. Only allow localhost connections or use a VPN if you need remote access. Set up a firewall with ufw: sudo ufw allow 30303/tcp, sudo ufw allow 13000/tcp, and deny everything else. And always run your node as a non-root user — create a “ethereum” account with limited permissions.

For more on node security, check out Investopedia’s Ethereum overview for context on why decentralization matters. And if you’re curious about other node setups, read our AI Price Action Strategy for Ethereum Classic ETC Perps guide — staking requires a fully synced node.

Common Pitfalls

⚠️ Mistake: Running out of disk space mid-sync
Fix: Check df -h before starting. You need at least 2.5TB free — the chain grows ~100GB per year. Use an external SSD if your internal drive is too small. Don’t use HDDs — the sync will be 10x slower.

⚠️ Mistake: Forgetting to open firewall ports
Fix: Your node needs to talk to peers. Port 30303 (Geth) and 13000 (Prysm) must be open both TCP and UDP. Test with sudo netstat -tulpn | grep 30303. If you’re behind a carrier-grade NAT, consider using a VPS or IPv6.

⚠️ Mistake: Ignoring client updates
Fix: Ethereum upgrades like Dencun or Pectra require client upgrades. If you fall 3+ versions behind, your node will fork off the main chain. Set up automated update notifications via email or Telegram bot.

What Next?

Once your node is synced and stable, consider staking your ETH — you’re already running the hardware, so you’re halfway to becoming a validator and earning rewards.

🚀
Trade Smarter with AI
AI-powered crypto exchange — BTC, ETH, SOL & more
Start Trading →
BTC: ... ETH: ... SOL: ...