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 から 途中でこの様な表示が出て来ます
v0.4.5 から harvesting 等の操作で 必要な main アカウントの秘密鍵情報を暗号化する様になりました
この情報を復号する時の パスワードを ここで設定して下さい(パスワードを入力後 [ENTER])
入力した パスワードは 忘れない様に 保管して下さい
入力した設定の確認
node の起動直前で
設定した IP/friendlyname 等が 反映しているか表示します
その他 version
roles
(Peer,Api)なら dual 設定
(Peer,Api,Voting)なら dual+voting 設定です
それぞれ 確認出来たら [ENTER] で続行して下さい
もし入力内容が違っていたら
ここで [ctrl]+c で script を止めて
[script の スタート] から やり直して下さいw
ここで又 パスワード入力を求められます
先程設定した パスワードを(とりあえずw これが何に反映してるか不明w)入れておきましょう
これらの確認が終わると
node の起動が始まります
ここはしばらく時間が掛かるので
待ちます待ちます
アドレスの表示
node 起動プロセス の終了時に target/addresses.yml を復号した d_addresses.yml を作成
main 等の アドレスを表示します
この内容は サーバの外に保管して下さい
表示後 d_addresses.yml は 削除されます
node が 起動出来たかの確認
端末が コマンド入力待ちに戻ってきたら
cd symbol-bootstrap
で 作業 ディレクトリに入って
symbol-bootstrap healthCheck
同期進捗の見方
これは作業ディレクトリ以外の場所でも実行できます
curl localhost:3000/chain/info|jq
これで node の現在の height(どこまで同期が進んでいるか)見れます
上の height が 現在の node の block高です
下は ファイナライズ済の block高を表しています
https://symbolnodes.org/nodes_testnet/
↑ の node list と比較してみて下さい 自分の node がどこまで同期しているかが判ります
node の名前などの確認
friendlyName/voting 等 設定した状態で 実際に立ち上がっているかを見ます
curl localhost:3000/node/info|jq
"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
すぐには
こうならない時があります
使用サーバの 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 とかに設定されていますので
この値は各自で任意に変更して構いません