Instalar o Hyperledger Fabric no Ubuntu — Parte 1

Marison Souza
Trubr
Published in
6 min readJan 22, 2018

Vamos aprender a instalar o Hyperledger Fabric 1.0 passo a passo em um servidor Ubuntu 64bits. Você pode usar o VirtualBox para emular uma imagem do Ubuntu ou usar algum serviço como o AWS.

- Não utilizar root para instalação. Utilize sempre um usuário com permissão “sudo” mas nunca use o “root”.
— As URL’s das versões do Go, docker, etc estão funcionando na data de escrita desse artigo, em 22/01/2018. Ao longo do tempo talvez elas precisem ser atualizadas.

Update 27/01/2018: Com o lançamento do Hyperledger Fabric 1.1 talvez alguns comandos ou instruções não façam sentido ou nem sejam necessários. Se você usa o 1.0 e quer migrar para o 1.1, segue o guia no link abaixo.
http://hyperledger-fabric.readthedocs.io/en/v1.1.0-alpha/upgrade_to_one_point_one.html

Pré-requisitos

Se você for utilizar o AWS escolha a opção “c3.large” durante a criação da instância ou “m3.large” se for para uso mais moderado. Se usar as versões “t” o desempenho pode não ser adequado.

Primeiro vamos atualizar o sistema operacional para a última versão e instalar alguns softwares básicos necessários para os próximos passos.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install curl
sudo apt-get install libtool
sudo apt-get install libltdl-dev
sudo apt-get install wget
sudo apt-get install python-pip
sudo apt-get install make

Instalação do GO

O GO precisa ser instalado para que possamos compilar o hyperledger fabric. Importante ter todas as variáveis de ambiente configuradas corretamente pois elas são utilizadas, exatamente com estes nomes, pelos scripts de configuração do Fabric. Reforçando, não use ‘root’.

cd $HOME
mkdir $HOME/gopath
wget
https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz
tar -xvzf go1.9.2.linux-amd64.tar.gz
rm go1.9.2.linux-amd64.tar.gz
export GOPATH=$HOME/gopath
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
mkdir -p $GOPATH/src/github.com/hyperledger/
mkdir -p $GOPATH/src/github.com/trubr/

Vamos editar o arquivo do perfil do seu usuário para que as variáveis sejam criadas sempre que você logar, senão você precisará fazer o export das variáveis manualmente a cada login.

vi ~/.bashrc
#Inserir ao final
#GO VARIABLES
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin
#END GO VARIABLES

source ~/.bashrc

Ao final desse passo você já deve conseguir executar o comando “go version” para conferir a versão do GO no servidor. Se não funcionar, revise se as variáveis estão corretamente definidas. A saída deverá ser algo como:

‘go version go1.9.2 linux/amd64’

Instalação do Docker e do Node.JS

Vamos instalar o docker e o node.js agora.

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-key adv — keyserver hkp://p80.pool.sks-keyservers.net:80 — recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-add-repository ‘deb
https://apt.dockerproject.org/repo ubuntu-xenial main’
sudo apt-get update
apt-cache policy docker-engine
sudo apt-get install -y docker-engine
sudo systemctl status docker
sudo service docker start
sudo systemctl enable docker

Existem várias formas de instalar o docker dependendo da sua distribuição. Você pode por exemplo simplesmente baixar o arquivo “deb” e executar
‘sudo dpkg -i docker-ce_xx.xx~ubuntu_amd64.deb’, basta procurar o arquivo deb correspondente no repositório.

Ao final dessa etapa você já deve estar com o docker em execução. Ainda não temos nada da blockchain instalado. Vamos agora criar um usuário docker e incluir o nosso usuário atual no mesmo grupo com permissão de execução do docker, assim você não precisará usar o usuário do docker para as operações.

sudo usermod -aG docker $(whoami)
sudo gpasswd -a $USER docker

