Cover photo

Sui Testnet Wave2 Fullnodeの建て方

1. 目的

SuiのDockerでのFullNodeの構築方法を記載します Source Codeでの構築方法もありますが、時間を要する & Build時にCPU / RAMリソースを消費するため、Node OperationとしてはDockerでの構築方法を推奨します

今回のTestnetでは、報酬は付与されないですが、誰でもFullNodeを建てれるので練習のために構築して運用経験を積んでおくことをお勧めします

post image

2. Server要件

Serverの準備が必要になります AWS, Google Cloud, AzureなどのCloud Providerや OVH, Vultr, HetznerなどのDedicated Server ProviderでServerを用意してください

Contaboや自宅PC、またUS / EUより遠い場所にNodeを建てるとValidatorとの遅延が大きくSyncに問題が発生する可能性があります

上記のProviderでUS / EU RegionでServerを準備することを推奨します

Serverスペックや、ファイアーウォールルールについては今回の要件にあわせてください

スペック

  • CPU : 10 cores

  • Memory : 32 GB RAM

  • Storage: 1 TB NVMe

  • OS : Ubuntu version 18.04 (Bionic Beaver)より最新版

ファイアーウォールルール

下記のPortを0.0.0.0/0, ::/0向けに開ける

  • 8080 : HTTP

  • 9000 : Sui JSON RPC

  • 9001 : Sui Event Websocket (任意)

  • 9184 : Metrics

3. Fullnodeの建て方

本手順はSui公式の手順を参照して作成しています

https://docs.sui.io/devnet/build/fullnode

3-1. 初心者向け

3-1-1. Rootユーザ (特権ユーザ)になる

sudo su -

cd $HOME
post image

3-1-2. installerをダウンロード

wget -O install-sui-fullnode-wave2.sh https://raw.githubusercontent.com/malonpie/sui-node/main/install-sui-fullnode-wave2.sh
post image

3-1-3. installerを実行

chmod +x install-sui-fullnode-wave2.sh

./install-sui-fullnode-wave2.sh
post image

3-1-4. Fullnode起動完了

無事Installerが動作すれば、自動でFullnodeが起動されます 下記のような画面になればOKです

・Node TPSが、0以上であること

・Sui Node Versionが、0.22.0であること

・IP Info: の箇所にIP情報が出てくること  ※ 下記の画像の例では、54.178.169.50です   Node checkerサイトでは、このIPを入れてください

post image

3-1-5. 動作の確認

SuiのCommunityメンバー (公式メンバーではない有志)が作成したNode checkerサイトがあります こちらに、NodeのIPを入れて確認してみてください (Installerの一番最後に表示されているものが、NodeのIPです)

同期するのに時間を要するため、Sync Statusが100%になるまで時間がかかります そのため、Node構築後すぐの確認観点としては、Average Sync Speedが50tps以上であれば問題ありません

https://www.scale3labs.com/check/sui

・Node URL or IPに、先ほど表示されたIPを入れる

・RPC Portを9000で設定

・Networksを、Testnetに設定

・Checkを押す

※ 結果が表示されるまで、10秒くらいかかります

post image

3-2. Engineer向け

初心者向けのInstallerでやっている手順をStep by Stepで実施していきます 初心者向け手順を実施済みの人はSkipしてください 基本的にはCopy and Pasteで建てれるため、そこまで難しくないと思います

3-2-1. Rootユーザ (特権ユーザ)になる

sudo su -
cd $HOME

3-2-2. 依存関係のUpdate

sudo apt update -y
sudo apt upgrade -y
sudo apt install jq -y

3-2-3. DockerのInstall

sudo apt-get install ca-certificates curl gnupg lsb-release wget -y

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io -y

3-2-4. Docker composeのInstall

sudo mkdir -p ~/.docker/cli-plugins/

sudo curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

sudo chmod +x ~/.docker/cli-plugins/docker-compose

sudo chown $USER /var/run/docker.sock

3-2-5. フォルダ作成

mkdir -p $HOME/testnet

cd $HOME/testnet

3-2-6. 必要なファイルのDownload

  • **docker-compose.yaml **起動するsui-nodeのdockerファイル

  • fullnode-template.yaml fullnodeの設定ファイル、portの変更などはここで指定する

  • genesis.blob Validator nodeに接続するために必要になる起動ファイル

wget -O docker-compose.yaml https://raw.githubusercontent.com/MystenLabs/sui/main/docker/fullnode/docker-compose.yaml

IMAGE="mysten/sui-node:2698314d139a3018c2333ddaa670a7cb70beceee"
sed -i.bak "s|image:.*|image: $IMAGE|" $HOME/sui/docker-compose.yaml

wget -O fullnode-template https://raw.githubusercontent.com/MystenLabs/sui/main/crates/sui-config/data/fullnode-template.yaml

wget -O genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob

3-2-7. Fullnodeの起動

docker compose up -d

3-2-8. Nodeの確認

# Logの確認
docker compose logs -f

# Sui-node versionの確認
curl --location --request POST 127.0.0.1:9000 \
--header 'Content-Type: application/json' \
--data-raw '{ "jsonrpc":"2.0", "method":"rpc.discover","id":1}' 2>/dev/null | jq -r .result.info

# SyncしたTxsの確認
curl --location --request POST 127.0.0.1:9000 \
--header 'Content-Type: application/json' \
--data-raw '{ "jsonrpc":"2.0", "method":"sui_getTotalTransactionNumber","id":1}' 2>/dev/null | jq .result

4. NodeのUpgrade方法

SuiはTestnetのため、逐次Updateがあります UpdateしないとFullnodeとしては、Txsの同期やRPCとしてのEndpointとして機能しないためVersionをあげる必要があります

4-1. Rootユーザ (特権ユーザ)になる

sudo su -

cd $HOME

4-2. Nodeの停止

docker compose down -v

4-3. 新しいDockerファイルの更新

IMAGE="mysten/sui-node:<Discordの「node-announcements」で記載のあるVersion>"

sed -i.bak "s|image:.*|image: $IMAGE|" $HOME/sui/docker-compose.yaml

4-4. 新しいDocker imageのDownload

4-5. Fullnodeの起動

docker compose up -d

以上となります。 ぜひSuiのFullNodeを建てて、テストネットに参加していきましょう!

また、引き続きSuiでの開発者向けの記事も書いていきます!!