Dockerを使用しないネイティブRocket Poolノードの作成

注意

このガイドはSmartnode v1.6.5以降向けに設計されています。

以前のバージョンを使用している場合は、ネイティブモードを設定する前に v1.6.5 以降にアップグレードする必要があります。

このセクションでは、Dockerコンテナを使用せずに、Rocket Pool Smartnodeスタックをシステムにネイティブにインストールするプロセスを説明します。

一般的な計画は次のとおりです。

  1. Execution Client、Consensus Client / Beacon Node、およびValidator Clientの systemd サービスを使用して、標準的なソロステーキング設定を作成します
  2. Rocket Poolコンポーネント(nodeおよびwatchtowerプロセス)のシステムサービスを作成します
  3. クライアントサービスと通信するようにRocket Poolを設定します
  4. Rocket Poolの手数料受取人とバリデーター鍵を使用するようにValidator Clientサービス定義を更新します

これはかなり複雑な設定であるため、完了するまでに時間がかかります。

利用可能なオペレーティングシステムとディストリビューションの多様性により、すべてに対してガイドを用意することは現実的ではありません。 このガイドの手順はDebianベースのシステム(Ubuntuを含む)に合わせて作成されています。 他のディストリビューションやオペレーティングシステムの場合は、ガイドに記載されている高レベルの手順に従うことができますが、必要に応じてシステムで使用するコマンドに特定のコマンドを置き換える必要があります。

Danger

このガイドは、Linuxシステム管理と使用に精通しているユーザー向けです。 これには、ターミナルの使用、システムアカウントの作成、権限の管理、サービスのインストールが含まれます。 これらの活動に精通していることを前提としています - インフラストラクチャの大部分を自分で管理することになるため、ネイティブインストールに対しては限定的なサポートのみを提供します。 これらの活動に精通していない場合は、ネイティブモードの使用をお勧めしません。

ステップ1: Execution ClientとConsensus Clientのセットアップ

ネイティブモードは、標準的なソロステーキング設定を効果的に拡張し、Smartnodeソフトウェアが既に実行しているクライアントに接続できるようにします(いくつかの小さな変更を加えて)。

そのため、まずコミュニティが提供する従来のソロステーキングガイドに従うことをお勧めします。

これらのガイドで定義されているように実際にバリデーターを作成する必要はありません - Rocket Poolがそれを行います。 Staking Deposit CLIツールに関する部分は無視できます。

単にガイドに従って、Execution Clientサービス、Consensus Client / Beacon Nodeサービス、およびValidator Clientサービスがすべてインストールされ、チェーンを同期している状態にするだけです。 バリデーターへの資金提供とそのニーモニックの記録に関する手順はスキップしてください。

また、手数料受取人には特別なケースがあります - Validator Client設定で手数料受取人を指定するガイドの部分に到達したら、今のところ空白のままにしてください。 Rocket Poolバリデーター用に設定する方法については、以下で説明します。

クライアントがインストールされ、ログでチェーンが適切に同期されていることを確認できたら、次の手順に従ってRocket Pool Smartnodeをセットアップし、クライアントに接続できます。

ステップ2: Rocket Poolのインストール

サービスアカウントの作成

最初のステップは、Rocket Poolサービス用の新しいシステムアカウントを作成し、ログインとシェルアクセスを無効にすることです。

sudo useradd -r -s /sbin/nologin rp

次に、自分自身を rp グループに追加します。 Rocket Pool CLIを使用するためにこれを行う必要があります。Rocket Pool CLIとRocket Poolデーモンの両方がExecution層のウォレットファイルにアクセスする必要があるためです。

sudo usermod -aG rp $USER

最後に、Validator Clientのユーザーアカウントも rp グループに追加します。 そのユーザーアカウントの名前は、VCサービスをセットアップするために従ったガイドによって異なります。

たとえば、VCがユーザー lighthousevalidator として実行されている場合は、次のようにします。

sudo usermod -aG rp lighthousevalidator

この後、変更を有効にするためにログアウトして再度ログインしてください。

