[Symbol]ラズパイでノードを運用してみよう(Client設定編)

Raspberry PiでSymbolのdualノードを構築、ハーベスト設定、HTTPS化、運用まで。
本記事ではClientにSymbolメインネットのノードの設定を行いハーベスト有効化までを扱います。
Client構築編：Clientインストールまで
Client設定編：ハーベスト設定まで <- 今ここ
Rest構築編：HTTPS化まで
メンテナンス編：HA構成、アップグレードetc

正攻法はやめた
===
github上のドキュメントにはひとつひとつ丁寧に設定していく方法が記載されています。
symbol-node-configuratorやsymbol-cliといったツールが必要です。

https://github.com/symbol/symbol/blob/dev/client/catapult/docs/RUNPEERLIN.md

本記事では別手法でsymbol-bootstrapをノードコンフィグ生成ツール、各種メンテナンスツールとして利用します。
このようなメリットがあります。
* symbol-bootstrapはコミュニティ有志による知見や情報が多い
* ノード構築に必要なツールはすべて揃っている
* その時のノード構成のプロパティの値が最適化されている

ノートPC上にbootstrapでノードを構築し構成ファイルをコピーする
===
ノートPCとそのPC上にUbuntuの仮想マシンを用意してください。
UbuntuにグローバルIPは不要です。ノードのリソース要件も無視して大丈夫です。
bootstrapによるノード構築方法は割愛します。
1. ubuntuにsymbol-bootstrapをインストール
2. お好みのcustom.ymlを用意し構築する ※ノードを稼働させる必要はありません

仮想マシン上の下記ディレクトリをラズパイ上の/tmp/配下にコピーします。
seed：/.../target/nodes/node/配下
cert：/.../target/nodes/node/配下
resources：/.../target/nodes/node/server-config/配下

構成ファイルを配置する
===
配置します。Clientインストール先は/home/ubuntu/としています。
```bash
cd /tmp/
cp -r seed /home/ubuntu/symbol/client/catapult/_build
cp -r cert /home/ubuntu/symbol/client/catapult/_build
cp resources/* /home/ubuntu/symbol/client/catapult/_build/resources
```
構成ファイルを編集する
===
構成ファイルは/home/ubuntu/symbol/client/catapult/_build/resourcesにあるファイル群です。
bootstrapとではディレクトリ構造が異なるため、その点を修正します。
また、その他確認すべきプロパティを見ていきます。
各プロパティの意味はこちらが参考になります。

https://docs.symbol.dev/ja/guides/network/configuring-node-properties.html

https://docs.symbol.dev/ja/guides/network/configuring-network-properties.html

```vim:config-database.properties
...
databaseUri = mongodb://127.0.0.1:27017
...
```
127.0.0.1にしておきます。※mongodbはRest構築編でインストールします。
```vim:config-harvesting.properties
harvesterSigningPrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
harvesterVrfPrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

enableAutoHarvesting = true
maxUnlockedAccounts = 50
delegatePrioritizationPolicy = Importance
beneficiaryAddress = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
ハーベスト設定です。
```vim:config-node.properties
...
host = <ラズパイノードのドメインまたはIP>
friendlyName = <任意のノードの名前>
version = 1.0.3.3
roles = Peer,Api
...
```
ノードの基本情報です。
```vim:config-user.properties
...
[storage]
seedDirectory = /home/ubuntu/symbol/client/catapult/_build/seed
certificateDirectory = /home/ubuntu/symbol/client/catapult/_build/cert
dataDirectory = /home/ubuntu/symbol/client/catapult/_build/data
pluginsDirectory = /home/ubuntu/symbol/client/catapult/_build/bin
votingKeysDirectory = /home/ubuntu/symbol/client/catapult/_build/votingkeys
```
ノード実行に必要な各種ファイルへのパスです。正しく設定してあげます。

ハーベスト有効化
===
ノートPC上のbootstrapに戻ります。有効化にするトランザクションをbootstrapを用いて発生させます。あらかじめ[Symbol Node List](https://symbol-tools.com/symbolTools/view/tool/nodeList.html)などを参照し、お好きなAPIノードのドメインをメモっておきます。
```bash
symbol-bootstrap link --url https://<メモったもの>:3001
```

試しに起動してみる
===
ラズパイに戻ります。
Catapult-Restを構築していないためPeerノードとして起動してみます。
```bash:/home/ubuntu/symbol/client/catapult/_build/bin
./catapult.server
```
エラーで異常終了せず、同期を始めたら成功です。
```bash
... peer returned 42 blocks (heights 2 - 43)
```
ctrl-cで停止です。/home/ubuntu/symbol/client/catapult/_build/data/に.lockファイルが残っている場合があるので.lockファイルは削除しておきます。