初めに。

こんにちは。

(コストの都合上)dHealthノードの移転をすることにしました。

ほぼ自分用の覚書になるかもしれませんが、その手続きについて記載しておきます。

サーバーのログイン設定などのセキュリティ設定は除外します。あくまでも、dHealthノードの構築と引っ越しをメインとします。

また、そんな難しい話があるわけではありません。

新規構築について、元々の手順はこんな感じでまとめられています。

対象となるOSはUbuntu 22.04。

rootユーザーとは別に、ノードの実行用ユーザーを用意しています。


使用するポートについて。

最初に使用するポートを記載しておきます。前もってポート開放をしておきます。

3000API用。
7900ノード通信用。
3001API用(HTTPS)
80https-portalで使う予定。
443https-portalで使う予定。

インストール。

基本的にインストールはrootで行います。

インストール用スクリプトをダウンロードする。

下記コマンドを実行し、インストールに必要なスクリプトのダウンロードを行います。

curl -fsSL https://yourdlt.tools/files/install-requirements.sh -o install-requirements.sh

下記のようなファイルがダウンロードされます。

必要なものをすべてインストールする。

以下のものをインストールすればよいようです。。。古くない?

下記コマンドを実行します。

sh install-requirements.sh

Node.jsが古いとかワーニングがいくつか言われますが、dockerなどはこれで導入しました。

この時、

とかって出てきます。

ここで問題があって、

・導入されるNode.jsが14であり古い。

・この警告で登場しているseup_Xがそもそも推奨されていない。

っぽいようです。まぁ、手が入っていないね、ということで。。

こちらを回避します。

まず、不要のため、Node.jsを削除します。

apt-get purge nodejs &&\
rm -r /etc/apt/sources.list.d/nodesource.list &&\
rm -r /etc/apt/keyrings/nodesource.gpg

GPGキーというのをよっこらせ。

apt-get update
apt-get install -y ca-certificates curl gnupg
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

debリポジトリの作成。

NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

※バージョンは20を指定しています。

最後に

apt-get update
apt-get install nodejs -y

を実行します。

とりあえず20が導入されました。

これでいいのか……?

yourdltのインストール。

dhpのノードはyourdltというのでセットアップしていきます。

下記のコマンドでインストールを行います。

npm i -g yourdlt
cd /opt/dhealth

終わり次第、下記コマンドでバージョンを確認します。

yourdlt -v

導入されているようです。


dHealthノードのセットアップ(実行確認まで)。

rootでの実行は避けられるのであれば避けたいため、ノード実行用のユーザーを作成し、dockerのグループへ追加します。

ユーザをdockerグループへ追加する方法はこちら

その後、ノード実行用のユーザーでログインします

ノードを展開する好きなディレクトリを用意します。

今回、Symbol側と合わせてplatformとしました。

mkdir platform
cd platform

次にdHealthノードのセットアップを行います。

本来はいくつか設定をするのですが、設定情報は与えず、手っ取り早く実行することとします。

yourdlt config -p dhealth -t node -a dual

このコマンドにおける、-tの後に続くものがノードの実行環境になります。
このディレクトリの下にノードの情報が保存されていきます。

セットアップが実行されました。ここでパスワードが求められています。
秘密鍵等を暗号化するためのパスワードになります。もちろん、忘れないほうがいいですね。

こんな感じでログが表示されていき、進んでいきます。そのまましばらく待ちます。

これで設定情報が完了しました。

実行ディレクトリに

が作成されていることが確認できます。

なお、設定を行わずにセットアップした理由ですが、ノードを建てるにあたって、

  • mainPublicKey
  • transportPrivateKey
  • remotePrivateKey
  • vrfPrivateKey

と各種キーが必要です。

面倒なので、設定ファイル作成 -> セットアップ実行によって各種キー生成 -> 設定ファイル修正というのを、
各種キー生成 -> 設定ファイル修正としました。チョンボですね。

その各種キーを”持っていない場合”、設定ファイルを与えないことで自動的に生成されます。

その後、下記コマンドを実行します。

yourdlt decrypt --source node/addresses.yml --destination ./address.plain.yml

パスワードを求められるため、入力します。
これでカレントディレクトリにaddress.plain.ymlが生成され、開くと必要なキーなどが生成されていることが確認できます。

初めてのセットアップなどの際は、この生成された各種キーを利用します。

そうでない場合、過去に生成したキーを使用して設定します。

なお、このファイル(address.plain.yml)については不要になった際には削除してください。
見ればわかる通り、privateKeyが見れる形で配置されています。
後から必要になる場合は、都度decryptするのがいいと思います。

docker-composeの実行。

yourdlt compose -t node

を実行し、docker-composeを実行できるようにします。

この時にパスワード等が求められます。

ノードの仮実行。

ここまでセットアップを終えれば、ノードの仮実行ができるはずです。

