====== 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 [[https://fabric-composer.github.io/installing/manual_prerequisites.html|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 [[https://docs.npmjs.com/getting-started/installing-node|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 [[https://docs.docker.com/engine/installation/linux/debian/#uninstall-old-versions|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 [[https://www.linuxbabe.com/linux-server/install-docker-on-debian-8-jessie-server|linuxable.com]].\\ For a list of Docker-compose versions, see [[https://github.com/docker/compose/releases|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