Hyperledger Fabric v1.4 のサンプルアプリケーションを AWS EC2 で動かしてみる


はじめに

HyperledgerFabricって公式サンプル以外に実装例が全然なくて(特に日本語だと…)、色々と調べるだけでどんどん時間が溶けていきます。特に安定版としてリリースされた v1.4 の実装例はほとんど見つかりません。エンタープライズユースが中心で、 Qiita や GitHub などではオープンにしづらいということなんでしょうかね。

さて、この記事では以下のリポジトリのサンプルを AWS EC2 で動かしてみたので、その手順を備忘録的にまとめています。

Build Blockchain Insurance Application

サンプルを動かすまでの流れ

AWS EC2 (Ubuntu-18.04)でインスタンス作成

EC2でインスタンスを作成。OS は Ubuntu-18.04 を選択しておきます。インスタンスタイプは適当に t2.xlarge とかでよいです。

セキュリティグループは、SSHとカスタムTCPルールを設定します。SSHはポート22を、カスタムTCPルールではポート3000を空けておきましょう。

インスタンスへSSH接続

作成したインスタンスへSSHで接続し、ターミナルで操作していきます。

SSHで接続する際のユーザー名はubuntuであることに注意。普段はよくec2-userで入ることが多いので、ここで少しハマりました。OSがAmazonLinuxのときはec2-user、Ubuntuのときはubuntuなので注意。

Build Blockchain Insurance Applicationリポジトリをクローンする前に必要な環境を整えます。

DockerとDockerComposeをインストール

aptパッケージを更新

$ sudo apt-get update

HTTPS経由でリポジトリを使用できるようにパッケージをインストール

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

Dockerの公式GPGキーを追加

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

stableリポジトリの設定

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

もう一度aptパッケージを更新

$ sudo apt-get update

Dockerをインストール

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

sudoがなくても一般ユーザーがDockerを実行できるように設定

// ユーザーの確認
$ whoami
ubuntu

// 初期設定では使えない
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at ~

// 権限の確認
$ cat /etc/group | grep docker
docker:x:999:

// 権限の追加
$ sudo gpasswd -a ubuntu docker

// 追加されたことを確認
$ cat /etc/group | grep docker
docker:x:999:ubuntu

// Dockerが使用するソケットを一般ユーザーが読み込めるように
$ sudo chmod 666 /var/run/docker.sock

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

DockerComposeをインストール
インストール前に/usr/local/bin/へ移動

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

実行可能権限を適用

$ sudo chmod +x /usr/local/bin/docker-compose

インストールの確認

$ docker-compose --version
docker-compose version 1.24.1, build xxx~

Node.js、nvm、npmのインストール

nvm(ノードバージョンマネージャ)をインストール

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash

$ . ~/.nvm/nvm.sh

nodejsとnpmのインストール

$ nvm install 8.9.4

$ node -v
v8.9.4

$ npm -v
5.6.0

pythonのインストール

Ubuntu-18.04にはデフォルトでpython3が入っているので、python2は別途インストールする必要がある。

$ sudo apt-get install python

Gitのインストール

$ sudo apt-get install git

アプリケーションを実行

リポジトリのクローンを作成

$ git clone https://github.com/IBM/build-blockchain-insurance-app

Dockerへログイン

$ docker login

Ubuntuで実行する際、configファイルを一部修正します。

// フォルダを移動
// /build-blockchain-insurance-app/web/www/blockchain/

// vimで修正
$ vi config.js

/build-blockchain-insurance-app/web/www/blockchain/config.jsの9ライン目のisUbuntu: falseisUbuntu: trueへ書き換え。

シェルの実行

$ cd build-blockchain-insurance-app

$ ./build_ubuntu.sh

これでしばらくするとネットワークが作成されて、ブラウザからアプリケーションを触れるようになります。

URL : http://ec2-xx-xx-xx-xx.compute-x.amazonaws.com:3000/

EC2インスタンスのパブリックDNSに:3000/を付ければOKです。セキュリティグループの設定でポート:3000を開放しているので、ブラウザで以下のページが見れるようになっていれば成功です。

おわりに

Hyperledger Fabric v1.4 のサンプルアプリケーションを動かすところまでできました。

SDKを使ったアプリケーション側の実装がまだよく分からないので動かしながら、勉強していくしかないですね。