Build & Run Your Own Bitcoin Node On A Raspberry Pi

In this project, we’re going to be looking at how to run your own personal Bitcoin node on a Raspberry Pi. By running your own node, you can skip using a third party and directly make transactions on the Bitcoin network, without any additional fees.

If you don’t know how Bitcoin works, it’s essentially a network of thousands of nodes like the one we’re going to be building in this video. Each one has its own full copy of the Bitcoin blockchain, which is a record of every transaction which has ever occurred on the network. These nodes then work together to verify the transactions and maintain the blockchain. So you’ll essentially have a record of every Bitcoin transaction stored on your node and you’ll be helping to keep the Bitcoin network decentralized.

This is different to mining Bitcoin, which is a really bad idea on a Raspberry Pi as it would take you a couple of hundred years to mine a single dollar. Unlike Bitcoin mining, running a node doesn’t require any expensive hardware and can be done on a $35 Raspberry Pi and an external hard drive.

We’re going to be running a software package called Umbrel on our Bitcoin node. It’s really easy to use and their website literally guides you through the installation process step by step. The best part is that it’s free and all of its source code is available on GitHub.

Umbrel Software

Here’s my video of the build, read on as I take you through the project step by step so that you can build your own node:

What You Need To Build Your Own Bitcoin Node

  • Raspberry Pi 4B (8GB used) – Buy Here
  • 32GB MicroSD Card (16GB Min) – Buy Here
  • Low Profile Ice Tower (Black version used) – Buy Here
  • 1TB M.2 NVME SSD – Buy Here
  • External NVME Case (Not the one I used, but similar) – Buy Here
  • 1TB External SSD (Alternative to above) – Buy Here
  • Raspberry Pi Power Supply – Buy Here
  • Ethernet Cable – Buy Here
  • 4 x 3mm Yellow LEDs – Buy Here
  • 4 x 150ohm Resistors – Buy Here
  • M3 Screws & Nuts – Buy Here

Banggood Alternatives

In addition to the above, you’ll need to 3D print some parts for your case. I used a Creality Ender 3 V2 for this project. I used a K40 Laser Cutter to engrave and cut out the case lid.

The above parts are affiliate links. By purchasing products through the above links, you’ll be helping to support this blog, with no additional cost to you.

Designing & Making The Case

I started out by designing a case for the Bitcoin Node using Fusion 360. I designed the case to house the Raspberry Pi with the low profile Ice Tower installed and the SSD alongside it. I chose to used an M.2 NVME drive because it’s a bit more compact than a typical 2.5″ external one. SSDs produce quite a bit of heat, so I added a second fan onto the front of the case to push air into the case, which will then be exhausted from the vents on the side.

Designing A Case in Fusion 360

Print your own case – get the 3D print and laser cutting files

Lastly, I designed a clear acrylic cover which I’m going to engrave a logo onto. I’m also going to install some yellow LEDs in the corners in to give the logo a gold glow while it’s running.

I enjoy designing and building my own cases for my Raspberry Pis, have a look at this mini desktop case I built to make my Pi look like a mini desktop computer.

3D Printing The Case

I 3D printed the case on my Ender 3, along with 4 legs and 4 corner clamps for the cover. The corner clamps are mainly there to stop the light from the LEDs from shining up and out of the case and keep it contained within the acrylic.

I printed the case in black PLA using an infill of 15%. The legs and corner clamps were printed solid using the same filament.

3D Printed Bitcoin Full Node Case

I then laser engraved and cut out the lid for the case from a sheet of 2mm clear acrylic. I designed the engraving and the cutout in Inkscape to the same dimensions as the sketch used in Fusion 360.

Laser Engraving The Case Lid

I engraved a mirror image of a Bitcoin logo into the back of the lid so that the top surface is still smooth, so it won’t trap dust and can easily be cleaned.

Peeling The Film Off The Cover of the Bitcoin Node

Assembling The Bitcoin Node

Now that we’ve got all of the components made up, let’s start assembling it.

First I’m going to install the legs, which are just held in place with an M3x8mm screw in each. In hindsight, it probably would have been easier to just glue these into place.

Screwing on the Legs

Next, let’s open up our Raspberry Pi. I used an 8GB version of the Raspberry Pi 4B, but you should be able to use the 2GB and 4GB versions as well.

Before I install the Pi in the case, I’m going to flash the SD card. I’ll do this using the method outlined on the Umbrel page. This involves downloading Balena Etcher and the Umbrel image and then flashing the image to the SD card.

Flashing Umbrel with Balena Etcher

Now that this is done, I’m going to put the SD card into the Pi and then assemble the Ice Tower as per the instruction booklet which came with it. Don’t add any of the brass standoffs yet, we’re going to use these in the next step.

Adding Legs to Ice Tower

