※2020/12/31 追記。symbol-bootstrap v0.3.2 から root ユーザーでの docker 起動はエラーが出るようになりました。手順を一般ユーザーで行うよう修正しました。
※2021/01/14 追記。symbol-bootstrap v0.4.1。ローンチに向け最終段階の各種バグが修正されました。
いやぁ、年末ですよ皆さん。コロナコロナに明け暮れて、なんだかおかしな年になっちゃいましたね。
とはいえ時は流れて行く! もういーくつ寝ーると、NEM Symbol メインネットのローンチだ〜(2021/1/14 XEMチェーンのスナップショット時に1XEM持ってると1XYM貰える!)→ 2020/2 に再延期
価格の方も盛り上がってきまして、ツイッターのタイムラインもかなり盛り上がっています。いいですね、にぎやかなのは。
んで、そろそろ本番でのノード運用をどこのVPSサービスを使おうかなーと「VPS 比較 2020」とかで検索していくつかのサイトを見ていたら、、おおっとNTTさん、なんだかとてもがんばってらっしゃる。キャンペーンにしてもかなり安くない? みたいな。
ということで、ちょいと Nem Symbol テストノードを起動するところまで試しておきたいと思います。
ノードの必要最低条件
・メモリ 4GB
・CPU: 2コア
・HD:20GB
ということなので、NTT WebARENA Indigo サービスでのプランは以下を選択しました。
・メモリ: 4GB
・CPU: 4GB
・SSD: 80GB
・OS: Ubuntu 18.04
クレカで決済した後、最初の最初なので
- 秘密鍵を新規作成します。
- PCローカルに秘密鍵を保存しておきます。
- インスタンスを起動します。
- ターミナルアプリケーション(Putty、Teratermなど)でIDと鍵でログインを試みます。
・IPアドレス … コントロールパネル内で発行されたIPアドレスを確認
・ログインID … ubuntu
・パスワード … 不要(先程PCローカルに保存した秘密鍵を指定)
サーバーにログイン後
rootユーザーに昇格します。
$ sudo su -
Node.js をインストールします。
ubuntuを最新に
# apt-get update -y && apt-get upgrade -y
nodejsをインストール
# curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
# apt-get install -y nodejs
npmを最新版にアップデート
# npm install -g npm@latest
# node -v
v14.15.3
# npm -v
6.14.10
Symbol Bootstrap をインストール
リリースのバージョン値はこちらで確認します。
alpha版 0.4.1 が最新。
# npm install -g symbol-bootstrap@alpha // 0.4.1
# symbol-bootstrap -v
symbol-bootstrap/0.4.1-alpha-202101151722 linux-x64 node-v14.15.4
docker のインストール
# apt-get install -y apt-transport-https ca-certificates gnupg-agent software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# apt-key fingerprint 0EBFCD88
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# apt-get update -y && apt-get install -y docker-ce docker-ce-cli containerd.io
# docker -v
Docker version 20.10.1, build 831ebea
docker-compose のインストール
# curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose -v
docker-compose version 1.27.4, build 40524192
docker を root ユーザーではなく一般ユーザーで操作できるようにします。
v0.3.2 からエラーが出るようになりました。
ubuntu ユーザーを docker グループに入れ、を docker サービスを再起動します。
# usermod -g docker ubuntu
# /bin/systemctl restart docker.service
# exit
$ exit
ターミナルで再ログインします。
設定ファイルの生成
$ mkdir -p ~/test-symbol-bootstrap/target
$ cd ~/test-symbol-bootstrap
設定ファイルの作成
$ vim my-preset.yml
----
nodes:
-
friendlyName: curupo-node-01 # ←適当な文字列でいいみたいです
gateways:
-
throttlingBurst: 80
throttlingRate: 40
----
テストネットを起動させます。
※意味はAPIおよびピアの両モードを含むデュアルモードに対して上記で作成した自身の設定ファイルを読み込ませる、です。
$ cd ~/test-symbol-bootstrap
$ symbol-bootstrap config -p testnet -a dual -c my-preset.yml
_ _ _ _ _
___ _ _ _ __ ___ | |__ ___ | | | |__ ___ ___ | |_ ___ | |_ _ __ __ _ _ __
/ __| | | | | | '_ ` _ \ | '_ \ / _ \ | | _____ | '_ \ / _ \ / _ \ | __| / __| | __| | '__| / _` | | '_ \
\__ \ | |_| | | | | | | | | |_) | | (_) | | | |_____| | |_) | | (_) | | (_) | | |_ \__ \ | |_ | | | (_| | | |_) |
|___/ \__, | |_| |_| |_| |_.__/ \___/ |_| |_.__/ \___/ \___/ \__| |___/ \__| |_| \__,_| | .__/
|___/ |_|
friendlyName に、自分の書き込んだ設定が読み込まれているか確認します。
$ less ~/test-symbol-bootstrap/target/nodes/api-node/userconfig/resources/config-node.properties
docker-compose.yml の生成
$ symbol-bootstrap compose
生成されたファイルの中身をちらっと確認しておきます
$ less ~/test-symbol-bootstrap/target/docker/docker-compose.yml
いよいよコンテナの起動
$ symbol-bootstrap start -d
コンテナの起動状態を確認します。
$ symbol-bootstrap healthCheck
_ _ _ _ _
___ _ _ _ __ ___ | |__ ___ | | | |__ ___ ___ | |_ ___ | |_ _ __ __ _ _ __
/ __| | | | | | '_ ` _ \ | '_ \ / _ \ | | _____ | '_ \ / _ \ / _ \ | __| / __| | __| | '__| / _` | | '_ \
\__ \ | |_| | | | | | | | | |_) | | (_) | | | |_____| | |_) | | (_) | | (_) | | |_ \__ \ | |_ | | | (_| | | |_) |
|___/ \__, | |_| |_| |_| |_.__/ \___/ |_| |_.__/ \___/ \___/ \__| |___/ \__| |_| \__,_| | .__/
|___/ |_|
2020-12-06T03:50:15.862Z info Container db is running
2020-12-06T03:50:15.864Z info Container api-node is running
2020-12-06T03:50:15.869Z info Container api-broker is running
2020-12-06T03:50:15.870Z info Container rest-gateway is running
2020-12-06T03:50:15.873Z info Container api-node port 7900 -> 7900 is open
2020-12-06T03:50:15.873Z info Container api-broker port 7902 -> 7902 is open
2020-12-06T03:50:15.874Z info Container rest-gateway port 3000 -> 3000 is open
2020-12-06T03:50:15.882Z info Testing http://localhost:3000/node/health
2020-12-06T03:50:15.972Z info Rest http://localhost:3000/node/health is up and running...
2020-12-06T03:50:15.973Z info Network is running!
APIゲートウェイの疎通をまずはローカルで確認します。
$ curl http://localhost:3000/node/info
{"version":0,"publicKey":"8E885B69D611183223DD6372E12BF8189E0B2C898B00A8D7E57F7A92AD838765","networkGenerationHashSeed":"6C1B92391CCB41C96478471C2634C111D9E989DECD66130C0430B5B8D20117CD","roles":3,"port":7900,"networkIdentifier":152,"host":"","friendlyName":"curupo-node-01"}
以下のコマンドを何回か叩いて、チェーン高 (height) が高くなっていけばブロックチェーンの同期はOK
$ curl http://localhost:3000/chain/info
{"scoreHigh":"0","scoreLow":"76216686138591054","height":"4817","latestFinalizedBlock":{"finalizationEpoch":4,"finalizationPoint":45,"height":"2160","hash":"65E4BE4BEE77095C02E68FFD8E6394D73C56BA8EA934DB7247E79BF74E570A3C"}}
↓
{"scoreHigh":"0","scoreLow":"76216686138591054","height":"4817","latestFinalizedBlock":{"finalizationEpoch":5,"finalizationPoint":44,"height":"2880","hash":"6405CF81AE3D8BDB41E254BB1BAF09807876DF0300944287CA9E6B79C7D05038"}}
ローカルでOKなら、VPSで払い出されたIPアドレスでも叩いてみましょう。
$ curl http://NTT_WebARENA_Indigo_VPSで払い出されたIPアドレス:3000/chain/info
{"scoreHigh":"0","scoreLow":"167633496728810663","height":"10837","latestFinalizedBlock":{"finalizationEpoch":9,"finalizationPoint":45,"height":"5760","hash":"44CA32FC58B565A9C39156C7E28F979EB8B80F933A82D6B4454CFF5583BFD548"}}
大丈夫なようですね!
最後に利用が終わったインスタンスは停止しておきましょう。電気代の無駄。節約、節約。
ということで、Nem Symbol のテストノード起動までさくっと進めることができました。ね、簡単。
このあとは、サーバーにドメイン名を割りあてたり、ssl対応したり、ノードのバージョンが上がったらアップデートしたりとそれなりに対応することはありますが。
そこはまぁ大家さんなんだから手間はかかるってことで、頑張っていきましょう。
ノードも建てたし次はハーベスト設定だ、と思ったあなたは「NEM Symbol テストノード構築で GoTo 大家 編」に進んでくださいね。
さぁみんなで NEM Symbol チェーンを支えましょう~