You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

14 KiB

Installation and Upgrade of Dojo on Ubuntu 16

This procedure is written for the installation of MyDojo on a host machine running Ubuntu 16 but it should be easy to adapt it for Linux distributions running on a x86-64 architecture.

Table of Content

1/ Requirements

The main requirements for the host machine running MyDojo are:

  • Processor: x86-64
  • OS: Linux 64 bits
  • Disk Type: SSD (recommended)
  • Disk Size: 600GB (min)/ 1TB (recommended)
  • RAM: 2GB (min) / 4GB (recommended)

Additional Considerations

  • While MyDojo will work fine on a multipurpose computer, a dedicated host machine connected 24/7 to the network is recommended. MyDojo was primarily designed as a server always ready for use
  • The clock of the host machine MUST be set properly (required for Tor)

2/ Storage Locations

By default, MyDojo stores its code and data in 2 different locations:

  • MyDojo application code: source code of MyDojo + Dojo Shell Script + Configuration files

  • MyDojo and Docker data: persistent data required for a functional MyDojo (blockchain data, Dojo database, logs, Docker images)

By default, MyDojo and Docker data will be stored under /var/lib/docker directory but the directory can be modified (e.g.: all data stored on an dedicated disk).

3/ First Installation

The procedure described in this section will configure and install MyDojo with its own Indexer for fast rescans. See the Advanced Setups for more information about this module or for the additional installation of a Whirlpool client on your Dojo.

3.1/ Prepare Host System

First, we must prepare our host system for MyDojo by installing required operating system dependencies and configuring our linux system with privacy and security in mind.

3.1.1/ Install OS dependencies

> cd ~
> sudo apt-get update
> sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common unzip

3.1.2/ Install Docker & Docker-Compose

For an installation of Docker and Docker Compose with a different Linux distribution, please refer to the official Docker and Docker Compose documentations.

If Docker is already installed on the host machine remove old Docker versions installed on the computer

> sudo apt-get remove docker docker-engine docker.io containerd runc

Download Docker's official PGP key

> curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
> sudo apt-key fingerprint 0EBFCD88

Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

Install Docker

> sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
> sudo apt-get update
> sudo apt-get install docker-ce docker-ce-cli containerd.io

Test the installation of Docker

> sudo docker --version

This command should return the version of Docker if installation was successful.

Install Docker Compose

> sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
> sudo chmod +x /usr/local/bin/docker-compose

Test the installation of Docker Compose

> sudo docker-compose --version

This command should return the version of Docker Compose if installation was successful.

Create a user account for MyDojo

Creating a segregated user account for MyDojo is a good idea for security reasons.

3.1.3/ Create a dojo user

> sudo useradd -s /bin/bash -d /home/dojo -m -G sudo dojo
> sudo passwd dojo

Enter and confirm the password for the dojo user.

Add the user to the docker group

> sudo usermod -aG docker dojo

Restart Host System

> sudo shutdown -r now

Log back into the Host System with the dojo user and test the Docker installation

> docker run hello-world

This command should display a hello message if Docker can be run with the dojo user.

3.1.4/ Configure Docker data storage directory (optional)

This step should be applied if you don't want to store MyDojo and Docker data under the default /var/lib/docker directory (e.g.: all data will be stored on an external SSD).

Stop the Docker Service

> sudo systemctl stop docker

Create the directory that will store Docker data (replace /path/to/target/directory/ by the correct path).

> sudo mkdir /path/to/target/directory/

Temporarily switch to root and create the daemon.json file storing the path to your Docker direct (replace /path/to/target/directory/ by the correct path).

> sudo su - root
> sudo echo '{ "data-root": "/path/to/target/directory/" }' > /etc/docker/daemon.json
> exit

3.2/ Downloading MyDojo

Now that the Host System has been prepared, we will download the latest version of MyDojo source code and configure it before proceeding with install.

3.2.1/ Initialize the dojo app directory

We first create a directory for housing our MyDojo files. In this guide we are naming this directory dojo-app and it will be located in the home directory of the dojo user.

> mkdir ~/dojo-app

3.2.2/ Download latest MyDojo files

