Table of Contents

Fabric (NVM-Docker)

The Hyperledger Fabric Composer environment requires a few prerequisites, that are listed hereunder:

Starting from a Debian 8(.7.1) template, we'll try to configure a suited environment following Fabric Composer's site recommendations.

Having experienced weird “permission denied” installation errors using the root user, we'll try to proceed to installation as sysadmin when possible.

NVM (Node.js Version Manager)

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-debian-8

Install NVM

> sudo apt-get install build-essential libssl-dev curl
> curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh -o install_nvm.sh
> bash install_nvm.sh
> export NVM_DIR="/home/sysadmin/.nvm"
> [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

Install Node.js

> nvm ls-remote
...
         v6.9.3   (LTS: Boron)
         v6.9.4   (LTS: Boron)
         v6.9.5   (LTS: Boron)
         v6.10.0  (Latest LTS: Boron)
         v7.0.0  
...

Since Fabric Composer requires Node.js 6.x, and doesn't support 7, let's go for v6.10.0:

> nvm install 6.10.0
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v6.10.0 (npm v3.10.10)
Creating default alias: default -> 6.10.0 (-> v6.10.0)

We are supposed to use npm 4.0.x, 3.10.10 was installed, let's upgrade it as explained on the npmjs.com website:

> npm show npm@* version
...
npm@4.0.3 '4.0.3'
npm@4.0.5 '4.0.5'
npm@4.1.0 '4.1.0'
...
> npm install -g npm@4.0.5

Docker

Docker Engine

From the Docker documentation:

Repository version

> sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
> curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
OK

> sudo nano /etc/apt/sources.list.d/docker.list
ADD
deb https://apt.dockerproject.org/repo debian-jessie main

> sudo apt-get update
> apt-cache madison docker-engine
...
 docker-engine | 1.13.0-0~debian-jessie | https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
docker-engine | 1.12.6-0~debian-jessie | https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
docker-engine | 1.12.5-0~debian-jessie | https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
...
> sudo apt-get install docker-engine=1.12.6-0~debian-jessie

Complementary actions

Now, as we do not want to automatically upgrade the docker-engine package when using apt-get upgrade, we'll put the package on hold:

> sudo apt-mark hold docker-engine

To remove the hold:

> sudo apt-mark unhold docker-engine

Start and Autostart Docker:

> sudo systemctl start docker
> sudo systemctl enable docker
Synchronizing state for docker.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d docker defaults
Executing /usr/sbin/update-rc.d docker enable

Docker status:

> systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled)
   Active: active (running) since Fri 2017-03-17 02:03:28 CET; 11min ago
     Docs: https://docs.docker.com
 Main PID: 10340 (dockerd)
   CGroup: /system.slice/docker.service
           ├─10340 /usr/bin/dockerd -H fd://
           └─10344 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 -...

Check Docker is functioning

> sudo docker run hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Docker Compose

From linuxable.com.
For a list of Docker-compose versions, see this GitHub page.

> su
> curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
> chmod +x /usr/local/bin/docker-compose
> docker-compose --version
docker-compose version 1.8.1, build 878cff1
> exit

GIT

> sudo apt-get install git-core

Fabric Components

Command line tools

> npm install -g composer-cli

There was a problem with this install command: hashtable blocked the process.
A suggested solution on the Fabric Chat:

So … the root cause of my installation issues with `node-gyp` was the self-signed certificate in the chain

`node-gyp` doesn't honour the `strict-ssl=false` setting in `.npmrc`

The workaround to get composer-cli to install was to run the following:
export NODE_TLS_REJECT_UNAUTHORIZED=0

before

npm install -g composer-cli

Clone and install the Sample Applications

> git clone https://github.com/fabric-composer/sample-applications.git
> cd sample-applications/packages/getting-started
> npm install

Had to run the npm-install command as root, otherwise couldn't connect to docker deamon:

docker pull hyperledger/fabric-baseimage:x86_64-0.1.0
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

This required to add the following in /root/.bashrc:

export NVM_DIR="/home/sysadmin/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

Also had to run a few commands manually before I got it running (root in /home/sysadmin/sample-applications/packages/getting-started):

> docker pull hyperledger/fabric-baseimage:x86_64-0.1.0
> scripts/download-hyperledger.sh
> scripts/start-hyperledger.sh
> npm run deployNetwork /home/sysadmin/sample-applications/packages/getting-started