バイナリのセットアップ

まず、Rocket Pool用のフォルダーとデータサブフォルダーを作成します。 これは好きな場所に配置できます。このガイドでは /srv に配置します。

sudo mkdir -p /srv/rocketpool

sudo chown $USER:$USER /srv/rocketpool

次に、CLIとデーモンのバイナリをダウンロードします(または、好みに応じてソースからビルドすることもできます)。 以下のタブからシステムが使用するプラットフォームを選択してください。

Linux x64
Linux arm64
macOS x64
macOS arm64
sudo wget https://github.com/rocket-pool/smartnode/releases/latest/download/rocketpool-cli-linux-amd64 -O /usr/local/bin/rocketpool

sudo wget https://github.com/rocket-pool/smartnode/releases/latest/download/rocketpool-daemon-linux-amd64 -O /usr/local/bin/rocketpoold

sudo chmod +x /usr/local/bin/rocketpool

次に、デーモンの所有者とグループを rp に設定します。

sudo chown rp:rp /usr/local/bin/rocketpoold

最後に、デーモンバイナリに**suid ビット**とその他の権限ビットを設定します。

sudo chmod u+sx,g+sx,o-rwx /usr/local/bin/rocketpoold

これにより、デーモンが常に rp ユーザーとして実行され、常に適切な権限が設定されるようになります。

注意

これを行わないと、Smartnodeは権限エラーで失敗する可能性が高くなります。 このコマンドを必ず実行してください!

インストールフォルダーのセットアップ

CLIとデーモンをインストールしたら、次にSmartnodeが存在することを期待するフォルダー構造と付随ファイルをセットアップする必要があります。 まず、次のフォルダーを作成します。

mkdir -p /srv/rocketpool/data/validators && sudo chmod 775 /srv/rocketpool/data/validators

mkdir /srv/rocketpool/data/rewards-trees

mkdir /srv/rocketpool/data/custom-keys

sudo chown -R rp:rp /srv/rocketpool/data

次に、以下のスクリプトをダウンロードします - Rocket Poolは、手数料受取人を変更する必要がある場合(後述)、または新しいミニプールを作成した後に新しい鍵をロードする必要がある場合に、Validator Clientを停止または再起動する必要があるときにこれらを使用します。

wget https://github.com/rocket-pool/smartnode/raw/master/shared/services/rocketpool/assets/install/scripts/restart-vc.sh -O /srv/rocketpool/restart-vc.sh

wget https://github.com/rocket-pool/smartnode/raw/master/shared/services/rocketpool/assets/install/scripts/stop-validator.sh -O /srv/rocketpool/stop-validator.sh

chmod +x /srv/rocketpool/restart-vc.sh

chmod +x /srv/rocketpool/stop-validator.sh

次に、選択したエディターで ~/.profile を開き、最後にこの行を追加します。

alias rp="rocketpool -d /usr/local/bin/rocketpoold -c /srv/rocketpool"

保存してから、プロファイルをリロードします。

source ~/.profile

これにより、rp コマンドでRocket PoolのCLIと対話できるようになります。これは便利なショートカットです。

サービスの作成

次に、Rocket Poolノードデーモン用の systemd サービスを作成します。 これは、各チェックポイント後にRPL報酬を自動的にチェックして請求し、node deposit を介して作成したミニプールをステークするサービスです。

また、watchtower サービスも作成します。 これは、Oracle DAOメンバーの場合、または独自の報酬間隔ツリーを生成する場合(後の報酬の請求セクションで説明)に使用されます。

Node
Watchtower

rp-node サービスを作成します。

sudo nano /etc/systemd/system/rp-node.service

内容:

[Unit]
Description=rp-node
After=network.target

[Service]
Type=simple
User=rp
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/rocketpoold --settings /srv/rocketpool/user-settings.yml node

[Install]
WantedBy=multi-user.target

サービスのログファイルを作成して、その出力を監視できるようにします - これは rocketpool service logs node の動作を置き換えます。

