こんにちは、急にテストノードを建てたくなったので、建てました。
テストノードを量産したかったのでAnsibleを使いました。
本番では秘密鍵を安全に扱える方法を考えたり、セキュリティ対策をしっかりしないとですね。
※動かなくても責任は取れません…
この記事でやること
- 最小構成でsymbolテストノード構築
出来上がるノードの状態
- symbol-bootstrap, symbol-cliが入っています。
- バックグラウンド(systemd)でノードが立ち上がっています。
- 用意した秘密鍵を使ってハーベスティング準備ができます。
- ドメインを用意できればhttps化まで自動でできます。
- ポート制限(ufw)
- 22
- 80
- 443
- 3000
- 7900
- 7902
- conohaは3000円くらいのプランで動作確認済み
- スワップを作るといい感じに動きました。
アカウント準備
symbolのデスクトップアプリケーションをインストールして、テストネットに適当なアカウントを作成します。
作成したらfaucetからsymbol.xymを入手しましょう。
ボタンは連打可能ですが控えめにしておきましょう。また使い終わったら返却しましょうね。
サーバー準備
- 使うスクリプトの関係でUbuntu18.04利用前提です。
- 私はLightSail利用ですが、おそらくOSが同じで公開鍵認証できればどこでも良いです。マシンを使い捨てられるところで試しましょう。私は20回くらい作り直しました。
- メモリ4GB以上のマシンを利用しましょう。メモリが足りないとブロックの同期中に落ちます。
Ansibleインストール
ノードの設定
githubからテストノード構築用のスクリプトをダウンロードして設定しましょう。
# リポジトリをクローン
git clone https://github.com/keisukefunatsu/symbol-testnode-ansible
# コンフィグファイルサンプルをコピーする
cp config-sample.yml config.yml
config.yml
を以下のように編集します。
# あなたのノードのIPアドレスを入力してください。
server_host: "xxx.xxx.xxx.xxxx"
# あなたのノードのログインユーザ名を入力してください
server_user_name: "xxxxxx"
# ノードにSSHログインするためのキーが存在するパスを入力します。
# 大体~/.ssh以下にあるのではないでしょうか。
ssh_key_file_path: "~/.ssh/xxx.pem"
# テストノードを実行するためのユーザ名とグループ名を決めましょう。
node_user_name: "xxxxxx"
node_user_group: "xxxxxx"
docker_compose_version: 1.27.4
# あなたのノードの名前を書きましょう。
node_friendlyName: "my-awesome-node!"
# 必ずテストネット用の秘密鍵を使うこと!
# signing_privateKeyの行を削除すると新しい秘密鍵が生成されるので心配なら空にしてもOK!
signing_privateKey: "xxxxxxxxxxx"
# こちらも空でもOKです。
vrf_signing_privateKey: "xxxxxxxxxxx"
# メモリ不足で落ちるパターンがあったので4GBくらいスワップを作っておきます。
swap_file_size_mb: '4096'
# ドメインを持っている場合はこちらにドメイン名とlet's encryptからのメールの受取先を入力しておくと自動でhttps化してくれます。
# letsencrypt_email: "youremailaddress@example.com" # To receive email from let's encrypt
# domain_name: "example.com" # Domain name to be https
構築
ここまで準備できたら以下のコマンドを叩いてテストノードを構築しましょう。
ansible-galaxy install geerlingguy.swap
ansible-playbook -i hosts.yml playbook.yml
成功すると以下のようにok
とchanged
だけがステータスに表示されるはずです。
https化した場合はこんな感じでドメインを入れてノードの状態確認ができます。
https://example.com/node/info
https://example.com/chain/info
ハーベスティングの準備
ここからはサーバーにログインしての作業です。
-
ノードのブロック同期が完了するまで待ちましょう。
- 同期の完了確認は
curl http://localhost:3000/chain/info
を打って出力された内容の"height"の項目がここで確認できる最新のものと一致しているか確認してください。
- 同期の完了確認は
-
同期が完了したら最後に以下のコマンドを打ちます
symbol-bootstrap link
以上です、アカウント情報を見に行くとimportanceの項目が追加されているはずです。
あとは狂タヌ尊様の記事のようにハーベスティングされるのを待つだけです。
https://nemlog.nem.social/blog/50604
ノードは以下の一覧に出てきます。
https://symbolnodes.org/nodes_testnet/
確認コマンドなど
- このノード用のもの
# 稼働状況とノードのログなんかが見れます。
sudo systemctl status symbol-testnet.service
# ↑のコマンドでノードが死んでいたら打ってみましょう。
sudo systemctl restart symbol-testnet.service
- symbolのもの
# ノードが正常に稼働しているか調べます
symbol-bootstrap healthCheck
# ノードの名前とかがわかります。
curl http://localhost:3000/node/info
# ブロック高なんかがわかります。
curl http://localhost:3000/chain/info
教えて下さい
- 作成したノードがノードリストに出てこないのなんでなんでしょう?他にやるべきことがあるのか…
- 全然まだハーベストが始まってません…