Install bitcoind on Ubuntu - works

March 3, 2023

Looking into these Bitcoin Ordinals https://ordinals.com/ and I decided to try to install and sync a new bitcoin node. It has been a few years since I did this from scratch, so I was looking for some simple ways to install… maybe use snap or download some precompiled binaries and do some softlinks to /usr/local/bin? No, none of that worked for me. I wasted an hour.

All of the guiedes are all kind of busted IMHO - best to build from source code. This should work on most debian and ubuntu linux installs.

First, get all of the prerequesites installed. I found these hidden in github under the “Unix” build notes https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md

Do not run as ROOT - make sure you have a regular account with sudo ability. If you don’t know how to do that, look up visudo.

I simplified everything you will need into a single line to install with apt:

sudo apt-get install git build-essential autoconf libtool autotools-dev automake pkg-config bsdmainutils python3 libevent-dev libboost-dev libsqlite3-dev cpufrequtils libssl-dev cargo

Note: if you do not install libsqlite3-dev then your bitcoin node will likely configure and build with NO WALLET and you will get errors like this: method not found when running bitcoin-cli

Next clone the github for bitcoin and checkout version 24.0.1 so you can index ordinals correctly:

mkdir ~/src
git clone https://github.com/bitcoin/bitcoin.git ~/src/bitcoin
cd ~/src/bitcoin
git checkout v24.0.1

Next you will build - start the configuration.

./autogen.sh
./configure

Get the number of cpu cores your system has - you will need this for the next step.

CORES=`lscpu|grep "CPU(s)"|head -1|awk '{print $2}'`
echo $CORES

OPTIONAL - Set your CPU cores to performance mode, this will speed up the build and initial sync.

CPUS=`echo "$(($CORES-1))"` && i=0; while [ $i -le $CPUS ]; do cpufreq-set -c $i -g performance; i=$(($i+1));done

The more cores you use, the faster this will go - recommend using all of them, but if you need to do other things, you can specify the number of CPU cores to use here instead of “$CORES”:

make -j $CORES

Go get a coffee, come back and run the installer:

sudo make install

Check version installed.

bitcoind --version

Create bitcoin.conf file:

touch ~/.bitcoin/bitcoin.conf

Edit the bitcoin.conf file using nano ~/.bitcoin/bitcoin.conf and put in the following info - this is for 16GB of RAM, lower if you have less, my server never used more than 12GB of RAM in the cache while synchronizing:

txindex=1
dbcache=16384
debuglogfile=$HOME/.bitcoin/debug.log

run bitcoind

bitcoind -daemon

Next you can sync your node following this guide: fast sync bitcoin node. - or just try letting it run with these settings here on this page.

Tail the logs to watch it sync - progress=0.000601 –> this is a percentage based on total size of the chain where 1.000 = 100%.

tail -f $HOME/.bitcoin/debug.log | awk '{print $10}'

You can see what percent it is at based on storage size or check the block sync level using my script in this gist: https://gist.github.com/bensig/4793be2327b1d535a70046a759a5e696#file-check_bitcoind_sync-sh

Using this server, I was able to sync fully in 7 hours:

Intel(R) Xeon(R) E-2356G CPU @ 3.20GHz
64GB RAM
1TB INTEL NVMe SSDPE2KX010T8

Let's keep the internet safe and free? →→ Click!