To mount the Pi, we’re going to install one set of brass standoffs which came with the Ice Tower on the bottom of the case and hold the Pi in place with the second set. You’ll probably need to use a wrench or spanner to screw the standoffs into the base, they’ll be too tight to screw in with your fingers.

I missed a step here – I forgot to add the USB power cable through the slot near the USB cutout. You’ll see in the subsequent steps.

Installing Brass Standoffs

Next I’m going to add the cooling pad and install the Ice Tower on the CPU. The Ice Tower is held in place using some M2.5 screws which go into the brass standoffs. These also came with the Ice Tower.

Raspberry Pi Installed

Next, I’m going to install the second fan which came with the Ice Tower onto the front of the case. I pressed some M3 nuts into the pockets on the front and then secured the fan with some M3 screws. The fan should be mounted so that it pushes air into the case, although the airflow direction is not critical – it’ll work either way.

Install Fan onto Front of Case

Once this was done, I connected the wiring for the fans to the Pi’s GPIO pins.

Fan Wiring Connected To GPIO Pins

These just go onto two available 5V and GND pins near the end of the GPIO header.

GPIO-Pinout-Diagram-2

Now that the fans are done, we can install our SSD. As mentioned earlier, I’m using an M.2 NVME drive, so I needed a way to connect the drive to the Raspberry Pi. I bought a low profile USB C enclosure for it and I’m going to just be using the PCB inside it to mount the drive onto. We don’t need the rest of the enclosure for this project, the case will act as the new enclosure and we want to be able to get some airflow over the drive to keep it cool.

Putting SSD into Enclosure

I designed a cut-out in the case to mount the faceplate from the enclosure to hold it all in place.

Installing SSD into Case

It was at this stage that I noticed that I had designed a slot to run the power cable through and had forgotten to put it through the case before installing the Pi. I chose to put in a slot rather than add a large cutout to fit the connector through.

Forgotten Power Cable

So I had to remove the Pi to add the power cable and then re-install it.

Adding Power Cable To Case

I then made up a string of four 3mm yellow LEDs, one for each corner of the case. These are designed to fit into the holes I cut on the cover. I used a 150-ohm 1/4W current limiting resistor on each LED, then connected them in series and added some dupont connectors to the end to plug into the GPIO pins.

Soldering 3mm Yellow LEDs

I glued the LEDs into the cover with some clear epoxy. The top of the LEDs protrude a little from the surface of the cover.

LED String On Cover

I then plugged it in and closed it up using an M3 screw through each of the corner clamps. The corner clamps should align themselves as they go over the top of the protruding LEDs as well.

Screwing Top Cover On

Now that this is all done, the Bitcoin node is complete and ready to be powered up.

Powering Up the Bitcoin Node

Now that the Bitcoin node is assembled, lets plug in our cables and power it up. Umbrel says to allow the node 5 minutes to boot up before trying to access it.

Plugging In Cables

When I switched the node on for the first time, I found that the RGB lighting in the fan on the Ice Tower detracted from the yellow glow of the LEDs.

Top Cover of Bitcoin Node Illuminated, RGB Showing

I decided to replace the fan with another plain black fan which I had from another Ice Tower. You could probably also get away with just removing the fan on the Ice Tower altogether. The fan on the side of the case blows directly onto the heat sink as well.

Removing RGB Fan

This produced a much cleaner look. You can now only see the faint flashing LEDs on the Pi and the SSD under the cover.

Bitcoin Node on Raspberry Pi

Now let’s get back to Umbrel. You don’t need to connect a monitor to it to set up, once it’s booted up then you can access the dashboard by going to umbrel.local on any other computer or mobile device connected to the same network.

If you do plug in a monitor, you’ll be able to see some diagnostic information while it is booting up, but this is not necessary.

When you open up the dashboard you’re presented with a welcome screen and you’re then guided through the setup process.

Umbrella Welcome Screen

You’ll need to type in your name and choose a password. Then you’re asked to write down your seed words as a recovery mechanism if you forget your password. It’s quite important that you do this as there is no “I forgot my password” option when logging in. Lastly, you’ll need to accept a disclaimer.

You’ll then be taken to the main dashboard.

Umbrel Dashboard Running

Your node will begin downloading the Bitcoin blockchain. Depending on how fast or in my case, how slow your internet is, this could take a few hours or even a few days. At the time of making this video, the blockchain is around 327 gigabytes. Your node will also transfer a similar amount of data on a month to month basis, so you need to have a reasonably good internet service to maintain your Bitcoin node.

You’ll still be able to use your node while the blockchain is being downloaded, but you’ll have to wait to unlock the full functionality of your node.

You can also add apps and your wallets to your node to truly customise and get the most use out of it.

