【Hyperledger Composer】土台構築チートシート（Ubuntu用）

## このチートシートは何のためのもの？

このチートシートは、[Hyperledger Composer](https://hyperledger.github.io/composer/latest/index.html)を扱うインフラを作る際に最低限必要となる諸々のアプリケーションの導入手順を記載したものです。
このチートシートの後続にあたるインフラ構築のサンプルも追って作成し、こちらにリンクを記載します。

CentOS用のチートシートは[こちら](https://qiita.com/microwavePC/items/e9317f23ae3d6db72e9c)。

## 前提条件

このチートシートの手順は、まっさらな状態の **Ubuntu 16.04 LTE** を前提として作成してあります。
一部アプリケーションをすでにインストール済みの場合は、適宜その部分を扱う手順を読み替えてください。

また、本手順実行の後にプラットフォームとするHyperledger Fabricのバージョンは **1.2** です。
上記以外のバージョンを利用される場合、インストールする各アプリケーションのバージョンを適切なものに変更してください。


## この手順に沿った場合に最終的に揃うアプリケーション

| アプリケーション名     | バージョン        | バージョン確認用のコマンド |
|:---------------------|:------------------|:------------------------|
| Docker               | 18.06.0-ce        | docker version          |
| Docker Compose       | 1.21.2            | docker-compose version  |
| Node.js              | 8.11.3            | node -v                 |
| npm                  | 5.6.0             | npm -v                  |
| yarn                 | 1.9.2             | yarn -v                 |
| gcc(g++)             | 5.4.0 20160609    | gcc -v                  |
| python               | 2.7.*            | python --version        |
| Hyperledger Composer | 0.20.0            | composer -v             |

## 環境構築手順

###### 1. Ubuntuのパッケージリストを更新してから、『apt-transport-https』『ca-certificates』『software-properties-common』をインストールする。

```shell:コマンド
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
```

###### 2. Ubuntu用のDockerパッケージの公開鍵を、Ubuntuのaptへ追加する。

```shell:コマンド
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

###### 3. Ubuntu用のDockerパッケージの安定版を、aptのリポジトリに追加する。

```shell:コマンド
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```

###### 4. Ubuntuのパッケージリストを更新し直し、Dockerをインストールする。

```shell:コマンド
sudo apt-get update
sudo apt-get -y install docker-ce=18.06.0~ce~3-0~ubuntu
```

###### 5. 現ユーザーの副所属グループに「docker」を追加した後、それを有効化させるためにログアウトする。

```shell:コマンド
sudo usermod -aG docker $(whoami)
logout
```
コマンド実行後、再度Ubuntuへログインする。

###### 6. 現在のマシン構成やOSに沿ったDocker Composeを、/usr/local/bin/docker-composeへダウンロードする。

```shell:コマンド
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
```

###### 7. Docker Composeの実行権限を解放する。

```shell:コマンド
sudo chmod +x /usr/local/bin/docker-compose
```

###### 8. Ubuntuのパッケージリストを再度更新してから、『Node.js』『GCC』『G++』『Yarn』『Go』をインストールする。

```shell:コマンド
sudo apt-get update -y && sudo apt-get upgrade -y
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g --unsafe-perm n
sudo n 8.11.3
sudo apt-get purge -y nodejs npm
sudo apt-get autoremove -y
sudo apt-get install -y gcc g++ make
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install -y yarn=1.9.2-1
sudo add-apt-repository ppa:gophers/archive
sudo apt-get update && sudo apt-get install -y golang-1.9-go
```

###### 9. 環境変数GOPATHをシステムに追加する。

```shell:コマンド
echo 'export GOPATH=$HOME/go' >> ~/.profile
```

###### 10. たった今追加した環境変数を読み込んだ後、読み込めていることを確認する。

```shell:コマンド
source ~/.profile
echo $GOPATH #このコマンドの出力結果が『/home/(ユーザー名)/go』となることを確認する。
```

###### 11. Pythonの2.*系をインストールする。

```shell:コマンド
sudo apt-get install -y python
```

###### 12. Hyperledger Composerと、それに必要なパッケージ群をインストールする。

```shell:コマンド
sudo npm install -g --unsafe-perm composer-cli@0.20.0
sudo npm install -g --unsafe-perm composer-rest-server@0.20.0
sudo npm install -g --unsafe-perm generator-hyperledger-composer@0.20.0
sudo npm install -g --unsafe-perm yo
sudo npm install -g --unsafe-perm composer-playground@0.20.0
```

###### 13. 環境構築後における権限関連のトラブルを回避するため、「~/.config」ディレクトリの操作制限を解除しておく。

```shell:コマンド
sudo chmod 777 ~/.config
```

###### 14. Dockerを再起動する。

```shell:コマンド
sudo service docker restart
```

**以上**

## この後の手順は？

[こちら](https://qiita.com/microwavePC/items/37b20defcd7dc23e5f42)の手順でインフラを構築していき、BNAファイル（ビジネスネットワーク）をインストールできる状態にしていきます。

## 参考情報

https://hyperledger.github.io/composer/latest/installing/installing-index