さくらのVPSでNEM Symbol のテストネットノード構築


  • 2021/08/23 bootstrap v1.0.7 で手順確認。
  • 2021/03/17 メインネットがローンチ。bootstrap v1.0.0 が公開されたのでメインネットノードとしての構築手順を確認。

最新技術情報

NEM Symbol のテストノード参加者がまだまだ足りないらしい。
で、さくらインターネットのVPSサービスでテストノード構築記事があったらいいなと思いました。
ので、他のブログを参考に、さくらのVPSで、NEM Symbol のテストネットノードを起動させてみました。
さくらインターネットでは、2週間のお試し期間があるので、気軽に構築してみましょう。
そしてできるのであればメインネットローンチ後の常時運用へとコマを進めましょう。

公式ページ(一次情報はよく読むこと)
https://docs.symbolplatform.com/ja/guides/network/using-symbol-bootstrap.html

公式ページの推奨スペック
https://docs.symbolplatform.com/ja/guides/network/running-a-test-net-node.html

さくらでのプラン
https://secure.sakura.ad.jp/order/vps/

  • CPU: 8cores
  • メモリ: 16GB
  • ディスク: SSD 1600GB

あたりを選択してみました。

クレカで決済後のOSインストール時には

  • スタートアップスクリプトを利用しない、を選択。
  • パケットフィルタ ポート22番を削除(お好みで)。7900番と3000番は解放。
  • 公開鍵の登録は、登録しないを選択。
ID: ubuntu
PW: 長めで記号入りのパスワードを用意

サーバー起動後

$ sudo su -
[sudo] password for ubuntu:

最新化
# apt update -y
# apt upgrade -y

Node.js をインストール(バージョンは 12 以上)

# apt install -y curl
# curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
# apt install -y nodejs
# node -v
v14.17.5

npmを最新版にアップデート

# npm install -g npm@latest
# npm -v
7.21.0

Symbol Bootstrap をインストール

リリース情報を確認
https://github.com/nemtech/symbol-bootstrap/releases

# npm install -g [email protected]    # バージョンを指定する場合
# npm install -g symbol-bootstrap@alpha    # 最新のalphaバージョンを入れたい場合
# symbol-bootstrap -v
symbol-bootstrap/1.0.7 linux-x64 node-v14.17.5

docker のインストール

# apt 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 install -y docker-ce docker-ce-cli containerd.io
# docker -v
Docker version 20.10.8, build 3967b7d

docker-compose のインストール

最新バージョンを確認(バージョン値を書き換えてください)

# curl -L https://github.com/docker/compose/releases/download/1.29.2/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.29.2, build 5becea4c

v0.3.2 からエラーが出るようになりました。
docker を root ユーザーではなく一般ユーザーで操作できるようにします。
ubuntu ユーザーを docker グループに入れ、を docker サービスを再起動します。

# usermod -aG docker ubuntu
# systemctl restart docker.service
# exit
$ exit
再度、ログインします。

設定ファイルの生成
なお同期したブロックチェーンのデータがtarget配下に保存される。

$ cd ~/
$ mkdir -p ~/symbol-bootstrap/target
$ cd ~/symbol-bootstrap

設定ファイルの作成(やらなくてもOK。ランダム文字列になり、ノードリストのNameに表示されます)
テストネット https://symbolnodes.org/nodes_testnet/
メインネット https://symbolnodes.org/nodes/

$ vi my-preset.yml
----
nodes:
    -
        host: <あなたのホスト名>
        friendlyName: <好きな文字列>
        maxUnlockedAccounts: 10    # ←委託可能数、スペック次第
        beneficiaryAddress: <ハーベスト手数料の送付先ウォレットアドレス>
----

建てたいノードタイプによってコマンドが変わります。
https://docs.symbolplatform.com/ja/guides/network/running-a-symbol-node.html

$ symbol-bootstrap config -p mainnet -a dual    # メインネットの場合
$ symbol-bootstrap config -p testnet -a dual    # テストネットの場合
$ symbol-bootstrap config -p testnet -a dual -c my-preset.yml    # 個別設定を読み込ませる場合

秘密鍵を扱うファイル操作するときのためのをパスワードを設定します。

? Enter password to use to encrypt and decrypt custom presets, addresses.yml, and preset. yml files. When providing a password, private keys will be encrypted. Keep this password in a secure place!

friendlyName 等が、自分のプリセット設定が読み込まれているか確認します。

$ less target/nodes/node/server-config/resources/config-node.properties

生成された秘密鍵、公開アドレス等を確認します。
なお、秘密鍵が伏字になっていますので、確認したい場合は手順を他記事を検索で探してください。

$ less target/addresses.yml

コンテナの起動と停止

$ symbol-bootstrap start --detached    # 一回目だけ
$ symbol-bootstrap stop                # 停止
$ symbol-bootstrap run --detached      # 二回目から

コンテナの起動状態を確認します。

$ symbol-bootstrap healthCheck

APIゲートウェイの疎通をまずはローカルで確認します。

$ curl http://localhost:3000/node/info
{"version":16777216,"publicKey":"94E0D813F2EAB23557472C7181E86D57F99D3DFFDB62D5C5705BCB9EA3A39E8E","networkGenerationHashSeed":"57F7DA205008026C776CB6AED843393F04CD458E0AA2D9F1D5F31A402072B2D6","roles":3,"port":7900,"networkIdentifier":104,"host":"","friendlyName":"94E0D81","nodePublicKey":"DA35A040FAF90A7BF6C6109317AD8F95B377A30A2AF0363F6702D1CDF04C915C"}

以下のコマンドを何回か叩いて、チェーン高 (height) が高くなっていけばブロックチェーンの同期はOK

$ curl http://localhost:3000/chain/info
{"height":"741","scoreHigh":"0","scoreLow":"9934755933726872","latestFinalizedBlock":{"finalizationEpoch":1,"finalizationPoint":1,"height":"1","hash":"BEED005B82B22FC32DA6FDF4DFEB7C11BA6A8C5C504EB7B9CCF91B9B2A09E020"}}
  ↓
{"scoreHigh":"0","scoreLow":"7341013067143532","height":"361","latestFinalizedBlock":{"finalizationEpoch":1,"finalizationPoint":1,"height":"1","hash":"C87844DF76236C690D37266F298B7A5A19A9B588913F8A6FD34138B92EF5FD88"}}

ローカルでアクセス可能なら、VPSで払い出されたIPアドレスでも叩いてみましょう。

$ curl http://{払い出されたIPアドレス}:3000/chain/info
{"scoreHigh":"0","scoreLow":"167633496728810663","height":"10837","latestFinalizedBlock":{"finalizationEpoch":9,"finalizationPoint":45,"height":"5760","hash":"44CA32FC58B565A9C39156C7E28F979EB8B80F933A82D6B4454CFF5583BFD548"}}

大丈夫なようですね。

ノードも建てたし次はハーベストだ、と思ったあなたは NEM Symbol テストノード構築で GoTo 大家 編 に進んでください。

参考URL

Symbol node 構築に関する雑感
https://note.com/ooba8686/m/m6c64b6857010/hashtag/291660

【ローンチ直前版】Symbolテストネットノードで自前でハーベスティング
https://nemlog.nem.social/blog/57098

Symbolテストネットノードを建ててみた (v0.10.x Hippo on Ubuntu Server 18.04)
https://nemlog.nem.social/blog/49345