LoginSignup
12
10

More than 1 year has passed since last update.

"up" Symbol node build/rebuild script 及び "update" node 更新 script

Last updated at Posted at 2020-10-03

mainnet 用(本文中に testnet 用への切り替え方も書いてあります)

※注意!
この script "up"は harvester情報 及び height情報を引継ぐものではありません
あくまで 前回の nodeの address情報を引継ぐものです

update 用に script を追加しました "update"
update用 script "update"へ
こちらの script では 委任さん情報と height(block高)を引き継げます

Symbol node 起ち上げ script "up"(non-voting)

※ この scriptは
自動構築 shellscript "b" で BASE 構築後に 実行して下さい
(すでに "b" を実行している方は このまま進んで下さい)
『"b" Symbol bootstrap 動作環境 自動構築 shellscript(ベース構築)』

"b" で設定した user名 と パスワードで サーバに ログイン
(sshd port 22 と root では ログイン出来無くなっています)

"b" で設定した user の homeディレクトリに移動(必要な場合があります)

cd

vi を起動

vi up

"i" 入力で編集モードにする
以下をコピペ

#!/bin/bash

#input host
echo "??? please input host ???"
read host

#input friendlyName
echo "??? please input friendlyName ???"
read friendlyName

#input beneficiaryAddress
echo "??? please input beneficiaryAddress ???"
read beneficiaryAddress

#input maxUnlockedAccounts
echo "??? please input maxUnlockedAccounts ???"
read maxUnlockedAccounts

#input node PrivateKeys
echo "??? please input mainPrivateKey ???"
read mainPrivateKey
echo "??? please input transportPrivateKey ???"
read transportPrivateKey
echo "??? please input remotePrivateKey ???"
read remotePrivateKey
echo "??? please input votingPrivateKey ???"
read votingPrivateKey
echo "??? please input vrfPrivateKey ???"
read vrfPrivateKey

#----------
echo "continue working......."

#stop node
cd symbol-bootstrap
symbol-bootstrap stop

#delete symbol-bootstrap dir
cd
sudo rm -rf symbol-bootstrap
docker system prune -a

#install Symbol Bootstrap
sudo npm install -g symbol-bootstrap
symbol-bootstrap -v

#make workdir
mkdir -p symbol-bootstrap
cd symbol-bootstrap

#make custom config file
cat <<EOF > custom.yml
preset: mainnet
assembly: dual
privateKeySecurityMode: ENCRYPT
nodes:
    -
        host: $host
        friendlyName: $friendlyName
        ##voting: true
        maxUnlockedAccounts: $maxUnlockedAccounts
        transactionSelectionStrategy: oldest
        minFeeMultiplier: 10
        beneficiaryAddress: $beneficiaryAddress

        mainPrivateKey: $mainPrivateKey
        transportPrivateKey: $transportPrivateKey
        remotePrivateKey: $remotePrivateKey
        votingPrivateKey: $votingPrivateKey
        vrfPrivateKey: $vrfPrivateKey

        maxChainBytesPerSyncAttempt: 50MB
        messageSynchronizationMaxResponseSize: 5MB
        blockDisruptorMaxMemorySize: 1000MB

httpsProxies:
    -
        excludeDockerService: false

EOF

#make config file
symbol-bootstrap config -c custom.yml

#check config
echo "------------------------------------------------"
sed -n 70,73p target/nodes/node/server-config/resources/config-node.properties
echo "!!! Check node status !!!"
echo "node status Ok? Ok:ENTER No:CTRL+C and restart script"
read a

echo "continue working......."

#make docker-compose.yml
symbol-bootstrap compose

#start
symbol-bootstrap run -d
symbol-bootstrap healthCheck

curl localhost:3000/chain/info|jq
curl localhost:3000/node/info|jq

#delete PrivateKeys from custom.yml
sed -i -e '/PrivateKey/d' custom.yml
sed -i -e '13d' custom.yml

#show custom.yml
cat custom.yml

#show config-harvesting.properties
cat target/nodes/node/server-config/resources/config-harvesting.properties

#show addresses
rm -rf d_addresses.yml
symbol-bootstrap decrypt --source target/addresses.yml --destination d_addresses.yml
cat d_addresses.yml

