Symbol node 起ち上げ（ふりーはんど版）【"b" にも対応してます】

Symbol node を symbol-bootstrap を利用して手動で起ち上げたい人向け

# Symbol-bootstrap を動作させる環境を作る

※この部分は　手入力で動作環境を構築する方法を述べています
自動で環境構築を行う "b" を使用すると
[Symbol node の ｽﾀｰﾄ](https://qiita.com/dusanjp/items/7410700885deea0f5b0b#symbol-node-%E3%81%AE-%EF%BD%BD%EF%BE%80%EF%BD%B0%EF%BE%84b-%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%93%E3%81%93%E3%81%8B%E3%82%89)から始める事ができます
[【"b" Symbol bootstrap 動作環境 自動構築 shellscript（ﾍﾞｰｽ構築）】](https://qiita.com/dusanjp/items/505bf4f3598c7dd90461)

今回は t4vps c8ﾌﾟﾗﾝを使用
※仮起ち上げの為ｽﾍﾟｯｸが低いﾌﾟﾗﾝを使用しています　実際は c16+faster ssd ｵﾌﾟｼｮﾝ以上でまともに動作します
若しくは　相応のｽﾍﾟｯｸ の vps を使用して下さい

ここでは user名を test8
IPｱﾄﾞﾚｽは 212.24.106.178
sshdﾎﾟｰﾄ は 22 から 123 へ変更とする
※（この記事では 123 としてますが 1023 迄はｼｽﾃﾑが使用しているので
1024~65535 の間にして下さい）
とする

各自で変更して作業して下さい


teratermを開き rootに sshdﾎﾟｰﾄ 22/root のﾊﾟｽﾜｰﾄﾞでﾛｸﾞｲﾝ
又は
windowsなら ｺﾏﾝﾄﾞﾌﾟﾛﾝﾌﾟﾄから
linuxなら　端末から
```
ssh root@212.24.106.178
```
`ssh root@ｻｰﾊﾞの IPｱﾄﾞﾚｽ`
ﾊﾟｽﾜｰﾄﾞを聞かれるので　ｻｰﾊﾞの ﾊﾟｽﾜｰﾄﾞを入力して　ｻｰﾊﾞに ﾛｸﾞｲﾝ
　

新しい user を作成

    adduser test8
　
新しい user に sudo権限を付与

    gpasswd -a test8 sudo
　
sshd port を変更する

    vi /etc/ssh/sshd_config

"i" と打つと　入力が出来る様になります

![sshd_config1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/b7e46f99-2b05-d199-1f69-46dcfbd3e1ad.png)
これを
![sshd_config3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/0e0f22e8-3c87-a773-f8b9-5cccb76620e3.png)
こうします

変更の入力が終わったら　[esc]を押下　":wq" と打って下さい　変更が保存されます
※！注意！　上記の作業後は root と root ﾊﾟｽﾜｰﾄﾞ では ﾛｸﾞｲﾝ出来なくなります
この作業後は　新規で作成した sshd port/ｱｶｳﾝﾄ/ﾊﾟｽﾜｰﾄﾞ でのみ ﾛｸﾞｲﾝ可能です
　
sshd_config の変更を反映させる

    systemctl restart sshd
　
ufw ｲﾝｽﾄｰﾙ

    apt-get install ufw
　
sshd port を開く

    ufw allow 123/tcp
　
ufw を有効にする

    ufw enable
　
ufw の状態を確認する

    ufw status
![ufw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/19e70e5d-2413-1909-0a3a-6512ec9b4cf8.png)

　
docker ｲﾝｽﾄｰﾙ

    curl https://get.docker.com | sh
　
user に docker 実行権限を付与

    usermod -aG docker test8
　
docker 起動　

    systemctl start docker
　
docker を常時起動させる

    systemctl enable docker
　
docker のﾊﾞｰｼﾞｮﾝ確認

    docker --version
　
docker-compose ｲﾝｽﾄｰﾙ

    curl -L https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
　
docker-compose の実行権限の付与

    chmod +x /usr/local/bin/docker-compose
　
docker-compose のﾊﾞｰｼﾞｮﾝ確認

    docker-compose --version
　
node.js ｲﾝｽﾄｰﾙ

    curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
　

    apt-get install -y nodejs
　
node.js のﾊﾞｰｼﾞｮﾝ確認

    node -v
　
npm のﾊﾞｰｼﾞｮﾝ確認

    npm -v
　
jq ｲﾝｽﾄｰﾙ

    apt-get install jq

 
はい！
ここまでで　symbol-bootstrap を 動作させる環境は 出来上がりました
この後からは 別に teraterm又は ｺﾏﾝﾄﾞﾌﾟﾛﾝﾌﾟﾄ/端末 を開いて　node の構築を行います
-

# ！！！！！注意！！！！！
※まだ root で ﾛｸﾞｲﾝ している方の teraterm又は ｺﾏﾝﾄﾞﾌﾟﾛﾝﾌﾟﾄ/端末 は　閉じないで下さい
teraterm を 新しい sshd ﾎﾟｰﾄ/user/ﾊﾟｽﾜｰﾄﾞで ﾛｸﾞｲﾝする

又は ｺﾏﾝﾄﾞﾌﾟﾛﾝﾌﾟﾄ/端末から
```
ssh -p 123 test8@212.24.106.178
```
`ssh -p 設定したﾎﾟｰﾄ番号 設定したuser名@設定したuserのﾊﾟｽﾜｰﾄﾞ`
ﾊﾟｽﾜｰﾄﾞを聞かれるので 新しく作成した user "test8"の ﾊﾟｽﾜｰﾄﾞを入力して ﾛｸﾞｲﾝ
　

ﾛｸﾞｲﾝ 出来たら こちらへ
[【symbol-bootstrap を使って node の構築をする】](https://qiita.com/dusanjp/items/7410700885deea0f5b0b#symbol-bootstrap-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-node-%E3%81%AE%E6%A7%8B%E7%AF%89%E3%82%92%E3%81%99%E3%82%8B)

　
↓↓↓新しく作成した sshd ﾎﾟｰﾄ/user/ﾊﾟｽﾜｰﾄﾞで ﾛｸﾞｲﾝ 出来ない時↓↓↓
-
※ sshd port の番号によっては ﾛｸﾞｲﾝ出来なくなる場合があります
その場合は　root で ﾛｸﾞｲﾝ 中の ｻｰﾊﾞで 以下 "re" を実行すると sshd port の設定を変更出来ます
ﾃﾞｨﾚｸﾄﾘ は どこにいても 実行出来ます

# sshd port 再設定 script "re"

    vi re
　
"i" と打って 以下をｺﾋﾟﾍﾟして下さい

    ufw reset
    #new sshd port
    echo "going to set new sshd port setting"
    echo "??? please input new sshd port ???"
    read sshd
    #----------
    echo "now remakeing new sshd setting..."
    
    #sshdset
    sed -i -e s/".*Port .*"/"Port $sshd"/ /etc/ssh/sshd_config
    systemctl restart sshd
    
    #ufwset
    ufw allow $sshd/tcp
    ufw enable
    
    echo "now reset sshd port to" $sshd
"ESC" を押して　編集ﾓｰﾄﾞ終了
":wq" を入力 "ENTER" で保存終了
　
"re" を実行します

    sh re

下図の様に 入力を進めて下さい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/fe636d81-cedd-ab72-3d13-1990bb4faf7a.png)

これで sshd port の変更が完了します　user名 と ﾊﾟｽﾜｰﾄﾞの変更はありませんので
sshd port だけを変えて ﾛｸﾞｲﾝを試して下さい
新しい user で ﾛｸﾞｲﾝ 出来た時点で rootでﾛｸﾞｲﾝしていた方は閉じて下さい
　

# Symbol node の ｽﾀｰﾄ（"b" を使用した場合　ここから）
["b" symbol-bootstrap 動作環境構築 shellscript は こちら](https://qiita.com/dusanjp/items/505bf4f3598c7dd90461)

# [☆おまけ☆node を ｽﾀｰﾄしてみた！　実況だぞ](https://twitter.com/dusanjp/status/1513077380201730054)
# symbol-bootstrap を使って node の構築をする
ここからは root で無く新しい sshd port/user/ﾊﾟｽﾜｰﾄﾞで ﾛｸﾞｲﾝして作業します


symbol-bootstrap ｲﾝｽﾄｰﾙ

:::note alert
現在は以下の命令では旧ﾊﾞｰｼﾞｮﾝの symbol-bootstrapが installされてしまいます
```
sudo npm install -g symbol-bootstrap
```
:::

:::note info
**現在の symbol-bootstrapの install**
```
cd
git clone https://github.com/symbol/symbol-bootstrap
cd symbol-bootstrap
npm install
npm run build
sudo npm install -g .
cd
```

:::

上記 symbol-bootstrapの現在の install方法についての詳細は以下を参照

https://qiita.com/dusanjp/items/eb4b47397c5509677dde

　
作業ﾃﾞｨﾚｸﾄﾘの作成

    mkdir symbolNode
　
作業ﾃﾞｨﾚｸﾄﾘに入る

    cd symbolNode
　

 
custom.yml の作成

    vi custom.yml
"i" で入力開始
ｻｰﾊﾞ の IP に対応する ﾄﾞﾒｲﾝ が 判らない時は ①
ﾄﾞﾒｲﾝ が 判った時は ② を ｺﾋﾟﾍﾟ して保存して下さい
# ① custom.yml の内容（https 無し用）
こちらは https 無しの場合の ｺﾋﾟﾍﾟ 内容です
ｻｰﾊﾞ の IP に対応する ﾄﾞﾒｲﾝ が どうしても判らない時は　こちらを ｺﾋﾟﾍﾟして下さい
以下をｺﾋﾟﾍﾟして保存　保存方法は ":wq"(enter) 保存せずに終了は ":q!"(enter)

    nodes:
        -
            host: 212.24.106.178
            friendlyName: test8

            maxUnlockedAccounts: 100
            transactionSelectionStrategy: oldest
            minFeeMultiplier: 10
            beneficiaryAddress:
 
            maxChainBytesPerSyncAttempt: 50MB
            messageSynchronizationMaxResponseSize: 5MB
            blockDisruptorMaxMemorySize: 1000MB

※ hostの "212.24.106.178" の部分は　自分の vps の IP address を使用して下さい
※ friendlyName の "test8" の部分は　自分が付けたい名前にして下さい
# ② custom.yml の内容（https あり用）
こちらは https ありの場合の ｺﾋﾟﾍﾟ 内容です
ｻｰﾊﾞ の IP に対応する ﾄﾞﾒｲﾝ が 判った場合は　こちらを ｺﾋﾟﾍﾟ して下さい
以下をｺﾋﾟﾍﾟして保存　保存方法は ":wq"(enter) 保存せずに終了は ":q!"(enter)

    nodes:
    -
        host: ﾄﾞﾒｲﾝ
        friendlyName: test8

        maxUnlockedAccounts: 100
        transactionSelectionStrategy: oldest
        minFeeMultiplier: 10
        beneficiaryAddress: 

        maxChainBytesPerSyncAttempt: 50MB
        messageSynchronizationMaxResponseSize: 5MB
        blockDisruptorMaxMemorySize: 1000MB

    httpsProxies:
        -
            excludeDockerService: false

ｻｰﾊﾞ のIP に対応する ﾄﾞﾒｲﾝ が判らない時は下記の ｻｲﾄで確認する事が出来ます
[ドメイン/IPアドレス サーチ 【whois情報検索】](https://www.cman.jp/network/support/ip.html)

※上記の ﾌｧｲﾙ は 記述の 1例 です
ﾌｧｲﾙ の 中にある 行（項目）で

○ maxUnlockedAccounts: 100
○ transactionSelectionStrategy: oldest
○ minFeeMultiplier: 10
○ beneficiaryAddress:

↑ これらの項目は　御自分で任意の値に書き換える事が出来ます 
他にも　いろいろ記述出来る項目があります
探して見て下さい

# target作成
ここは　testnetは①　mainnetは②を実行して下さい

① testnet の場合

    symbol-bootstrap config -p testnet -a dual -c custom.yml
　
② mainnet の場合

    symbol-bootstrap config -p mainnet -a dual -c custom.yml
![config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/e038d0e5-3e69-40be-02ff-bceb3e970c76.png)

※ここで　ﾊﾟｽﾜｰﾄﾞの入力を求められますので
自分が考えた　ﾊﾟｽﾜｰﾄﾞを入力して下さい
ここで入力した　ﾊﾟｽﾜｰﾄﾞは　設定変更時等に毎回聞かれます　忘れない様にして下さい

　
compose 実行

    symbol-bootstrap compose
![compose.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/56f25dac-cac8-0011-82c1-ce1f74729eb0.png)

　
bootstrap のｽﾀｰﾄ

    symbol-bootstrap run -d
　
起動できたかを確認する

    symbol-bootstrap healthCheck
![health.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/aab79e20-9c35-d245-fa63-16c53ad8f8b2.png)

　
node情報 の確認

    curl localhost:3000/node/info|jq
![nodeinfo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/f85a2a9c-69bd-6b57-de64-53f7eb030a94.png)


height の確認

    curl localhost:3000/chain/info|jq
![height.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582454/9afb80e0-fccd-7b80-fedb-5e2fa09c0d31.png)

node address の確認

    symbol-bootstrap decrypt --source target/addresses.yml --destination d_addresses.yml
　
d_addresses.yml と言う名前の ﾌｧｲﾙが作成されます

    cat d_addresses.yml

内容が表示されます　main の 項目は重要です
　

内容をｺﾋﾟｰ　外部に保存したら　削除して下さい

    rm -f d_addresses.yml

ここまで出来たら　もう　Symbol Node は動作しています
https化や　他の設定方法は
検索で出てくると思いますので

順繰りにﾏｽﾀｰして行けば良いでしょう

# symbol-bootstrap に ｱｯﾌﾟﾃﾞｰﾄがあった時
Symbol-bootstrap の ｱｯﾌﾟﾃﾞｰﾄがあるかは
https://github.com/nemtech/symbol-bootstrap
をﾁｪｯｸして下さい

Symbol-bootstrap の ｱｯﾌﾟﾃﾞｰﾄ方法
作業ﾃﾞｨﾚｸﾄﾘに入る（ここでは symbol-bootstrap）

    cd symbol-bootstrap
    symbol-bootstrap stop
　
target ﾃﾞｨﾚｸﾄﾘの ﾊﾞｯｸｱｯﾌﾟを取る事をお薦めします

    symbol-bootstrap stop
    cp -r target target.bak
    symbol-bootstrap run -d

symbol-bootstrapの更新と再起動（2024.08.21変更）

:::note alert

~~symbol-bootstrap の更新〜ｽﾀｰﾄ（mainnet の場合）~~
以下の命令は現在使用すると　古い ver.が ｲﾝｽﾄｰﾙされてしまいます

    symbol-bootstrap stop
    sudo npm install -g symbol-bootstrap
    symbol-bootstrap start -p mainnet -a dual -c custom.yml --upgrade -d
    
:::

:::note info
**symbol-bootstrapの更新　node再起動（mainnetの場合）**
こちらの手順を使用して下さい
```
symbol-bootstrap stop
cd
rm -rf symbol-bootstrap
git clone https://github.com/symbol/symbol-bootstrap
cd symbol-bootstrap
npm install
npm run build
sudo npm install -g .
cd ~/symbolNode
symbol-bootstrap start -p mainnet -a dual -c custom.yml --upgrade -d
```
:::

これで symbol node の ｱｯﾌﾟﾃﾞｰﾄ 作業は終了です

※2024.04に symbol-bootstrapの更新及び ｲﾝｽﾄｰﾙ手順に変更があった為　修正しました