2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Build All (ball-u1)(ball-u2) サーバがあったらすぐ SYMBOLノード!(既にサーバに userAccountがあるサーバ用)

Last updated at Posted at 2024-09-03

※このシェルスクリプトは、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 
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?