オペレーティングシステムの準備

前のセクションで説明したように、さまざまなVPSおよびクラウドプロバイダーがあります。 それらすべてのガイドを作成することはやや非実用的ですが、このセクションではAmazon Web Servicesでホストされている仮想マシンを準備するための典型的なワークフローを説明します。 具体的には、適切な仮想ハードウェア構成を選択する方法と、Rocket Pool用のオペレーティングシステムを準備する方法について説明します。 エコシステムに慣れたら、これらの手順を任意のプロバイダーに適用する方法を推定できるはずです。

EC2仮想マシンの作成

最初の手順は、アカウントをまだお持ちでない場合はAWSアカウントを作成することです。 そのリンクで提供されている指示に従うか、既存のアカウントでログインすると、最終的に管理コンソールダッシュボードに到達します。

次に、画面の右上にあるドロップダウンをクリックして、サーバーを物理的に配置したい地理的地域を選択します。 サーバーは作成後に地域間で移動できないため、実際にサーバーを作成する前に、現在選択されているオプションに満足していることを確認する必要があります。

次に、ツールバーのServicesをクリックします。 Computeセクションに移動し、EC2を選択します。 ダッシュボードは次のようなビューに変わるはずです。

オレンジ色のLaunch Instanceボタンをクリックし、オプションのリストからLaunch Instanceを選択して、新しいマシンを作成します。 Amazon Machine Imagesのマーケットプレイスが表示されます。 これらのそれぞれは、事前にインストールされたオペレーティングシステムといくつかの有用なソフトウェアコンポーネントを備えたマシンの特定のスナップショットを表しています。

Rocket Poolノードには、**Ubuntu Server 24.04 LTS (HVM)**イメージの使用をお勧めします。

次に、Instance Typeを選択する必要があります。 これにより、マシンが利用できる仮想ハードウェアリソースが決まります。

執筆時点では、さまざまなオプションが提供するものは次のとおりです。

InstancevCPUCPU Credits / hourMem (GiB)StorageNetwork Performance
t2.nano130.5EBS-OnlyLow
t2.micro161EBS-OnlyLow to Moderate
t2.small1122EBS-OnlyLow to Moderate
t2.medium2244EBS-OnlyLow to Moderate
t2.large2368EBS-OnlyLow to Moderate
t2.xlarge45416EBS-OnlyModerate
t2.2xlarge88132EBS-OnlyModerate

ハードウェア要件は、実行する予定のConsensus Clientに大きく依存します。たとえば、Nimbusは単独で1GB未満のRAMしか必要としないため、t2.largeインスタンスで実行することは完全に合理的です。 よりRAMを大量に使用するクライアントの場合、余裕を持たせるためにt2.xlargeインスタンスを選択することをお勧めします。

Tip

インスタンスタイプを決定する前に、ETHクライアントの選択セクションを参照して、希望するクライアントが選択したインスタンスタイプでサポートされていることを確認することをお勧めします。

選択したら、Nextボタンをクリックします。 Instance Detailsセクションのデフォルト設定はすべて問題ないので、そのままにしてNextをクリックします。

Add Storageセクションに到着したら、システム用の新しい仮想ハードドライブを作成します。 クラウドの力のおかげで、後で拡張できるため、今正確な数値を取得することは絶対に重要ではありません。 ただし、安心のために、サイズを次のいずれかの数値に変更する必要があります。

  • Hoodi Test NetworkでRocket Poolを試している場合は、少なくとも100 GiBを使用してください。
  • メインEthereumネットワーク(mainnet)でこのノードを使用する場合は、少なくとも1 TiB(できれば2 TiB)を使用してください。

他の設定のデフォルト値をそのままにして、Nextをクリックします。

Add Tagsステップでは、click to add a Name tagボタンをクリックして、後でサーバーを識別するために使用できる覚えやすい名前を付ける必要があります。インスピレーションが必要な場合は、Rocket Pool Smartnodeのようなものが機能します。 完了したらNextをクリックします。