#delete decrypted addresses.yml
rm -rf d_addresses.yml

[ESC]キーで 編集モード 終了
":wq"入力 保存して終了

voting node として rebuild したい場合

script を実行する前に

sed -i -e s/"##"/""/ up

↑ これを実行すると voting 用に変わります

testnet node として 起動したい場合

この script "up" は mainnet 用に記述されています が
script を実行する前に

sed -i -e s/"mainnet"/"testnet"/ up

↑ これを実行すると testnet 用に変わります

script の スタート

cd
sh up

script が スタートします

script が スタート したら

"host" と "friendlyname" 聞いて来ますので それぞれ 入力[ENTER]して下さい
※host に ドメインを入れていると https化 が出来ます
サーバ の IP に対応する ドメイン が判らない時は下記の サイトで確認する事が出来ます
ドメイン/IPアドレス サーチ 【whois情報検索】

"beneficiaryAddress" を聞いて来ます
ここには通常の Symbol アドレスを入力して下さい
これは node 上で harvesting が発生した時
ここに入力した アドレス に収穫の一部が入って来ます
特に無ければ [ENTER] で良いです

"maxUnlockedAccounts" を聞いて来ます
これは 委任してくれる人の受け入れ上限の数を
入れて下さい
これは memory の容量に依存する為
余り多いと node の動作にかかわりますので
使用する サーバの spec を考慮して下さい

前回 (rebuild前) node 情報の 引継ぎ

それぞれ 保存している アドレス情報を参考に入力して下さい)

rebuild 前の node 固有の address 情報が ある場合は
その後に
"mainPrivateKey"
"transportPrivateKey"
"remotePrivateKey"
"votingPrivateKey"(これは voting 設定でなければ必要ありません)
"vrfPrivateKey"
も 聞いて来ますので

前回 node 情報を引き継ぎたい場合は ここに入力[ENTER]して下さい
前回の node で voting 又は リモートharvesting をしていた場合は
ここに それぞれ入力すると 前回の node を 引き継ぎます
※ "up" では 前回の height(block高) と 委任アカウント情報は 復活しません!
入力しなかった部分は 新規に addressが 生成されます
表示された node address 情報の コピペで行けますw
特に 引継ぎの必要が無ければ[ENTER]連打でw

進行途中で パスワード入力求めて来たら パスワード入力
[y/N] 聞いて来たら "y" で

この後しばらく待ちます

暗号化 パスワードの設定

v0.4.5 から 途中でこの様な表示が出て来ます
image.png
v0.4.5 から harvesting 等の操作で 必要な main アカウントの秘密鍵情報を暗号化する様になりました
この情報を復号する時の パスワードを ここで設定して下さい(パスワードを入力後 [ENTER])
入力した パスワードは 忘れない様に 保管して下さい
image.png

入力した設定の確認

node の起動直前で
設定した IP/friendlyname 等が 反映しているか表示します
image.png
その他 version
roles
(Peer,Api)なら dual 設定
(Peer,Api,Voting)なら dual+voting 設定です

それぞれ 確認出来たら [ENTER] で続行して下さい

もし入力内容が違っていたら
ここで [ctrl]+c で script を止めて
[script の スタート] から やり直して下さいw

ここで又 パスワード入力を求められます
image.png
先程設定した パスワードを(とりあえずw これが何に反映してるか不明w)入れておきましょう

これらの確認が終わると
node の起動が始まります
ここはしばらく時間が掛かるので
待ちます待ちます

アドレスの表示

node 起動プロセス の終了時に target/addresses.yml を復号した d_addresses.yml を作成
main 等の アドレスを表示します
この内容は サーバの外に保管して下さい
表示後 d_addresses.yml は 削除されます

node が 起動出来たかの確認

端末が コマンド入力待ちに戻ってきたら

cd symbol-bootstrap

で 作業 ディレクトリに入って

symbol-bootstrap healthCheck

って打って見て下さい
無題.png
赤丸の表示が出たら起動成功です ↑

同期進捗の見方

これは作業ディレクトリ以外の場所でも実行できます

curl localhost:3000/chain/info|jq

