In a previous post I discussed the functions of full nodes and how the complexity of Bitcoin’s network makes it difficult to discern how many nodes are actually needed in order to meet demand. The jury is out on an exact minimum, but one thing is certain — more is better.
Do you want to help the Bitcoin network but don’t want to gamble a lot of money by buying mining hardware in the hopes that you will earn back your initial investment? You should consider running a full node! Full nodes help to serve requests from lightweight wallets and secure the network in different ways than mining.
If you want to run a full node, you’ll first have to decide if you want to host it locally on a physical computer that you own, or run it on a virtual server that you rent. To make this decision, ask yourself a few questions:
- Do you have a machine that is online 24/7 at your home on a broadband connection?
- Are you willing to devote a decent amount of your personal bandwidth and hard drive space to serving Bitcoin requests?
- Are you tech-savvy enough to set up QoS (Quality of Service) rules to prevent your node from causing performance issues with your regular Internet use?
- Are you willing to spend ~10 dollars per month to rent a Virtual Private Server?
If you answered “yes” to the first three questions, you should run a node on your home machine. NOTE: since I originally wrote this guide, a more comprehensive and up-to-date guide has been published here — I suggest that you use it instead of my guide.
Continuing with my old guide, here are the steps to set up a node:
- Download Bitcoin Core and install it. If you want to compile from source rather than running a precompiled binary:
* Linux build notes are here
* OSX build notes are here
* Windows build notes are here
- Run Bitcoin Core (either the graphical bitcoin-qt or the bitcoind daemon) Note that it will take several hours to sync the entire block chain depending upon your Internet connection and machine specs; this process will be fairly intensive on your machine due to the verifications being performed upon the data.
- Configure your home’s router (assuming that you have one.) It’s critical that you forward port 8333 on your router to the IP address of the computer that is running your node. If you don’t do this, you will not be contributing your bandwidth to the network and should not run the node. You can check that your port forwarding works using the “check node” tool on Bitnodes when your node is running. If you’re running a software firewall on the machine running the node, you’ll also want to ensure that you create a rule to open up port 8333.
- If you want to set up automatic monitoring of your node so that you will be alerted if it stops running, after using Bitnodes’ “check node” tool you can click on your node’s IP address to view its status page. At the bottom of the status page you can enter your email address to receive alerts when the node’s status changes.
- For your own convenience — to prevent your Bitcoin node from potentially saturating your home Internet connection — you may also wish to set throttling / QoS rules on your router or via software on the machine’s operating system. The procedure will vary from router to router and OS to OS; not all routers support it. If you’re running Linux, you can alternatively use this bash script to limit the outgoing bandwidth allowed through port 8333. Just change the LIMIT variable to your desired throttled speed.
- You’re done! Now you just want to keep the machine online and make sure that you upgrade your node by installing new releases of Bitcoin Core. If you’re interested in signing up to possibly receive bitcoin payouts for running a well connected node, you can check out the Bitnodes Incentive Program.
If you are not willing to run a node on your home machine / Internet connection but you are willing to pay to rent a machine, you can find instructions for setting up a cheap VPS on this Reddit post. Note that DigitalOcean’s $5 / month VPS will no longer suffice as the blockchain size is already over 20 GB. Also, you won’t be able to bootstrap the node unless you purchase a VPS with a least double the hard drive space of the current blockchain size since the bootstrapping process effectively makes a copy of the data.
Alternatively, if you’re familiar with Docker, this post outlines an easy way to deploy a Bitcoin node on AWS with Docker.
If you’re a node operator who wants to gain greater insight into what your node is doing, check out my Statoshi fork!