Those that know me, are aware of my interest in Bitcoin. I thought it was about time to run my own full Bitcoin node, which is now reachable on;

bitcoin2i4mexga4jsklakoauigyvu23flvvqubvruinpxrk4fxkmqyd.onion:8333

Bitcoin nodes are different from miners, but are just as critical for the network. Nodes are responsible for verifying the blocks the miners produce. Nodes are the gatekeepers of the network by enforcing the shared set of rules that make Bitcoin operate.

This post is intended to get you started as quickly as possible by sharing some personal tips and what I’ve ended up using in the final setup.

Let’s start off with the hardware;

  • Odroid HC4
    • Micro SD (buy a card with the highest IOPS for performance, personally went with the SANDISK 128 GB MICRO SDXC EXTREME U3 V30 A2)
    • Power adapter
  • Old 2TB Seagate HDD that was laying around

In terms of software I largely used an existing repository (which is awesome);

I did had some improvements and tweaks to e.g. support arm64 architecture, 4x indexing performance improvement by creative volume mounting and easier configuration of the different containers, which are still in a PR;

It took about 10 days to fully sync (450GB) over the Tor network.

For health checking (is my Bitcoin node running and operational over Tor?), I use;

It’s important to state that whilst the above mentioned repository has a default configuration with onlynet=onion, it’s recommended to leave it off if your threat model allows for it. Only using the Tor network makes you more susceptible to eclipse like attacks, as a result of the network isolation. By turning the option off, you still only serve your node on the Tor network - but you are connected to both the clearnet nodes as well as the tor nodes.

More information regarding the eclipse attack vector;

If you want a fancy onion v3 address starting with bitcoin, you can use;

Generation time highly depends on your CPU. Using my AMD Ryzen 9 5950X I was able to generate a new address (bitcoin - 7 letter prefix) every 6 minutes on average.