Solanaは、自分で運用するには最も要求の厳しいチェーンです。バリデーターやフルRPCノードには、非常に高速なCPU、大量のRAM、高速なNVMeディスクが必要で、要件も変わり続けています。このガイドでは、それが実際に何を意味するのかを説明するので、自分のノードが必要か、もっと小さな構成で足りるかを判断できます。
バリデーター、RPCノード、それとも不要?
- バリデーター。ブロックに投票するため、フルのハードウェア仕様、資金を入れた投票アカウント、常時稼働が必要です。
- RPCノード。アプリ、ボット、インデクサーからのリクエストに応答します。投票はしませんが、同程度のハードウェアが必要で、アカウントインデックスを有効にするとさらに多くのRAMが必要です。
- 軽い用途。送信するトランザクションが少数だったり、読み取るデータが少しだけなら、通常はノードを運用するよりも有料のRPCエンドポイントのほうが安上がりです。
購入前に、Solanaの公式バリデーター要件を確認してください。要件はSolanaとAgaveのドキュメントで公開されており、ネットワークとともに変わります。おおよその目安として、負荷の高いRPCノードでは数百GBのRAMと、高速なNVMeドライブが複数必要になると考えてください。これは小さなVPSではなく、専用サーバーの領域です。サイズ別の選択肢はSolanaノードホスティングのページに掲載しています。
ステップ 1:サーバーを準備する
Ubuntu LTSを使い、新しいVPSを守る方法の手順に従ってください。専用ユーザーを作成し、NVMeドライブが複数ある場合は、レジャーとアカウントを別々のドライブに置いてください。
sudo adduser --disabled-password --gecos "" sol
sudo mkdir -p /mnt/ledger /mnt/accounts
sudo chown -R sol:sol /mnt/ledger /mnt/accounts
ステップ2:システムの上限を引き上げる
Solanaは多数のファイルを開き、大きなメモリマップを使います。次の内容を/etc/sysctl.d/21-solana.confとsystemdユニットに追加してください。
vm.max_map_count=1000000
net.core.rmem_max=134217728
net.core.wmem_max=134217728
# in the systemd unit:
LimitNOFILE=1000000
sudo sysctl --systemで適用します。
ステップ3:バリデーターソフトウェアをインストールする
公式ドキュメントの方法で現行のAgaveリリース(Solanaのバリデータークライアント)をインストールし、検証してください。その後、バージョンを確認します。
agave-validator --version
solana --version
ステップ4:RPCノードを起動する
これは、投票しないRPCノードの起動コマンドの典型的な形です。お使いのクラスター向けに、公式ドキュメントにあるknown validatorsとエントリーポイントを使ってください。
agave-validator \
--identity /home/sol/identity.json \
--ledger /mnt/ledger \
--accounts /mnt/accounts \
--entrypoint ENTRYPOINT:8001 \
--known-validator KNOWN_VALIDATOR_PUBKEY \
--only-known-rpc \
--rpc-port 8899 \
--private-rpc \
--no-voting \
--full-rpc-api \
--limit-ledger-size \
--log /var/log/solana/validator.log
プレースホルダーは、ドキュメントの値に置き換えてください。--private-rpcは、RPCポートがネットワークに広告されるのを防ぎますが、それでもファイアウォールで閉じておく必要があります。
ステップ5:追いつくのを見守る
solana catchup --our-localhost
solana-validator --ledger /mnt/ledger monitor
スナップショットからの追いつきには、数分から数時間かかります。ノードが遅れたまま回復しない場合、原因はたいていディスクかネットワークです。
ファイアウォール
ドキュメントに記載されているゴシップとTPUのポート範囲(デフォルトは8000〜10000)を許可し、RPC(8899と8900)は非公開にしてください。他のマシンにRPCを提供する必要がある場合は、前段に認証付きのリバースプロキシを置いてください。