Agora vamos instalar o docker-compose. Com ele podemos gerenciar a execução de várias instâncias do docker usando arquivos YAML.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository “deb [arch=amd64]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
sudo pip install docker-compose
sudo chmod a+x /usr/local/bin/docker-compose

Nessa etapa você já deve conseguir executar o comando ‘docker version’ conforme a imagem abaixo.

Comando ‘docker version’ esperado

Para garantir ainda que o docker está pronto você pode executar a imagem ‘hello-world’ com o comando ‘docker run hello-world’. O docker deve baixar do repositório a imagem do hello-world e exibir o retorno de execução bem sucedida igual à imagem abaixo.

Comando docker run hello-world

Você deve conseguir executar também o comando ‘docker-compose -v’ para verificar a versão do docker-compose.

Se aparecer um erro de permissão considere reiniciar a sua instância do ubuntu com “sudo shutdown -r now” pois você deve conseguir executar o comando ‘docker version’ com o seu usuário de instalação, sem necessidade do ‘root’. Se após a reinicialização você ainda não conseguir executar ‘docker version’ ou o ‘docker run hello-world’ com sucesso, não siga adiante e revise a mensagem de erro e as etapas anteriores.

Dica: Se você não é familiarizado com docker, recomendo assistir esta série de 5 vídeos do canal ‘LinuxTips’, em português e muito bem explicado.

Instalação do Hyperledger Fabric

Agora efetivamente vamos instalar o Fabric. Como existem várias formas de instalação, softwares que ajudam, scripts diferentes pela rede, sugiro você salvar uma imagem do ubuntu no formato atual para que não tenha que repetir os passos anteriores caso queira testar novas formas de instalação do Fabric.

Dica: Note que não estamos mais usando ‘sudo’ nos comando abaixo. A instalação é feita com o seu usuário mesmo.

Primeiro vamos até o diretório que criamos no início e vamos baixar o fabric do github.

cd $GOPATH/src/github.com/hyperledger/
git clone
https://github.com/hyperledger/fabric.git

Opcional: Se você precisar usar alguma versão específica do Fabric utilize o comando “git reset” — Por exemplo:
git reset — hard 5fb31ddd24d6441b0d499b9bb211632800044512

Com o comando acima ele irá voltar à versão para o fabric v1.0.2 caso contrário ele irá utilizar a última versão do ‘master’ do github, o que pode ser indesejado dependendo da sua necessidade.

Agora vamos compilar o fabric e garantir que ele esteja executando corretamente no servidor.

cd fabric
make release-all
export PATH=$PATH:$GOPATH/src/github.com/hyperledger/fabric/build/bin/
Adicione isso no ./bashrc

Dica: O comando acima faz o build de todos os componentes. Prefiro assim mas você pode compilar um a um e ir testando, como ‘make configtxgen’, ‘make cryptogen’ etc…
make configtxgen cryptogen

O comando acima pode demorar vários minutos, dependendo da configuração da sua máquina. Aproveite e tome um café ou almoce.

Esperando terminar o comando make release-all

Quando terminar até o momento você ocupou 2.5Gb de espaço em disco.

Agora vamos baixar a parte pesada do fabric que são as imagens do docker de cada componente do hyperledger. Além de demorar (mais café) um pouco você precisará de pelo menos mais 3.5Gb de espaço em disco.

make docker

Ao final do comando acima você já estará com todos os componentes do fabric instalados em seu servidor no docker container. Para conferir execute o comando :

docker images

Você deve encontrar um resultado parecido com este abaixo. Se tudo funcionou corretamente então o fabric está pronto para uso.

Na parte 2 deste tutorial vamos mostrar como realizar a configuração inicial de uma business network no Fabric, desenvolvimento e deploy de chaincodes, entre outros aspectos.

Até a próxima ;)

--

--

Marison Souza
Trubr
Editor for

Digital Publishing | Data Protection | Blockchain