symbol-bootstrapアプデ方法（ローカルインストール）

# 既存のaddresses.ymlの復号

- 必要があれば、復号したファイルを保持しておく

   参考：[symbol-nodeで node passwordが通らなくなった](https://qiita.com/dusanjp/items/67f5099ec351e5eefa6f)

```bash
symbol-bootstrap decrypt --password 1234 --source target/addresses.yml --destination plain-addresses.yml
```

# symbol-bootstrapのアップデート

現状、NPMで公開されているsymbol-bootstrapはシンジケートがメンテをしているものではない（コミュニティー有志）らしい。なので、メンテナーに連絡をしているが、連絡が取れずアップデートできないでいるようです（4/7 現在）

なので、適当なフォルダを作成して、その中で`シンジケート`のgithubより直接ソースコードを取得、ビルド、ローカルインストールを行います。

```bash
mkdir src
cd src
git clone https://github.com/symbol/symbol-bootstrap.git
cd symbol-bootstrap
# タグをチェックアウト
git checkout -b v1.1.11 refs/tags/v1.1.11
npm ci
npm run build
# 古いsymbol-bootstrapをアンインストール
npm uninstall -g symbol-bootstrap
# 新しいsymbol-bootstrapをインストール
npm install -g .
```

# アプデ前

```bash
symbol-bootstrap -v
symbol-bootstrap/1.1.10 linux-x64 node-v20.11.0
```

# アプデ後

```bash
symbol-bootstrap -v
symbol-bootstrap/1.1.11 linux-x64 node-v20.11.0
```

バージョンがv1.1.11になっていればOKです。

あとは通常のアプデと同じ手法でノードをアプデしてください。

# おまけ

```bash
symbol-bootstrap start --upgrade -c custom-preset.yml -d
```

```bash
docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED         STATUS                            PORTS                                                                        NAMES
97c6ce9da885   symbolplatform/symbol-server:gcc-1.0.3.7   "/bin/bash /symbol-c…"   5 seconds ago   Up 4 seconds                      0.0.0.0:7900->7900/tcp, :::7900->7900/tcp                                    node
f8b185fbbf46   steveltn/https-portal:1.23.1               "/init"                  5 seconds ago   Up 4 seconds (health: starting)   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:3001->443/tcp, :::3001->443/tcp   https-proxy
adbc845fd1e7   symbolplatform/symbol-server:gcc-1.0.3.7   "/bin/bash /symbol-c…"   5 seconds ago   Up 4 seconds                                                                                                   broker
10f5dbc2a13e   symbolplatform/symbol-rest:2.4.4           "npm start --prefix …"   5 seconds ago   Up 4 seconds                      0.0.0.0:3000->3000/tcp, :::3000->3000/tcp                                    rest-gateway
e2a5129b1b71   mongo:6.0.14                               "docker-entrypoint.s…"   6 seconds ago   Up 5 seconds                      27017/tcp                                                                    db
```

```bash
curl localhost:3000/node/server

{
	"serverInfo": {
		"restVersion": "2.4.4",
		"deployment": {
			"deploymentTool": "symbol-bootstrap",
			"deploymentToolVersion": "1.1.11",
			"lastUpdatedDate": "2024-04-06"
		}
	}
}
```

===追記===

# DBが起動しない

DBが起動しない場合があります。
原因は不明ですが、手持ちサーバーはではDBが90%くらいの確率で起動しませんでした。

# アーカイブから復元

以下のスクリプトをtargetフォルダ内において実行すれば自動的にアーカイブからデータを取得して復元してれます。

```bash
#!/bin/bash

download_databases(){
  wget https://symbol-archive.opening-line.jp/mainnet/mainnet.databases.tar.gz
  tar xvf mainnet.databases.tar.gz
}
download_data(){
  wget https://symbol-archive.opening-line.jp/mainnet/mainnet.data.tar.gz
  tar xvf mainnet.data.tar.gz

}

read -p "バックアップから復元処理を実行します。ほんとによろしいですか? (y/N): " yn
case "$yn" in [yY]*) ;; *) echo "処理を中止しました。" ; exit ;; esac

echo "処理を実行します"

symbol-bootstrap stop

rm -fr mainnet.databases.tar.gz
rm -fr mainnet.data.tar.gz

cp target/nodes/node/data/harvesters.dat .

symbol-bootstrap resetData

download_databases &
download_data &

wait

mv databases target/
mv data target/nodes/node/
cp harvesters.dat target/nodes/node/data

symbol-bootstrap run -d
```

# 実行

```bash
chmod +x recover.sh
./recover.sh
```


:::note warn
この記事は個人の見解であり所属する組織を代表しません。
:::