Banano Wiki


Building the Bananode Docker image[]

Install Docker[]

The docker-ce distribution is recommended. Test with your install with docker run hello-world.

Obtain Image[]


a) Pull the built image from the Docker Hub Registry

docker run -d -p 7072:7072 -v ~:/root bananocoin/banano.


b) Building the image from source.

The following commands should build a banano docker image from source:

git clone
cd banano/docker
node/ live   # choose a network - live, beta or test
Run the image[]

Banano uses distinct ports from Nano, and RPC is enabled by default.

docker run -d -p 7072:7072 -v ~:/root bananocoin/banano


a) -p is proxying localhost tcp/7072 to tcp/7072 on the container.

b) -v is mounting your home directory as /root/ on the container.

After a few seconds, test the node with the following two commands:

curl -d '{"action": "version"}' localhost:7072

curl -d '{"action": "block_count"}' localhost:7072

And check if peer count has went up on the official monitor.

4) Logs[]

The bananode process rolls logs, and they are not piped to the containers stdout. This means they are not available to view via docker log. To examine the nodes logs e.g.

$ docker ps
CONTAINER ID        IMAGE                   COMMAND                 CREATED             STATUS              PORTS                    NAMES
5368f4c7fe63        bananocoin/banano:v18   "/bin/bash /"   44 minutes ago      Up 44 minutes>7072/tcp   elated_jennings
$ docker exec -it 5368f4c7fe63 bash
root@5368f4c7fe63:/# cd /root/BananoData/log/
root@5368f4c7fe63:~/BananoData/log# ll
total 56
drwx------ 2 root root  4096 Mar 22 20:33 ./
drwx------ 3 root root  4096 Mar 22 20:20 ../
-rw------- 1 root root  9715 Mar 22 20:32 log_2019-03-22_20-20-29.0.log
-rw------- 1 root root 31711 Mar 22 21:18 log_2019-03-22_20-33-50.1.log

Running a Docker Bananode[]

Install docker[]

The easiest way to run a node is by using docker images. First install docker-ce.

Running the Bananode image.[]

Once docker is installed for your platform (check via docker run hello-world), to run a bananode, simply run:

docker run --restart=unless-stopped -d \
  -p 7071:7071 \
  -p [::1]:7072:7072 \
  -p [::1]:7074:7074 \
  -v ~:/root \
7071 -> TCP port
7072 -> RPC port
7074 -> Websocket port

You can then check your node as would normally, e.g. using curl.

Stopping the bananode[]

Run docker ps to list running containers. Use the CONTAINER_ID to shut down the bananode, e.g.

sudo docker stop 19d845535dc1

$ docker run --restart=unless-stopped -d -p 7071:7071 -p [::1]:7072:7072 -p [::1]:7074:7074 -v ~:/root bananocoin/banano
Unable to find image 'bananocoin/banano:latest' locally
latest: Pulling from bananocoin/banano
22dc81ace0ea: Pull complete
1a8b3c87dba3: Pull complete
91390a1c435a: Pull complete
07844b14977e: Pull complete
b78396653dae: Pull complete
9a359b47c2fa: Pull complete
082ef437d263: Pull complete
b808a9115179: Pull complete
34e529540e96: Pull complete
Digest: sha256:d713883a740222d6a5e5c473f34b474c985670768c5a7004c99573e6659d9475
Status: Downloaded newer image for bananocoin/banano:latest

Building a Bananode from sources[]

Ubuntu 16.04, 18.04, and 20.04, Debian 8, 9, 10, and 11[]

Recommended Hardware[]
  • Run the node in a datacenter. Most SSD VPS packages will work. (DigitalOcean, Vultr, Hetzner, OVH, etc.)
  • 1 modern CPU core minimum. 2 or more is recommended especially for voting nodes and principal nodes.
  • 10GB Free disk space (Blockchain database is ~5.2GB in size at the moment)
  • 2 GB system RAM or more. 4 GB or more is recommended especially for voting nodes and principal nodes
Installing dependencies[]
sudo apt-get update && sudo apt-get upgrade   
sudo apt-get install -y git cmake make g++ curl wget python-dev
Cloning the Bananode's git repository[]
git clone --recursive banano_build   
Installing precompiled Boost (Ubuntu 20.04, Debian 10, Debian 11)[]

If your distribution includes boost 1.67 or newer (e.g. Ubuntu 20.04) you can skip the next section and simply run:

sudo apt install -y libboost-all-dev
Building static Boost (Ubuntu 16.04, Ubuntu 18.04, Debian 8, Debian 9)[]

To automate this step, you can use sudo banano_build/util/build_prep/ --m (the optional m 'minimum' flag reduces compilation time but may break Boost for other use cases than building the bananode) which does essentially this:

tar xzvf boost_1_69_0.tar.gz   
cd boost_1_69_0   
./ --with-libraries=filesystem,iostreams,log,program_options,thread   
./b2 --prefix=/usr/local/boost link=static install   
cd ..
Building bananode[]
cd banano_build   

git submodule update --init --force --recursive

cmake -DBOOST_ROOT=/usr/local/boost/ -G "Unix Makefiles"   
make bananode   

Optional: You can also add custom cmake flags like -DACTIVE_NETWORK=nano_test_network if you want to run a private testnet.

To copy the binaries into the parent folder and see if they are working, you can use cp bananode ../bananode && cd .. && ./bananode --diagnostics This will also create the /root/BananoData folder that will contain all specific data. If you want to use a different folder, you can add a custom --data_path /root/BananoData parameter each time you run bananode.

To start the node daemon in the background, use nohup ./bananode --daemon &, but beforehand you might want to edit the config.json in BananoData/config.json to "rpc_enable": "true", in order to accept RPC calls. You can also change the default RPC port, and enable critical commands with "enable_control": "true", if you want to use the node's wallets. If you do this, make sure that you specify the host that is allowed to access the RPC interface in the "address" field. Use IPv6 notation for this (e.g. ::1 for localhost, or ::ffff: for a remote host), to avoid problems.

RPC commands are explained in NANO's wiki. Only use the 'raw' unit when sending commands to the Bananode. Detailed implementation guides will be released shortly.

If a build fails, delete these temporary files before you try again

rm -rf CmakeCache.txt
rm -rf CMakeFiles
CentOS 7[]

You need to install a custom repository or this will fail with c++: error: unrecognized command line option ‘-std=c++14’

sudo yum -y check-update   
sudo yum -y install git curl wget bzip2 python-devel cmake

sudo yum -y install centos-release-scl
sudo yum -y install devtoolset-7
scl enable devtoolset-7 bash

sudo yum install -y
sudo yum install -y cryptopp cryptopp-devel

Tools that are included in the above package: gcc gcc-c++ libstdc++-static make

Compiling on low-end VPS[]

You'll need either 2GB Ram for a successful compile, or a generous swap file:

sudo fallocate -l 2G /swapfile

sudo chmod 600 /swapfile

sudo mkswap /swapfile

sudo swapon /swapfile
Check block count[]

./bananode --debug_block_count

git clone
cd banano
sh ci/
git submodule update --init --recursive
cmake -DBOOST_ROOT=/usr/local/boost/ -G "Unix Makefiles"
./bananode --daemon

To shorten boost build time, you can add --m after, but you may break boost for other use cases then.

Data will be stored in ~/Library/Banano

External links[]


Ledger snapshot for bootrstapping nodes