Security Groupセクションでは、Create a new security groupオプションを選択したままにしておきます。 SmartnodeSmartnode Groupなどの名前と説明を入力します。 テーブル内の既存のルールをすべて削除し、次のルールを追加します。

TypePort RangeSourceDescription
SSH22[自宅のパブリックIPアドレス]SSH Access
Custom TCP30303AnywhereETH1 P2P
Custom UDP30303AnywhereETH1 P2P
Custom TCP9001AnywhereETH2 P2P
Custom UDP9001AnywhereETH2 P2P

これにより、ラップトップまたはデスクトップからSSH(コマンドラインターミナル)を介してサーバーにリモート接続できるようになります。 また、Execution ClientとConsensus ClientがEthereumネットワーク上の他のノードに接続できるようになります。

注意

SSHアクセスの場合、これは静的パブリックIPアドレスがある場合にのみ機能します。 多くのISPは動的IPシステムを使用し、パブリックアドレスを時々変更するため、ISPにこれを要求する必要がある可能性があります。 静的アドレスを取得できない場合は、AWSコンソールに移動し、変更されるたびに新しいIPアドレスでこの設定を更新する必要があります。

セキュリティグループテーブルは次のようになります。

次に、すべてのインスタンスの詳細を確認して満足していることを確認し、満足したらLaunchをクリックします。 SSH key pairプロンプトが表示されたら、Create a new key pairを選択します。 Smartnode Keyなどの覚えやすい名前を付け、Download Key Pairをクリックします。 他のキーが通常存在する~/.ssh/(またはWindowsのC:\Users\[ユーザー名]\.ssh\)などの安全な場所にこれらのファイルを保存します。

Danger

このキーペアには、マシンにSSHで接続するために使用する秘密鍵が含まれています。 誰かがこのキーを手に入れると、Rocket Poolノードウォレットとその中のすべてのコインを含むノードに完全にアクセスできます。 このファイルは常に安全に保管する必要があります

次に、Launch Instanceをクリックして、新しい仮想サーバーを作成します。 通知がポップアップ表示されたら、View Instancesをクリックしてサーバーのリストに移動します。 そこにRocket Poolノードが、構成とステータスに関するいくつかの詳細とともに表示されます。

最後に、マシンにElastic IP Addressを割り当てます。これは、AWSに固有の静的IPアドレスのようなものと考えることができます。 ノードは常にこのアドレスでアクセスできるため、常に同じSSHコマンドを使用して接続できます。

左側のナビゲーションパネルのNetwork and Securityに移動し、Elastic IPsをクリックします。 次に、Allocate Elastic IP Addressをクリックします。 デフォルト設定はすべて問題ないので、プロンプトをクリックして完了したらリストに戻ります。

次に、リストの新しいアドレスを選択します。 その上のActionsボタンをクリックし、Associate Elastic IP Addressをクリックします。 リソースタイプをInstanceのままにして、作成したばかりのRocket Pool Smartnodeインスタンスをリストから選択します。 Associateをクリックして、アドレスを仮想サーバーに割り当てます。 次に、アドレスのAssociated Instance ID列の下を見ると、マシンが割り当てられていることを確認できます。

マシンへのアクセス

マシンにアクセスするには、LinuxまたはmacOSで新しいターミナルを開き(Windowsの場合はPowershellを使用)、次のコマンドを入力します。

ssh [elastic IPアドレス]

キーを.sshフォルダーに保存した場合、これはセットアップ中に生成した秘密鍵ペアを使用してマシンを自動的に認証します。ユーザー名もパスワードも必要ありません。

ここに来たら、システムへの完全なターミナルアクセスができます。

スワップスペースのセットアップ