なお、僕は今回引っ越しを主としているため先に同期を行いますが、新規構築の場合下記のことがあります。

  • データの引っ越しは不要
  • ノードの設定を先に行うことができる

そのため、新規構築の場合は後述のノード設定を先に行うことで、ノードの仮実行ではなく本実行となり、ここで終わりとなります。

というわけで、ノードの実行を叩きます。

yourdlt run -d -t node

実行はバックグラウンドのため、一度実行したらそのままです。

ちゃんと動作しているかは、

docker ps

を実行すると起動中のdockerが表示されるため、

こんな感じで出ていればOKです。

また、

http://[ノードのアドレス]:3000/chain/info

としてアクセスすれば、取り込んだブロック数が確認できます。
ここでheightの値が増加していっているようであれば、同期が進んでいる=正常に起動しているとみなしていいかな、と思います。

先の通り、僕は今回はノードの引っ越しを行うため、同期をあらかた終えてからノードの設定および、データ(委任ハーベスター情報)の引っ越しを行います。

データの引っ越しについて。

また、dhpノードについてはノードの委任ハーベスター情報(harvesters.dat)は自動復元されません。
(fast-syncした場合はSymbol、dhpともに復元されません)

そのため、実行環境以下にある、

/nodes/dhealth-full-node/data/harvesters.dat

を引っ越ししてくる必要があります。

※なお、これの引っ越しについては”同期が終わってから実行する。”ほうがいいらしいです。

ノードの設定について。

ノードの設定はpreset.ymlを作成し、記載します。イメージ的にはこんな感じで。
(僕のがこんな感じなんですが)

nodes:
    - friendlyName: [わかりやすい名前を設定する]
      host: [ドメインまたはIPアドレスを指定する]
      maxUnlockedAccounts: [委任を受け入れられる数を指定する]
      beneficiaryAddress: [ハーベスト時のノード報酬受領アドレスを指定する。なくすとノード報酬ゼロ]
      mainPublicKey: [ノードに必要な公開鍵]
      transportPrivateKey: [ノードに必要な秘密鍵]
      remotePrivateKey: [ノードに必要な秘密鍵]
      vrfPrivateKey: [ノードに必要な秘密鍵]
      transactionSelectionStrategy: [委任数オーバー時の追い出し順]
      voting: [votingノードかどうか]

httpsProxies:
    - 
      excludeDockerService: true

こんな感じで記載します。最後のhttpsProxiesはおまじないみたいなものとでも思っておいてください。
(DHPで対応していたかは覚えてないです😅)

上記の設定は(僕が考えるほぼ)最小限の設定のため、それぐらいは必要かなーと思っています。

ノード情報の設定を適用するには。

引っ越し後、またはノードの情報を編集後、その編集を適用するためのコマンドがあります。

yourdlt config -p dhealth -t node -a dual -c プリセットファイル --upgrade

プリセットファイルのところに設定したノード情報のファイルを指定してください。

また、アドレス関係を変更している場合、続けて同様に下記のコマンドも実行してください。

yourdlt compose -t node --upgrade

これで完了しました。

あとは

yourdlt run -d -t node

を実行してノードを表示してください。

実行後、

http://[ipアドレス、またはドメイン]:3000/node/info

でアクセスすると、設定したhost等が表示されます。

例えば僕のdhpノードでいうと、

http://dhealth.sixis.xyz:3000/node/info

このように表示されます。

以上です。お疲れさまでした。


その他

dHealthノードの起動時、なかなか同期が始まらなかったです。接続先ノードがなかなか増えず、安定せず。。。
初期接続用に設定されている? ノードがいくつか倒れているせいなんですかね。

とりあえず「同期がなかなか始まらない!」と思いつつ、数時間様子を見るのが正解なようですね。


コマンドメモ

比較的? 使うことが多そうなコマンドをメモっておきます。参考までに。
※公式を見れば載っていると思いますが。

なお、ここに掲載しているコマンドを僕はシェルとかにしています。忘れるし、楽だからね。

機能コマンドex.
ノードの起動yourdlt run -d -t [実行DIR]yourdlt run -d -t node
ノードの停止yourdlt stop -t [実行DIR]yourdlt stop -t node
ノードの更新yourdlt config -p dhealth -t [実行DIR] -a dual -c [プリセットファイル] –upgradeyourdlt config -p dhealth -t node -a dual -c preset.yml –upgrade
ノードのdocker compose更新yourdlt compose -t [実行DIR] –upgradeyourdlt compose -t node –upgrade
証明書更新yourdlt renewCertificates -t [実行DIR]yourdlt renewCertificates -t node
証明書更新(強制)yourdlt renewCertificates -t [実行DIR] –forceyourdlt renewCertificates -t node –force

以上です。

投稿者 和泉

関連投稿