構築したノード
Dual Node(Peer Node + API Node)
・将来的にRest改造を試してみたかったためAPI Nodeの機能が欲しかった
サーバ
レンタルしたサーバ:Contabo Cloud VPS L
推奨に近いスペックで安価だったため選択
※2024年からスペック、料金体系が変わっている模様
項目 | 推奨 | 使用したもの |
---|---|---|
CPU | 8 Core | 8 Core |
RAM | 32GB | 30 GB |
Disk Size | 750 GB | 800 GB |
Disk IOPS | 1500 IOPS SSD | 詳細な記載なし |
構築の前に
contaboサーバにデフォルトでインストールされていたPythonバージョンは3.8でしたがsymbol-shoestringの新しいバージョン(0.1.0)を利用するには3.9が必要なようなので何かしらの方法でPythonバージョンアップをお願いします。
※symbol-shoestringの旧バージョン(0.0.5)はPython3.8で動作することを確認しています。
環境情報
- Ubuntu 20.04.6 LTS
- Python 3.9.18
- pip 23.3.1
- Docker version 24.0.7, build afdd53b
構築手順
下記ページを参考に実施
操作用アカウント追加(usernameはお好きなものに変更してください)
adduser username
usermod -aG sudo username
su - username
rootアカウントによるログイン禁止設定
※「vi チートシート」などで検索するとviコマンドの基本的な操作方法が分かると思います。
sudo vi /etc/ssh/sshd_config
# ファイル内に存在する下記設定を yes から no に変更
PermitRootLogin no
上記設定を反映
sudo systemctl restart ssh
ミドルウェア追加
sudo apt install -y libssl-dev gettext
pip install PyOpenSSL --upgrade
pip install symbol-shoestring
docker インストール
curl https://get.docker.com | sh
sudo usermod -aG docker username
sudo reboot
sudo systemctl start docker
sudo systemctl enable docker
作業用ディレクトリ(/symbol)作成
cd ~
mkdir symbol
Wizard実行(ノードの設定項目入力)
python3 -m shoestring.wizard
Wizard内の詳細な設定は下記動画が大変参考になりました。
※ノードのハーベスト報酬を受け取りたい方はbeneficiary addressの設定をお忘れなく。
ノード起動
cd ~/symbol
docker compose up -d
ファイアウォール設定
公開したポート:80、3000、3001、7900、SSH用ポート
設定を変更したい場合の操作(upgrade)
ノード停止
docker compose down
設定更新
shoestring/overrides.ini
ファイルを更新
sudo vi ~/symbol/shoestring/overrides.ini
Wizardでupgrade実行
python3 -m shoestring.wizard
ノード起動
docker compose up -d
※上記はづ~さんに教えていただきました。ありがとうございます!
shoestringに関する操作をまとめてくださってますのでこちらもご参照ください。
+αの設定
NFT-DriveやCOMSAのエクスプローラー検索速度やXEMBookの表示速度向上
コンテナ起動
cd ~/symbol
docker compose exec db bash
インデックス作成
mongo --host db
use catapult
db.transactions.createIndex({'transaction.mosaics.id' : 1});
db.transactionStatements.createIndex({'statement.receipts.targetAddress' : 1});
db.transactionStatements.createIndex({'statement.receipts.senderAddress' : 1});
db.transactions.reIndex();
db.transactionStatements.reIndex();
exit
exit
反映確認
cd ~/symbol
docker compose exec db bash
mongo --host db
use catapult
db.transactions.find({'transaction.mosaics.id': NumberLong("-6242235878428273386")}).explain('executionStats');
explain('executionStats')を実行してwinningPlanを確認して"stage" : "IXSCAN" が表示されていればOK
> db.transactions.find({'transaction.mosaics.id': NumberLong("-6242235878428273386")}).explain('executionStats');
{
"explainVersion" : "1",
"queryPlanner" : {
"namespace" : "catapult.transactions",
"indexFilterSet" : false,
"parsedQuery" : {
"transaction.mosaics.id" : {
"$eq" : NumberLong("-6242235878428273386")
}
},
"maxIndexedOrSolutionsReached" : false,
"maxIndexedAndSolutionsReached" : false,
"maxScansToExplodeReached" : false,
"winningPlan" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",★
...
■検証
https://node.exymlab.com:3001/transactions/confirmed?embedded=true&transferMosaicId=0F2AFAE62B575AB3