Running an Ethereum Node: Part 1

January 02, 2025

I’ve been interested in running an Ethereum node for a while now. Not because I don’t trust RPC companies (eg. Infura) or to make money, but because I want to break the abstraction of what exactly being part of a distributed system means. With proof of stake, you can also already earn money (albeit less and with some trust assumptions) from staking your ETH with an existing validator pool.

Also, I was going to be home for at least a month so thought it’d be a good time to do it. In a series of posts, I’ll share my experience.

Reasons to run a node

  • Learning (break those damn abstractions)!
  • Make money!
    • A common question is how much can I make? It will be more than simply staking, but I haven’t figured out how to accurately calculate this. There is this tool: rocketpooltool.com
  • Privacy
    • When you use a public RPC, you send your IP address + wallet address
  • Censorship resistance
    • A public RPC could block your transaction
  • Strengthen the network
    • More nodes means the network is more resilient to failures
  • Trust
    • When you use a public RPC, you rely on them giving you the correct information eg. your wallet balance
    • With your own copy of the chain, you can verify for yourself
  • Voting
    • In the event of a fork, you can directly vote which fork to go with based on what chain your node continues to build on

Do you need ETH to run a node? No! But this also means you won’t make any money. To make money, you need to stake ETH. All other reasons to run a node apply.

Do I need specialized hardware? No! You can run an Ethereum node on your laptop, desktop PC, or even a Raspberry Pi. All major operating systems are supported - Linux, MacOS, Windows.

Okay. You’re convinced you want to run a node even if not to become a validator and earn money, but just to join the network.

0. Pre-req

You can provision hardware in the cloud (or buy preconfigured machines) and use that to run a node, but I decided to use my own hardware. The cloud and preconfigured machines would only add more abstractions and I saw the hardware as an investment I could use for other things in the future as well (eg home file server).

To run a node at home, you need to consider the following:

  • Physical space
    • A desktop PC (personal computer) doesn’t take up that much space nor is that loud
    • I’ve kept mine in the basement where its also relatively colder
  • Network
    • You need an ethernet connection, and your wifi plan should support unlimited data
    • We were already on the unlimited data plan from our internet provider
  • Power
    • If you’re going to be a validator, you want stable power, ie few outages
    • You should also consider the added cost of keeping a PC running 24/7
    • Where I live, there are very few outages, and the electricity costs also marginal
    • Solar is also popular here which greatly reduces the cost

1. Acquire Necessary Hardware

Here are the recommended specifications from the Ethereum Foundation:

  • Fast CPU with 4+ cores
  • 16 GB+ RAM
  • Fast SSD with 2+TB
  • 25+ MBit/s bandwidth

RocketPool also has an excellent guide on picking the hardware and even examples of what other node operators are using. This was my main point of reference.

We’re essentially building a PC here, so here are the main parts we need to get:

  • CPU
  • Memory
  • Storage

At first I considered getting a NUC for the size convenience but decided against it, because if any of the parts inside fail, you have to replace the entire thing.

We don’t need a good video card (ie GPU) as nothing is computationally expensive here. It’s more just disk intensive as a lot of reads and writes are happening.

I ended up going with the following configuration from a local computer store, Memory Express:

I ended up buying this during the Boxing Week sales, so the total came out to ~$1,200 CAD with taxes and all.

2. Setup OS

I had to wait a couple of business days for them to assemble it and then picked it up!

Connected a monitor with HDMI, a keyboard and mouse with USB, and turned it on! Since no OS had been installed, only the BIOS loaded and I made sure everything was showing properly.

BIOS

I was planning on using this hardware to solely run a node, so ended up going with Linux. Specifically chose Ubuntu Server because I was familiar with Ubuntu from past work, it has a good community, and didn’t need a GUI.

  1. Downloaded the Ubuntu Server ISO image from the official website: ubuntu.com/download/server
    • Latest version was 24.04.1 LTS, which was a 2.6 GB ISO file.
  2. Created a bootable USB flash drive with balenaEtcher
  3. Plugged in the USB into the PC and rebooted it
  4. Followed the on-screen Ubuntu installation instructions
    • I didn't partition the SSD as I wanted to use it fully for the node
    • I didn't encrypt the drive as I wouldn't be storing sensitive data on this machine and wasnt going to be travelling with it
      • The computational overhead for encryption is not high, but there is an extra step in SSH to ensure the PC is unlocked in case of a restart

Once the installation was complete, I got the prompt to unplug the USB and restart it. It loaded and I was able to login. I also tested connecting via SSH from my personal laptop and it worked! Hooray!

At this point I wanted to move the PC to the basement but had a couple of things left to do so that I never have to be physically present at the PC.

  • When the PC restarts, I want it to have the same IP
    • Reserved an IP from my router's admin page under the DHCP Reservation section under LAN settings
    • I want to be able to SSH into the PC from outside of my house too, but will set that up later
  • If an outage happens, I want the PC to auto restart and load the OS automatically
    • Updated my BIOS/UEFI Power Settings:
      • Restore after AC Power Loss: [Power On]
    • Edited the GRUB menu in Linux to auto select Ubuntu on startup:
      • sudo vi /etc/default/grub
      • Set GRUB_DEFAULT=0
      • Set GRUB_TIMEOUT=2
      • Save and exit
      • Run sudo update-grub
      • Reboot the PC

That’s it for this part! Below is the PC in its final resting place.

PC

Resources: