Fabric (NVM-Docker)
The Hyperledger Fabric Composer environment requires a few prerequisites, that are listed hereunder:
- Docker Engine: Version 1.12.x
- Docker-Compose: Version 1.8.x
- Node: 6.x (note version 7 is not supported)
- npm: 4.0.x
- git: 2.9.x
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)
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