nano /srv/rocketpool/node-log.sh

内容:

#!/bin/bash
journalctl -u rp-node -b -f

保存してから、実行可能にします。

chmod +x /srv/rocketpool/node-log.sh

これで、次のコマンドを実行するだけで、ノードのログを監視できます。

sudo /srv/rocketpool/node-log.sh

サービスがインストールされました。

パスワードなしスクリプトアクセスのセットアップ

次のステップは、新しいバリデーター鍵が作成されたときにValidator Clientを再起動し、緊急状態が検出された場合にValidator Clientを停止する機能を rp ユーザーに付与することです。

visudo を使用して新しい sudoers ファイルを作成します。

sudo visudo -f /etc/sudoers.d/rocketpool

次の行を追加します。

Cmnd_Alias RP_RESTART = /usr/bin/systemctl restart <validator service name>
Cmnd_Alias RP_STOP = /usr/bin/systemctl stop <validator service name>
rp    ALL=(ALL) NOPASSWD: RP_RESTART, RP_STOP

<validator service name> はVCサービスの名前です(例: lighthousevalidator

次に、/srv/rocketpool/restart-vc.sh を変更します。

  • 最後の行のコメントを解除し、sudo systemctl restart <validator service name> に変更します

また、/srv/rocketpool/stop-validator.sh も変更します。

  • 最後の行のコメントを解除し、sudo systemctl stop <validator service name> に変更します

完了です! これで node プロセスは、必要に応じて自動的にVCを再起動または停止できるようになります。

ステップ3: Smartnodeの設定

すべてのサービスが作成されたので、Smartnodeスタックを設定します。

Smartnodeスタックの設定(ネイティブモード)ガイドにアクセスし、完了したらここに戻ってください。

サービスの有効化と実行

すべてのサービスがインストールされたので、次のことを行います。

  • サービスが壊れた場合に自動的に再起動し、再起動時に自動的に開始するように有効にします
  • すべてを起動します
sudo systemctl daemon-reload

sudo systemctl enable rp-node rp-watchtower

sudo systemctl start rp-node rp-watchtower

ウォレットのセットアップ

次に、新しいノードウォレットを作成するか、既存のウォレットを復元します。 ガイドのウォレットのセットアップ部分の手順に注意深く従い、完了したらここに戻ってください。

それが完了したら、サービスログファイルスクリプトを使用して、新しいウォレットが正常にロードされたことを確認します。 次のコマンドを使用してこれを確認する必要もあります。

rp wallet status

正常に機能している場合、次の出力が生成されます。

Your Smartnode is currently using the Hoodi Test Network.

The node wallet is initialized.
Node account: <address>

ステップ4: VCサービス定義の更新

ソロステーキングのセットアップとは異なり、Rocket Poolはバリデーター鍵を自動的に生成および管理します。 Rocket Poolで正しく機能するために、作成したVCサービス定義ファイルにいくつかの調整を加える必要があります。

  • 手数料受取人
  • VCのデータまたはウォレットディレクトリ
  • VCの鍵とシークレットディレクトリ

各クライアントについて段階的に説明します。

手数料受取人ファイルのセットアップ

注意

これらの手順に従うことは非常に重要です - これを怠り、間違った手数料受取人を使用すると、バリデーターにペナルティが適用され、Beacon Chainの残高から控除が行われます!

手数料受取人は、Validator Clientに提供する引数で、優先手数料とMEV報酬を送信するExecution層のアドレスを指定します。 Rocket Poolには、手数料受取人用の2つの異なるアドレスがあります。

  • Smoothing Poolにオプトインしている場合、Smoothing Poolのアドレスである必要があります
  • Smoothing Poolをオプトアウトしている場合、ノードのFee Distributorアドレスである必要があります

Smoothing PoolとFee Distributorの詳細については、ガイドのFee DistributorとSmoothing Poolセクションを参照してください。

Rocket Poolの node サービスは、必要なものを検出して設定ファイルに設定し、Validator Clientサービスを再起動して変更を反映することで、これを自動的に設定します。 Validator Clientサービスは、その設定ファイルを自動的に使用できるため、手数料受取人をハードコードする必要はありません。

Validator Client用に作成した systemd サービス定義ファイルを開きます。 ExecStart 行の前に、この行を追加します。

EnvironmentFile=/srv/rocketpool/data/validators/rp-fee-recipient-env.txt

次に、手数料受取人の引数を次のように変更します。以下のタブから使用しているクライアントを選択してください。

Lighthouse
Nimbus
Prysm
Teku
--suggested-fee-recipient address--suggested-fee-recipient ${FEE_RECIPIENT} に変更
注意

Rocket Poolのサービスの前にValidator Clientを起動すると、このファイルがまだ存在しないためエラーが発生する可能性があります。 心配しないでください。このファイルは、Rocket Poolを初期化してサービスを起動すると作成されます。

データと鍵のディレクトリの設定

次に、Rocket Poolが生成するバリデーター鍵を保存およびロードする場所をVCに指示する必要があります。 以下のタブで使用しているクライアントをクリックしてください。

Lighthouse
Nimbus
Prysm
Teku

次のディレクトリを作成し、所有者を rp に設定します。

sudo mkdir -p /srv/rocketpool/data/validators/lighthouse/validators

sudo mkdir -p /srv/rocketpool/data/validators/lighthouse/secrets

sudo chown -R rp:rp /srv/rocketpool/data/validators/lighthouse

sudo chmod -R 775 /srv/rocketpool/data/validators/lighthouse

次に、Lighthouse VCのサービス定義ファイルに次のパラメーターを追加または変更して、これらの新しい値にします。

--datadir /srv/rocketpool/data/validators/lighthouse

umask の緩和

デフォルトでは、システムには通常、node デーモンが新しいフォルダーを作成するたびにグループ権限から +w ビットを削除する umask 設定が付属しています。 これは、いくつかのコンセンサスクライアントにとって問題があります。Smartnodeがミニプールデポジット中に新しいバリデーター鍵を生成するときに作成するディレクトリに、ロックファイルやその他のメタデータなどを実際に書き込むためです。

これに対抗し、VCが正しく機能することを確認するには、umask 設定を緩和してください。 たとえば、0022 の代わりに、rp ユーザーに対して 0002 に設定することを検討してください。

すべてのシステムは異なるため、これを行う方法については、オペレーティングシステムをカバーするガイドを参照してください。

警告

このステップは、自動ステーキングとバリデーション義務が適切に処理されるようにするために非常に重要です。 ミニプールが12時間のスクラブチェックに合格して staking ステータスに入った後、VCのログに権限の問題が表示される場合は、VCサービスがそのフォルダーに書き込めるように、バリデーター鍵を含むフォルダーで sudo chmod 775 を実行する必要がある可能性があります。

VCサービスのリロード

これらの変更が完了したら、次のコマンドを使用してVCサービスをリロードして再起動できます。

sudo systemctl daemon-reload

sudo systemctl restart <vc-service>

Prysmを使用していない場合、VCのログを注意深く監視して、正常に起動し、次のものが正しく定義されていることを確認してください。

  • 手数料受取人
  • データパス
  • ウォレット / 鍵 / シークレットパス

たとえば、ps aux | grep fee を使用して、実行中のプロセスをフィルタリングし、VCが使用した手数料受取人を確認できます。 これは /srv/rocketpool/data/validators/rp-fee-recipient-env.txt で定義されているものと同じである必要があります。

すべてが正しい値を使用している場合、おめでとうございます! Rocket Poolノードのセットアップが正常に完了しました。ガイドの次のセクションに従って、使用方法を学ぶことができます。

次のステップ

クライアントがインストールされたので、次はノードの保護セクションのセキュリティ提案を確認することをお勧めします。 ネイティブセットアップを実行しているため、これらのことのいくつかはすでに実行している可能性があります。それでも、少なくともそれを調べて、推奨されるセキュリティ態勢がシステムにどの程度適合するかを確認しても損はありません。