【GCP】ubuntu16.04にsteemノードを立ててみる💻steemCreated with Sketch.

in #japanese6 years ago (edited)

GCP(Google Cloud Platform)上にsteemノードを立てたので、手順を記載します。今後、ちょっとしたdApps(大げさですが)を作ろうと思うので、技術的な情報もどんどん発信していこうと思います。

■サーバ構成

GCPの「Compute Engine」:custom(vCPU x 4、メモリ 20 GB)※公式の16GBだと足りないかも。
SSD:100GB
1ヶ月の想定料金:約1万2千円くらい
OS:ubuntu16.04

steemノードは最低限動く構成でもそこそこのサーバスペックを要求されます。個人でノードを立てるには結構な出費ですね。

■構築手順

今回は公式githubの手順を参考にdockerコンテナでノードを立てることにします。
https://github.com/steemit/steem/blob/master/doc/exchangequickstart.md

1. dockerインストール

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
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 apt-get update
sudo apt-get install docker-ce

ここまででdockerがインストールされます。
ついでに、Compute Engineのログインユーザで使えるように、権限の付与を行います。
付与後は、一度インスタンスからログアウトして再度SSHでつなぎなおします。

sudo groupadd docker
sudo usermod -aG docker $USER

これでdockerのインストールは完了です!

2. steemコンテナビルド

まず、githubからリポジトリをとってきます。

git clone https://github.com/steemit/steem
cd steem

そしてdocker build。かなり時間かかります。1時間くらいかかったかも。。

docker build -t=steemit/steem .

公式docker imageがdockerhubに登録されているので、そっちを使ってもいいと思います。
※docker hubのimageが最新版かは実施する前に確認してたほうがよさそうです。
※buildせず、pullする場合は↓です。

docker pull steemit/steem

3. steemコンテナ起動

まず、steem blockchain格納用の領域を作ります。

cd ..
mkdir blockchain
mkdir steemwallet

そして、docker run!

docker run -d --name steemd-exchange --env TRACK_ACCOUNT=nameofaccount -p 2001:2001 -p 8090:8090 -v /path/to/steemwallet:/var/steemwallet -v /path/to/blockchain:/var/lib/steemd/blockchain --restart always  --log-opt max-size=20m --log-opt max-file=3  steemit/steem

「TRACK_ACCOUNT」は、自分のsteemアカウント。「/path/to/steemwallet」「/path/to/blockchain」は↑で作ったパスに変更します。
これでブロックの同期が始まります。下記でログ等が確認できます。

docker ps # コンテナ確認
docker logs -f steemd-exchange --tail 10 # log確認

現在のsteemブロック高は約2500万です。
1日で1500万まで同期が完了しているので、2日待てば同期完了しそうです。

次は、APIを叩いてみる編を上げようと思いますので、良かったらフォローお願いします!