Pavol Rusnak #Cypherpunk #FOSS #Bitcoin #AI

Let's build a Freedom Node

Recently, I decided to support some of the open-source distributed projects such as Tor, IPFS and Bitcoin. One way of supporting them would be to send some money as a donation, but because I am a hacker with a good Internet connection I decided to build a computer node that will directly contribute to their networks and make them bigger and more robust.

I call it a “Freedom Node”.

Hardware

I evaluated lot of options and ended up buying the following components from my local computer hardware supplier:

item model price
Barebone PC by Gigabyte GB-BXBT-1900 $139.99
8 GB RAM by Kingston KVR16LS11/8 $35.38
240 GB SSD by Crucial CT240BX200SSD1 $64.99

I have decided to go for a solid-state drive option, but you can replace the suggested hard drive with a cheaper rotating disk (option A) or even bigger more expensive solid-state disk (option B):

item model price
A) 750 GB HDD by Western Digital WD7500BPKX $58.99
B) 480 GB SSD by Crucial CT480BX200SSD1 $129.99

The cheapest option is around $235, while the most expensive is around $305.

And this is how it looks! Nice, isn’t it?

bxbt

It is really small and quiet and it fits anywhere in your appartment or office, so you will completely forget about it.

Software

Now for the software part. I am going to use CentOS, because I am used to RPM distributions, but the process should be similar if you use Debian or Ubuntu.

  • Let’s download CentOS from https://www.centos.org/download/ and copy the ISO to a USB flash drive.

  • Follow the installation instructions and install the system.

  • Add EPEL (Extra Packages) repository by running:

yum install epel-release
  • Add Ringing Liberty Bitcoin repository by running:
yum install https://linux.ringingliberty.com/bitcoin/el7/x86_64/bitcoin-release-2-1.noarch.rpm
  • Install Tor, Bitcoin and Go language:
yum install tor bitcoin-server golang

(If you want to use Bitcoin XT instead of Bitcoin Core just use bitcoinxt-server package instead of bitcoin-server in the line above.)

  • Edit the Tor configuration file /etc/tor/torrc and uncomment the following lines (the first line opens the relay port, the second one enables the directory service, the third one disables the exit node):
ORPort 9001
DirPort 9030
ExitPolicy reject *:*

Also fill in the details on lines with Nickname and ContactInfo.

If you are more adventurous you might skip uncommenting the ExitPolicy reject line, but I recommend reading something about running an Exit Node first.

  • Edit the Bitcoin configuration file /etc/bitcoin/bitcoin.conf and change RPC password to something random:
rpcuser=bitcoinrpc
rpcpassword=something_random_like_8aRuH7Dxa0NBegBWLVNTndF_but_longer
  • Add the following files to your ~/.bashrc file and relogin:
export GOPATH=$HOME/.go
  • Install IPFS and make a symlink to /usr/bin:
go get -u github.com/ipfs/go-ipfs/cmd/ipfs
ln -s /root/.go/bin/ipfs /usr/bin/ipfs
  • Initialize IPFS node:
ipfs init
  • Create IPFS systemd service file /usr/lib/systemd/system/ipfs.service and put the following contents in it:
[Unit]
Description=IPFS daemon
After=network.target

[Service]
ExecStart=/usr/bin/ipfs daemon
Restart=on-failure

[Install]
WantedBy=multiuser.target
  • Run and enable start at boot for all three services using the following commands:
systemctl enable bitcoin
systemctl start bitcoin

systemctl enable tor
systemctl start tor

systemctl enable ipfs
systemctl start ipfs
  • Enjoy and big THANK YOU for your important contribution to these networks!