ほとんどの場合、Execution ClientとConsensus Clientおよびインスタンスタイプを慎重に選択すれば、RAMが不足することはないはずです。 とはいえ、少し追加しても問題はありません。 これから行うのは、スワップスペースと呼ばれるものを追加することです。 基本的に、何か恐ろしいことが起こってサーバーが通常のRAMを使い果たした場合に備えて、SSDを「バックアップRAM」として使用することを意味します。 SSDは通常のRAMほど高速ではないため、スワップスペースに到達すると速度が低下しますが、完全にクラッシュしてすべてを壊すことはありません。 これは、(おそらく)決して必要としない追加の保険と考えてください。

スワップファイルの作成

最初のステップは、スワップスペースとして機能する新しいファイルを作成することです。 使用する量を決定します。合理的な開始点は8 GBなので、通常のRAMが8 GB、「バックアップRAM」が8 GBで合計16 GBになります。 超安全にするために、24 GBにすることもできます。これにより、システムは通常のRAMが8 GB、「バックアップRAM」が24 GBで合計32 GBになりますが、これはおそらく過剰です。 幸いなことに、SSDには1〜2 TBのスペースがあるため、スワップファイルに8〜24 GBを割り当てることは無視できます。

このウォークスルーでは、良い中間点を選びましょう。つまり、スワップスペースが16 GBで合計RAMが24 GBです。 進むにつれて、必要な数値を代入してください。

これを入力すると、/swapfileという新しいファイルが作成され、16 GBのゼロで埋められます。 量を変更するには、count=16の数値を必要なものに変更するだけです。これには長い時間がかかりますが、問題ありません。

sudo dd if=/dev/zero of=/swapfile bs=1G count=16 status=progress

次に、rootユーザーのみが読み書きできるように権限を設定します(セキュリティのため)。

sudo chmod 600 /swapfile

次に、スワップファイルとしてマークします。

sudo mkswap /swapfile

次に、有効にします。

sudo swapon /swapfile

最後に、マウントテーブルに追加して、サーバーの再起動時に自動的にロードされるようにします。

sudo nano /etc/fstab

最後に次のような新しい行を追加します。

/swapfile                            none            swap    sw              0       0

Ctrl+OEnterを押して保存し、Ctrl+XEnterを押して終了します。

アクティブであることを確認するには、次のコマンドを実行します。

sudo apt install htop
htop

上部の出力は次のようになります。

Swpとラベル付けされた最後の行の2番目の数値(/の後の数値)がゼロでない場合は、すべて設定されています。 たとえば、0K / 16.0Gと表示されている場合、スワップスペースは正常にアクティブ化されています。 0K / 0Kと表示されている場合は、機能しなかったため、前の手順を正しく入力したことを確認する必要があります。

qまたはF10を押してhtopを終了し、ターミナルに戻ります。

SwappinessとCache Pressureの設定

デフォルトでは、Linuxはスワップスペースを積極的に使用して、システムのRAMの負荷を軽減します。 これは望ましくありません。RAMを最後の最後まで使い切ってからSWAPに頼ることを望んでいます。 次のステップは、システムの「swappiness」を変更することです。これは基本的に、スワップスペースを使用することにどれだけ積極的かということです。 これに設定する値については多くの議論がありますが、6の値がうまく機能することがわかりました。

また、「キャッシュ圧力」を下げる必要があります。これは、サーバーがファイルシステムのキャッシュをどれだけ早く削除するかを決定します。 セットアップで多くの予備RAMがあるため、これを「10」にすることができます。これにより、キャッシュがしばらくメモリに保持され、ディスクI/Oが削減されます。

これらを設定するには、次のコマンドを実行します。

sudo sysctl vm.swappiness=6
sudo sysctl vm.vfs_cache_pressure=10

次に、sysctl.confファイルに入れて、再起動後に再適用されるようにします。

sudo nano /etc/sysctl.conf

最後に次の2行を追加します。

vm.swappiness=6
vm.vfs_cache_pressure=10

次に、以前に行ったように保存して終了します(Ctrl+OCtrl+X)。

これで、サーバーが起動して実行され、Rocket Poolを実行する準備が整いました。 ETHクライアントの選択セクションに進んでください。