9
6

More than 3 years have passed since last update.

NTT WebARENA Indigo VPS で NEM Symbol テストネットノードを起動

Last updated at Posted at 2020-12-07

PXL_20201206_043749517.jpg
※写真と本文は関係はありません。

※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さん、なんだかとてもがんばってらっしゃる。キャンペーンにしてもかなり安くない? みたいな。

indigo_20201231.jpg

ということで、ちょいと 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 チェーンを支えましょう~

参考URL

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6