※このシェルスクリプトは、contabo vps1 OS:ubuntu 22.04 での動作確認をしています。
ログインする時に開く端末又は、コマンドプロンプトは、画面を広くすると、見やすいです。
サーバに userAccountでログイン。
ログインしたばかりのその場所、ホームディレクトリから
wget b.dusanjp.com/ball/ball-u1
シェルスクリプトball-u1
をダウンロード。
sh ball-u1
シェルスクリプトball-u1
を起動。
後は表示にしたがって操作して行って下さい。
symbolDualNodeが起動します。
シェルスクリプト ball-u1
の内容
#!/bin/bash
#開始の表示
echo
echo "***********************************"
echo "* symbolノード起動スクリプト 'Build-All' 環境構築 *"
echo "***********************************"
echo
#サーバのIPアドレスの取得
ip=$(curl ifconfig.me)
echo
echo "このサーバの 'IP' は "$ip" です。このサーバにログインする際は、この 'IP' を使用して下さい。"
echo
echo "***ノードを建てる為の環境を構築します。(少し時間が掛かります).......***"
#dockerのインストールとその権限のあたらしいユーザへの付与
echo
echo "dockerをインストールして、ユーザに権限の付与をしています。"
echo
echo "次に停止して、入力待ちになった時に、パスワードの入力を求められます。"
echo "現在のユーザアカウントのログインパスワードを入力して、[ENTER]を押して下さい。"
curl https://get.docker.com | sh
sudo usermod -aG docker $USER
sudo systemctl start docker
sudo systemctl enable docker
docker --version
echo
echo "docker-composeをインストールして、ユーザに権限の付与をしています。"
#docker-composeのインストールとその権限のあたらしいユーザへの付与
sudo curl -L https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
#dockerの再起動
echo
echo "dockerの設定を有効にする為に、dockerを再起動しています。"
sudo systemctl restart docker
#node jsのインストール
echo
echo "node.jsをインストールしています。"
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g npm
node -v
npm -v
#jqのインストール
echo
echo "jqをインストールしています。"
sudo apt-get install -y jq
#ユーザ上で使用する aliasの設定
echo
echo "主に使用する命令を簡略化する alias を設定しています。"
cd
mv .bashrc_bak .bashrc
cp .bashrc .bashrc_bak
cat << __EOD__ >> .bashrc
alias run="symbol-bootstrap run -d"
alias stop="symbol-bootstrap stop"
alias hc="symbol-bootstrap healthCheck"
alias ci="curl localhost:3000/chain/info|jq"
alias ni="curl localhost:3000/node/info|jq"
alias np="curl localhost:3000/node/peers|jq"
alias nu="curl localhost:3000/node/unlockedaccount|jq"
alias ns="curl localhost:3000/node/server|jq"
alias nep="curl localhost:3000/network/properties|jq"
alias nef="curl localhost:3000/network/fees/rental|jq"
alias up="docker-compose up -d"
alias down="docker-compose down"
alias dp="docker ps"
alias od="od -L target/nodes/node/data/index.dat | awk 'BEGIN{}{print $2}'"
alias pn="cat target/nodes/node/server-config/resources/*node*"
alias ph="cat target/nodes/node/server-config/resources/*har*"
alias pf="cat target/nodes/node/server-config/resources/*fin*"
alias nm="curl localhost:3000/node/metadata|jq"
alias nginxstart="sudo systemctl start nginx"
alias nginxstop="sudo nginx -s quit"
alias nginxstatus="systemctl is-active nginx"
alias nch="curl localhost:7890/chain/height|jq"
alias nni="curl localhost:7890/node/info|jq"
alias nnm="curl localhost:7880/nr/metaData|jq"
alias nstop="sudo pkill -SIGTERM -f org.nem"
__EOD__
#githubからの symbol-bootstrapのダウンロードとそのインストール
echo
echo "symbol-bootstrapを githubからダウンロードしています。"
rm -rf symbol-bootstrap
git clone https://github.com/symbol/symbol-bootstrap
echo
echo "symbol-bootstrapをインストールしています。"
cd symbol-bootstrap
npm install
npm run build
sudo npm install -g .
echo "インストールした symbol-bootstrapのバージョンを表示します。"
symbol-bootstrap -v
cd
wget b.dusanjp.com/ball/ball-u2
echo "***ノードを建てる為の環境設定が完了しました。***"
echo "'exit[ENTER]'と入力して、一旦、このサーバからログアウトして、このサーバに再ログイン後、"
echo "ホームディレクトリから、 'sh ball-u2' と命令して下さい。"
echo "ball-u2では、ノードを建てる作業を行います。"
シェルスクリプト ball-u2
の内容
#!/bin/bash
#開始の表示
echo
echo "***********************************"
echo "* symbolノード起動スクリプト 'Build-All' ノード起動 *"
echo "***********************************"
echo
#サーバのIPアドレスの取得
ip=$(curl ifconfig.me)
#ノードの名称の設定
echo
echo "***symbolノードの作成の為の設定をします。***"
echo "symbolノードに付ける名称 'friendlyName' を入力して下さい。"
read friendlyname
echo "ノード設定の 'friendlyName' 設定には、'"$friendlyname"' を設定します。"
#サーバのIPアドレスの表示
echo
echo "このサーバの IP は、'"$ip"' です。ノードの 'host' 設定には、この IP '"$ip"' を設定します。"
#ノードの networkの設定
echo
echo "ノードの network を選択して下さい。networkは、'testnet' と、'mainnet' があります。"
echo "'m' を入力して[ENTER]で、mainnet になります。"
echo "それ以外の文字を入力して[ENTER]で、testnet になります。"
read a
if [ $a = "m" ]; then
network="mainnet"
else
network="testnet"
fi
echo "ノードの 'network' 設定には、'"$network"' を設定します。"
echo
echo "***次に、ノードを作成します。***"
echo "続けるには、[ENTER]を押して下さい。"
read a
#ノードの動作用ディレクトリ”symbolNode”の作成
echo
echo "ノード動作用のディレクトリ'symbolNode'を、'"$(pwd)"' ディレクトリに作成しています。"
rm -rf symbolNode
mkdir -p symbolNode
cd symbolNode
#ノード設定ファイル”custom.yml”の作成
echo "ノード設定ファイル 'custom.yml' を、'symbolNode' ディレクトリの中に作成しています。"
cat <<EOF > custom.yml
assembly: dual
preset: $network
nodes:
-
host: $ip
friendlyName: $friendlyname
#voting: (デフォルトでは false 有効にする場合は true)
#beneficiaryAddress: (デフォルトでは mainAccountのアドレス)
#maxUnlockedAccounts: (デフォルトでは 10)
#minFeeMultiplier: (デフォルトでは 100)
#以下の4行はあらかじめノードアドレスを決める時に秘密鍵を設定する
mainPrivateKey: #mainの秘密鍵
transportPrivateKey: #transportの秘密鍵
remotePrivateKey: #remoteの秘密鍵
vrfPrivateKey: #vrfの秘密鍵
#httpsを有効にする為には以下の3行の"#"を削除して下さい。hostにドメインが設定されている事が必要です。
#httpsProxies:
# -
# excludeDockerService: false
EOF
#ノード設定ファイルの表示と説明
echo
echo "***以下に表示するものは、ノード設定ファイル 'custom.yml' の内容です***"
echo
echo "---ノードの設定ファイル 'custom.yml' ここから---"
cat custom.yml
echo "---ノードの設定ファイル 'custom.yml' ここまで---"
echo
echo "ノードの設定を変更する際には、このファイル 'custom.yml' を変更して下さい。"
echo "このノード設定ファイルは、'symbolNode/custom.yml' にあります。"
echo "'custom.yml' の変更は、"
echo "'cd symbolNode' で、作業ディレクトリ 'symbolNode' に入って、"
echo "'symbol-bootstrap stop' で、ノードを停止させてから、"
echo "'vi custom.yml' で、編集、変更を保存して下さい。"
echo "'symbol-bootstrap start -c custom.yml --upgrade -d' で、変更がノードに反映します。"
echo
echo "***これから、ノードを開始します。続けるには、[ENTER]を押して下さい。***"
read a
#一括でノードを開始
echo
echo "***ノードを開始しています。***"
echo "ノードを操作する際に入力するパスワードを設定します。パスワードを入力したら、[ENTER]を入力して下さい。"
echo "パスワードを入力せずに[ENTER]でも構いませんが、その際はノードの固有アドレスの秘密鍵は暗号化されません。"
symbol-bootstrap start -c custom.yml -d
#ノードの起動確認
echo
echo "***ノードの起動状態を確認しています。***"
symbol-bootstrap healthCheck
echo
echo "以上は、'cd symbolNode'"
echo "'symbol-bootstrap healthCheck' で、表示出来ます。"
echo
echo "***ノードが正常に動作を始めました。***"
echo "次に、ノードの現在のブロック高を表示します。"
echo "続けるには、[ENTER]を押して下さい。"
read a
curl localhost:3000/chain/info|jq
echo
echo "以上は、'curl localhost:3000/chain/info|jq' で、表示出来ます。"
echo "次に、ノードの情報を表示します。"
echo "続けるには、[ENTER]を押して下さい。"
read a
curl localhost:3000/node/info|jq
echo
echo "以上は、'curl localhost:3000/node/info|jq' で、表示出来ます。"
echo
echo "***ノードは開始しました。***"
echo "次に、ノードの固有アドレスを表示します。"
echo "続けるには、[ENTER]を押して下さい。"
read a
#ノードアドレスの表示
echo
echo "以下に表示するものは、ノードの固有アドレスを記録した、'addresses.yml' の内容です。"
echo "このノード固有アドレスファイルは、'symbolNode/target/addresses.yml' にあります。"
echo "---ノードの固有アドレス 'addresses.yml' ここから---"
cat target/addresses.yml
echo "---ノードの固有アドレス 'addresses.yml' ここまで---"
echo
echo "次に、ノードの状態の確認と、ノードの操作の主な方法を説明します。"
echo "続けるには、[ENTER]を押して下さい。"
read a
#ノードの状態の確認や操作する主な命令の説明
echo
echo "ノードの状態を確認するには、"
echo "① ノードの名前等を見るには、"
echo "curl localhost:3000/node/info|jq"
echo
echo "② ノードの同期状態を見るには、"
echo "curl localhost:3000/chain/info|jq"
echo
echo "③ ノードの接続状態を見るには、"
echo "curl localhost:3000/node/peers|jq"
echo
echo "④ ノードの健康状態を見るには、"
echo "symbol-bootstrap healthCheck"
echo "又は、"
echo "curl localhost:3000/node/health|jq"
echo
echo "⑤ ノードの委任状態を見るには、"
echo "curl localhost:3000/node/unlockedaccount|jq"
echo
echo "⑥ ノードを停止するには、"
echo "cd symbolNode"
echo "symbol-bootstrap stop"
echo
echo "⑦ ノードを開始するには、"
echo "cd symbolNode"
echo "symbol-bootstrap run -d"
echo
echo "⑧ノードのブロックデータを削除して同期をやり直すには、"
echo "cd symbolNode"
echo "symbol-bootstrap resetData"
echo
echo "以上のコマンドを命令して下さい。以上が主なノードを扱う方法です。"
#次回以降にログインする際のログイン方法の表示
echo
echo "***これで、ノード作成と起動作業は、完了しました。***"
echo "ノードの作業ディレクトリは '/home/"$USER"/symbolNode' にあります"
echo
echo "おつかれさまでした!これで、ノードの起動スクリプトは、終了します。"
echo