Let me know in the comments section if you do land up building your own node and what you think of this one.

Michael Klements
Hi, my name is Michael and I started this blog in 2016 to share my DIY journey with you. I love tinkering with electronics, making, fixing, and building - I'm always looking for new projects and exciting DIY ideas. If you do too, grab a cup of coffee and settle in, I'm happy to have you here.

17 COMMENTS

  1. Hi, I decided to start my first umbrel btc node few days ago, but I have troubles with the M.2 NVMe SSD used together with the orico externam M.2 NVMe enclosure (namely this one: https://www.aliexpress.com/item/4001297316228.html?spm=a2g0s.9042311.0.0.2ab54c4dSuID2a).
    First I had the ADATA SX8200 Pro which was not detected by RPi, then I tried Samsung EVO 970. This one is detected, but still umbrel is not started as the debug log shows some problem with “can’t read superblock on /dev/sda1” and due to this nothing is copied and configured on the M.2 NVMe SSD drive. So again, umbrel does not start.
    Please, would you know what can be the prolem and how to get it to work? Maybe some changes in config files etc.
    Thank you.

    • Hi Marek,
      I’ve also had some trouble in the past with finding an NVME drive and enclosure combination that will work with the Pi. I’m not really sure what the issue is, I just tried a couple of combinations until I found one which works. I assume that some of the boards in the enclosures use a chipset that is not compatible with the Pi as they seem to work fine on my Windows and Mac computers. There may be a workaround through a config file, but I’m not sure.

  2. Does this setup really work for mining Bitcoin? Did your Bitcoin node really work? People are saying this can’t work.

    • Running a Bitcoin node is entirely different to mining Bitcoin. It is not practical to mine Bitcoin on a Raspberry Pi, but it’s perfect for running a node. A node is just a means to transact on the blockchain without having to use a third-party provider.

    • Yes, you don’t have to use a case for the Pi to run the node. The case you’ve linked to will fit the Pi and heat sink, you’ll just need to use an external SSD or SSD enclosure.

    • Either your Pi isn’t booting up properly or there is a network issue between the Pi and the computer you’re trying to access it on. Try plugging a monitor into the Pi when booting up to see the progress and any errors which come up.

    • Nodes don’t make money, they enable you to save money by not having to pay third-party transactions fees when transacting on the blockchain. You’ll also be assisting in keeping the blockchain decentralized.

  3. Hello. May I know whether I could run the bitcoin full node based on your raspberry pi desktop design? I have noticed that it only has 1 fan instead of 2 fans, will it be too hot to run as bitcoin full node? Thanks in advance.

    • Yes you should be able to, you’ll just need to use an external HDD or SSD. It won’t need any additional cooling, one fan is fine for full CPU load on the Pi.

  4. Hi Michael

    Great video as always

    I am running Raspberry Pi OS Lite 32 bit and get the followijng error

    git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
    ot
    sudo git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git

    [email protected]:~ $ git clone https://github.com/Adafruit_Python_SSD1306,git
    Cloning into ‘Adafruit_Python_SSD1306,git’…
    remote: Not Found
    fatal: repository ‘https://github.com/Adafruit_Python_SSD1306,git/’ not found

    Checked on github and it says –

    DEPRECATED LIBRARY Adafruit Python SSD1306
    his library has been deprecated! We are leaving this up for historical and research purposes but archiving the repository.

    We are now only supporting the use of our CircuitPython libraries for use with Python.

    Check out this guide for info on using OLEDs with the CircuitPython library: https://learn.adafruit.com/monochrome-oled-breakouts/python-wiring

    • Hi Rav,
      You’ve use a , instead of a . at the end “,git” instead of “.git”
      The depreciated library message is just a note that they’re not updating it anymore. It still exists and works.

  5. Thanks Miichael, will correct that error.

    I have started again from scratch with Raspberry Pi OS Lite 32 Bit
    I am now getting the following –

    [email protected]:~ $ sudo pip3 install Adafruit_BBIO
    sudo: pip3: command not found

    • What operating system are you using? Pip3 is usually installed by default on Raspberry Pi OS – On a Debian system, you can also install python3 by sudo apt-get install python3 and pip3 by sudo apt-get install python3-pip.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest posts

Raspberry Pi 4 SSD Case With Stats Display

In this project, we're going to be taking my previous Raspberry Pi Desktop Case design and adapting it to accommodate an SSD underneath the...

How To Boot A Raspberry Pi 4 From An SSD

In this tutorial, we'll work through setting up a Raspberry Pi 4 to boot from a USB connected SSD or other USB storage media....

Mecanum Omnidirectional Robot Car using the Quantum Integration System

In this project, we’re going to be building a wireless robot car that uses mecanum wheels to enable omnidirectional movement. If you haven’t heard...

Related posts