Setup Trezor Blockbook (Viacoin)

Romano RNR
4 min readMay 21, 2019

--

Blockbook is an address or account balance backend (or blockchain indexer) for Trezor Wallet, developed by SatoshiLabs, which you can install and run on your computer. With Trezor Wallet installed and running as a local instance, you can be completely independent from connecting to the SatoshiLabs servers. It looks a lot like insight explorer.

This guide will show how to setup a Blockbook server on Debian for public usage.

Server

You can use a VPS on Vultr. It’s a great site and you can pay with either credit/debit card or bitcoin.

I would recommend the one with 4GB

After deploying, Let’s start with updating our Debian system

apt-get install update

Swap

The purpose of creating a swap is to provide disk storage to the kernel when RAM is under pressure. It allows for the kernel to move memory pages that are not likely to be accessed soon to disk, freeing memory. Our server has only 1GB RAM, it’s not a lot so that is why we need a swap for sure. The downside of swapping is that disks are slow. RAM is magnitudes faster. However using a swap can be the difference of your server crashing because it doesn’t have enough RAM or staying online.

Let’s create a Swap file. The fastest way is by using fallocate. We will use a 4GB swap (There’s no perfect number).

fallocate -l 4G /swapfile

We should adjust the permission on the swap file so that it is not readable by anone besides root. We can use chmod to lock down permissions.

chmod 600 /swapfile

Now the swap file is created, the system should format this file as a swap & enable it.

mkswap /swapfileswapon /swapfile

Now we have to make the swapfile permanent. So we still have it when the system reboots.

# echo “/swapfile swap swap sw 0 0” >> /etc/fstab

Swapiness

Now we can do some tweaking. Swapiness param determines how often the system swaps datta out of memory to the swap. This value is between 0 & 100% (The percentage of memory that will trigger the use of swap). Lets change this to 10.

sysctl vm.swappiness=10

and to make it pernament

echo “vm.swappiness = 10” >> /etc/sysctl.conf

Now it’s time to install all required deps

apt-get install build-essential libssl-dev libboost-all-dev libdb5.3 libdb5.3-dev libdb5.3++-dev libtool automake libevent-dev bsdmainutils git ntp make g++ gcc autoconf cpp ngrep iftop sysstat autotools-dev pkg-config libminiupnpc-dev libzmq3-dev apt-transport-https ca-certificates curl gnupg2 software-properties-common -y

Docker

Add this repository with the command

curl -s https://download.docker.com/linux/debian/gpg | apt-key add && add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" && apt-get update

Now to install docker

apt-get install docker-ce -y

Compile blockbook

Git clone blockbook, cd into it and make

git clone https://github.com/trezor/blockbook && cd blockbookmake all-viacoincd buildapt install ./blockbook-viacoin_0.3.1_amd64.deb ./backend-viacoin_0.16.3-satoshilabs-1_amd64.deb -ysystemctl start backend-viacoin
systemctl enable backend-viacoin

*apt-install blockbook-viacoin (versions can differ. Use tab or ls to know)

viacoin core will start to sync now. Meanwhile blockbook can be started.

systemctl start blockbook-viacoinsystemctl enable blockbook-viacoin

Haproxy

HAProxy, which stands for High Availability Proxy, is a popular open source software TCP/HTTP Load Balancer and proxying solution which can be run on Linux, Solaris, and FreeBSD. Its most common use is to improve the performance and reliability of a server environment by distributing the workload across multiple servers (e.g. web, application, database). It is used in many high-profile environments, including: GitHub, Imgur, Instagram, and Twitter.

https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-and-load-balancing-concepts

We will use Haproxy instead of Nginx since it’s a better load balancer and don’t need a build-in webserver like Nginx provides.

apt-get install haproxy

Edit

vim /etc/haproxy/haproxy.cfg

Now we need to append these lines to Haproxy (end of the file)

frontend haproxynode
bind *:80
default_backend backendnodes
backend backendnodes
server node1 127.0.0.1:9155 ssl verify none

Please not ports for other assets are not 9155. Check https://github.com/trezor/blockbook/blob/master/docs/ports.md

After that you can start & enable haproxy

systemctl start haproxy
systemctl enable haproxy

You can later setup more blockbook servers and add the nodes to the config file & restart haproxy.

It should balance the load between the servers and if 1 of them goes down, switch to another blockbook server.

Blockbook can now be viewed on blockbook.viacoin.org

Obviously you have to have your own domain for it. For SSL we use Cloudflare Flexible SSL.

blockbook.viacoin.org
blocks

A lot of this comes from the groestlcoin blockbook setup guide (their guide uses Nginx with certbot): https://groestlcoin.org/forum/index.php?topic=1036.0

--

--

Romano RNR

Derivatives trading, investing, cryptocurrency, stocks, forex, options & volatility - programmer & sysadmin