これで node の現在の height(どこまで同期が進んでいるか)見れます
image.png
上の height が 現在の node の block高です
下は ファイナライズ済の block高を表しています
https://symbolnodes.org/nodes_testnet/
↑ の node list と比較してみて下さい 自分の node がどこまで同期しているかが判ります

node の名前などの確認

friendlyName/voting 等 設定した状態で 実際に立ち上がっているかを見ます

curl localhost:3000/node/info|jq

image.png
"roles" これは dual(api+peer)の場合 "3" になります
"7" は voting node である事を示します

"host" 設定した IP address です(もしくはドメイン)
"friendlyName" 設定した node の名前です

node の停止と再開

いずれも 作業ディレクトリ(ここではsymbol-bootstrapになります)内で実行
停止

symbol-bootstrap stop

再開

symbol-bootstrap run -d

正常に動作しているかは

symbol-bootstrap healthCheck

すぐには
image.png
こうならない時があります
使用サーバの spec に依存して "Network is running!" になるまで時間がかかる場合もあります
どうしても "Network is running!" にならない時は

symbol-bootstrap stop
symbol-bootstrap resetData
simbol-bootstrap run -d

を実行して下さい
height が 1 からの同期のやり直しですが これで上手く行く事が多いです
どうしても上手く行かない時(api-broker が立ち上がらない時も)は
再度 "up" を実行して下さい
script の スタートへ戻る

bootstrap の更新があった時は

cd

home ディレクトリに上がります

vi update

以下の script をコピペ 保存して下さい

update 用 script "update"(mainnet/testnet 共用)

#!/bin/bash

cd symbol-bootstrap
symbol-bootstrap stop
cp -r target target.bak
sudo npm install -g symbol-bootstrap
symbol-bootstrap start -c custom.yml --upgrade -d

symbol-bootstrap healthCheck
curl localhost:3000/chain/info|jq
curl localhost:3000/node/info|jq
curl localhost:3000/node/unlockedaccount|jq

rm -rf d_addresses.yml
symbol-bootstrap decrypt --source target/addresses.yml --destination d_addresses.yml
cat d_addresses.yml
rm -rf d_addresses.yml

symbol-bootstrap -v

cat target/nodes/node/server-config/resources/config-harvesting.properties

保存したら

sh update

これで update 出来ます
target の内容は 同じ ディレクトリ内に "target.bak" としてバックアップしています 非常用です
この "update" では 委任さんも height(block高)も 引き継ぎます

bootstrap の最新版は ↓ で確認出来ます
https://github.com/nemtech/symbol-bootstrap

v0.4.5 での変更 target/addresses/yml の暗号化について

v0.4.5 より
target/addresses.yml の秘密鍵記述の部分が暗号化される様になりました
node 起ち上げ中に

config 実行時に パスワードを 設定
ここで設定した パスワードは link/unlink 等の操作を行う際に パスワードを求めて来る様になりました

※compose 実行時にも パスワードを聞いて来ます が!
(↑ ココは現在検証中w composeで パスワードを聞いて来るけど設定しても反映してないみたい
ちなみにココで全く違う パスワードを入力しても 後で何も起こらないw
とりあえずは config で設定した パスワードを入力しちゃってますw)

target/preset.yml には 秘密鍵を記述した カスタムプリセットファイルを使用した node 起ち上げでも
preset.yml には残らなくなりました

①カスタムプリセットファイル に秘密鍵を記述している場合 これを削除
②起ち上げ script に秘密鍵を記述している場合 これを削除

上記 ①② の作業で sarverには そのままで見れる秘密鍵情報は 残りません

addresses.yml の秘密鍵を読むためには

作業 ディレクトリ(ここでは "symbol-bootstrap")内で

symbol-bootstrap decrypt --source target/addresses.yml --destination d_addresses.yml

を実行すると

パスワードを入力した後に
作業 ディレクトリ 内に 復号された"d_addresses.yml" が生成されます
このファイルを安全な場所に保存した後 serverから削除してください

※encrypt で カスタムプリセットファイルも暗号化できます(ぼくはまだやってませんw)

※"up" の custom.yml 作成で

    minFeeMultiplier: 10

と固定していますが これはあくまで便宜上です
デフォルト だと 100 なんですが
node によっては 10 とか 25 とかに設定されていますので
この値は各自で任意に変更して構いませんimage.png

12
10
9

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
12
10