Download and unpack the source archive for the latest version of MyDojo and copy these files to the newly created dojo-app directory with the following commands.

> cd ~
> wget https://code.samourai.io/dojo/samourai-dojo/-/archive/master/samourai-dojo-master.zip
> unzip samourai-dojo-master.zip -d .
> cp -a samourai-dojo-master/. dojo-app/

Delete the source archive now that we have copied the files to our directory.

> rm -rf samourai-dojo-master
> rm samourai-dojo-master.zip

3.3/ Configuring MyDojo

Change the working directory to the MyDojo configuration directory.

> cd ~/dojo-app/docker/my-dojo/conf

Note:

You will be required to generate various random alphanumeric passwords to secure various aspects of your Dojo installation. You can generate these in any way you wish, but you may wish to use the following command in a terminal session to generate these passwords with sufficient entropy:

> cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1

3.3.1/ Bitcoin configuration

Edit the docker-bitcoind.conf.tpl file.

> nano docker-bitcoind.conf.tpl

Customize the content of the file

BITCOIND_RPC_USER=<provide_this_value>
BITCOIND_RPC_PASSWORD=<provide_this_value>

Note:

If your machine has a lot of RAM, it's recommended that you increase the value of BITCOIND_DB_CACHE (e.g 2048) for a faster Initial Block Download.

Save and exit the file with CTRL+X, Y and ENTER.

3.3.2/ Database configuration

Edit the docker-mysql.conf.tpl file.

> nano docker-mysql.conf.tpl

Customize the content of the file

MYSQL_ROOT_PASSWORD=<provide_this_value>
MYSQL_USER=<provide_this_value>
MYSQL_PASSWORD=<provide_this_value>

Save and exit the file with CTRL+X, Y and ENTER.

3.3.3/ NodeJS configuration

Edit the docker-node.conf.tpl file.

> nano docker-node.conf.tpl

Customize the content of the file

NODE_API_KEY=<provide_this_value>
NODE_ADMIN_KEY=<provide_this_value>
NODE_JWT_SECRET=<provide_this_value>
NODE_ACTIVE_INDEXER=local_indexer

Save and exit the file with CTRL+X, Y and ENTER.

3.3.4/ Indexer configuration

Edit the docker-indexer.conf.tpl file.

> nano docker-indexer.conf.tpl

Customize the content of the file

INDEXER_INSTALL=on

Save and exit the file with CTRL+X, Y and ENTER.

3.3.5/ Explorer configuration

Edit the docker-explorer.conf.tpl file.

> nano docker-explorer.conf.tpl

Customize the content of the file

EXPLORER_KEY=<provide_this_value>

Save and exit the file with CTRL+X, Y and ENTER.

3.6/ Execute the first installation of MyDojo

From this point on the install process is automatic. Launch the installation of MyDojo

> cd ~/dojo-app/docker/my-dojo
> ./dojo.sh install

Confirm the installation with Y and ENTER.

3.6.1/ Understanding the Automatic Install

At this point, your job is done. The Dojo Shell script and Docker are going to take over and a lot of things are going to happen automatically.

Building of MyDojo containers

First, the shell script is going to initialize a set of configuration files. Then Docker is going to initialize the dedicated networks and data volumes that will be used by MyDojo. At last, Docker is going to build the Docker containers composing MyDojo.

This latest operation may last from a dozen to a few tens of minutes, depending on the specs of the hardware. A lot of logs are displayed and you may be concerned that some of these logs (displayed in red) are the sign of a problem. Don't worry about this. Some of these logs are just informational or warnings. Just be aware that if a blocking error occurs, Docker will stop building the containers and you won't reach the next phase.

First launch of MyDojo

If all Docker containers have been successfully built, the Shell Script is going to launch MyDojo (equivalent of the dojo.sh start command) and display its logs.

Here you may be able to observe a few things in the logs:

  • The schema of the local database is initialized (done once during first installation)
  • The Tor container is connecting to the Tor network
  • Dojo application modules are started in the NodeJS container
  • The Bitcoin daemon is launched, establishes connections to remote full nodes and starts to download block headers.
  • The indexer is launched and waits for the completion of the Initial Blocks Download by the Bitcoin daemon.

