MongoDB インストール
公開鍵のインポート
MongoDB の公開鍵 GPG キーをインポートします。
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
リストファイルを作成する
Ubuntu 24 用のリストファイルを作成する。
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
MongoDB のインストール
sudo apt update
sudo apt install -y mongodb-org
作業ディレクトリへの移動
cd /opt/symbol-node
MongoDB の準備
DB データ格納ディレクトリの作成
Symbol のデータを格納するディレクトリを作成する。
mkdir /opt/symbol-node/dbdata
MongoDB の起動
mongod --dbpath=dbdata --wiredTigerCacheSizeGB 2
MongoDB の初期化
初回起動時は、データベースもコレクションも無い状態なので、catapult データベースを作成し、初期化します。
もう一つコンソールを開いて、以下を実行します。
cd /opt/symbol-node/mongo
mongosh catapult mongoDbDrop.js
mongosh catapult mongoDbPrepare.js
cd ..
しばらく、MongoDB は使用しないのでCtrl + C
で終了します。
Rest の準備
Rest のコピー
/opt/symbol-node/symbol-node
に持って行きます。
cd /opt/symbol-node
cp -r ~/symbol/client/rest app
cd app
npm i
cd ..
コンフィグの編集
rest/rest.json
を編集します(app/resources 内の rest.json は使用しません)。
各ホストをループバック IP に変更します。また、ノードの証明書とプロパティへのパスを設定します。deployment
とnodeMetadata
の変更は任意です。
...
"db": {
"url": "mongodb://127.0.0.1:27017/",
...
"apiNode": {
"host": "127.0.0.1",
"port": 7900,
"timeout": 1000,
"tlsClientCertificatePath": "../certificates/node.crt.pem",
"tlsClientKeyPath": "../certificates/node.key.pem",
"tlsCaCertificatePath": "../certificates/ca.crt.pem",
"inflationPropertyFilePath": "../resources/config-inflation.properties",
"networkPropertyFilePath": "../resources/config-network.properties",
"nodePropertyFilePath": "../resources/config-node.properties"
},
"websocket": {
"mq": {
"host": "127.0.0.1",
...
"file": {
"formats": ["prettyPrint"],
"level": "verbose",
"handleExceptions": true,
"filename": "../logs/rest/catapult-rest.log",
"maxsize": 20971520,
"maxFiles": 100
}
...
"deployment": {
"deploymentTool": "n/a",
"deploymentToolVersion": "n/a",
"lastUpdatedDate": "n/a"
},
"nodeMetadata": {
"_info": "replace the body of this object with custom fields and objects to personalize your node"
}
}
Symbol
ノードのコンフィグ編集
resources/config-extensions-server.properties
を編集します。
extension.filespooling
とextension.partialtransaction
を有効にする。
[extensions]
# api extensions
extension.filespooling = true
extension.partialtransaction = true
...
resources/config-extensions-broker.properties
を編集します。
すべての拡張機能を有効にする。
[extensions]
# addressextraction must be first because mongo and zeromq depend on extracted addresses
extension.addressextraction = true
extension.mongo = true
extension.zeromq = true
extension.hashcache = true
resources/config-extensions-recovery.properties
を編集します。
[extensions]
# addressextraction must be first because mongo and zeromq depend on extracted addresses
extension.addressextraction = true
extension.mongo = true
extension.zeromq = true
extension.filespooling = false
extension.hashcache = true
resources/config-node.properties
を編集します。
enableAutoSyncCleanup
を無効にする。
roles
に Api を追加する。
...
enableAutoSyncCleanup = false
...
roles = Peer, Api
...
resources/config-database.properties
を編集します。
databaseUri
をループバック IP に変更する。
[database]
databaseUri = mongodb://127.0.0.1:27017
...
peers-api.json
を作成します。API を持つノードのリストなのですが、peers-p2p.json
のコピーで問題ないでしょう。もし、Peer ノードが含まれていたら外す。
cp resources/peers-p2p.json resources/peers-api.json
Dual ノードの起動
server が起動しているなら、停止させる。
また、すでに同期したデータがある場合はデータを削除する。
コンソールを 5 つ立ち上げ、以下の順番にコマンドを実行する。
cd /opt/symbol-node
mongod --dbpath=dbdata --wiredTigerCacheSizeGB 2
cd /opt/symbol-node/app
npm start ../rest/rest.json
cd /opt/symbol-node
catapult.broker .
cd /opt/symbol-node
catapult.server .
ポートの開放
sudo ufw allow 3000
動作確認
正常な応答があるか確認します。
curl -s http://localhost:3000/node/health | jq
curl -s http://localhost:3000/chain/info | jq
curl -s http://localhost:3000/node/info | jq
curl -s http://localhost:3000/node/unlockedaccount | jq
curl -s http://localhost:3000/network/properties | jq
ノードの停止
起動の逆順に停止します。
- server
- broker
- rest
- MongoDB
次回