Initial Blocks Download

When all blocks headers have been successfully downloaded and processed, the Bitcoin daemon is going to process its Initial Blocks Download (IBD). In parallel, the Tracker module of Dojo is going to process its own IBD thanks to data provided by the Bitcoin daemon.

This phase is going to last from 1 to several days, depending on the specs of the hardware. At this point, all you have to do is wait. The Bitcoin daemon is processing the IBD while the Tracker is importing block headers in parallel.

Note: You can exit the logs with CTRL+C. Don't worry, MyDojo is still running in background.

Address Indexing

When the Bitcoin daemon has completed its IBD, the Indexer will automatically start the indexation of all Bitcoin addresses. When the indexation is complete, it will compact the database.

These operations should last a few more hours, depending on the specs of the hardware.

Note: You may notice errors returned by the Block Explorer during all these operations. Don't worry. The Block Explorer should be available as soon as the Indexer has completed its tasks.

3.7/ Monitor Install Progress with the Maintenance Tool (DMT)

Retrieve the onion address of the DMT with the commands

> cd ~/dojo-app/docker/my-dojo
> ./dojo.sh onion

Open the DMT with the Tor browser and check the Status page.

If a green check is displayed for all modules and if the chaintip displayed for all modules match with the chaintip displayed by a third-party Block Explorer, then your Dojo is ready.

4/ Upgrade

The procedures described in this section will upgrade your Dojo to the most recent version or to a specific version of Dojo.

4.1/ Upgrade to latest version

This procedure allows to upgrade MyDojo to the latest version.

4.1.1/ Stop MyDojo

> cd ~/dojo-app/docker/my-dojo
> ./dojo.sh stop

4.1.2/ Update the code of MyDojo

Download the archive of latest version

> cd ~
> wget https://code.samourai.io/dojo/samourai-dojo/-/archive/master/samourai-dojo-master.zip

Uncompress the archive

> unzip samourai-dojo-master.zip -d .

Overwrite the dojo-app directory with the content of the archive

> cp -a samourai-dojo-master/. dojo-app/

4.1.3/ Update Configuration (optional)

Check the release notes of the new vesion for a list of new features that may require to tune the value of new configuration options.

If applicable, edit the templates files stored in ~/dojo-app/docker/my-dojo/conf/ and modify the values set for new configuration options.

4.1.4/ Start Upgrade

> cd ~/dojo-app/docker/my-dojo
> ./dojo.sh upgrade

Confirm that you want to upgrade MyDojo with Y and ENTER.

The shell script is going to rebuild the Docker containers. MyDojo will be automatically restarted after the containers have been rebuilt.

4.1.5/ Cleanup

> cd ~
> rm -rf samourai-dojo-master
> rm samourai-dojo-master.zip

4.2/ Upgrade to a specific version

This procedure allows to upgrade MyDojo to a specific version X.Y.Z

4.2.1/ Stop MyDojo

> cd ~/dojo-app/docker/my-dojo
> ./dojo.sh stop

4.2.2/ Update the code of MyDojo

Download the archive of version X.Y.Z

> cd ~
> wget https://code.samourai.io/dojo/samourai-dojo/-/archive/vX.Y.Z/samourai-dojo-vX.Y.Z.zip

Uncompress the archive

> unzip samourai-dojo-vX.Y.Z.zip -d .

Overwrite the dojo-app directory with the content of the archive

> cp -a samourai-dojo-vX.Y.Z/. dojo-app/

4.2.3/ Update Configuration (optional)

Check the release notes for a list of new features that may require to tune the value of new configuration options.

If applicable, edit the templates files stored in ~/dojo-app/docker/my-dojo/conf/ and modify the values set for new configuration options.

4.2.4/ Start Upgrade

> cd ~/dojo-app/docker/my-dojo
> ./dojo.sh upgrade

Confirm that you want to upgrade MyDojo with Y and ENTER.

The shell script is going to rebuild the Docker containers. MyDojo will be automatically restarted after the containers have been rebuilt.

4.2.5/ Cleanup

> cd ~
> rm -rf samourai-dojo-vX.Y.Z
> rm samourai-dojo-vX.Y.Z.zip