Solana メインネット RPC - クイックスタート

はじめに

Solana メインネット RPC のデプロイには、SLV コマンドラインツールを使用します。 このクイックスタートガイドでは、SLV コマンドラインツールを使用して Geyser Yellowプラグインを備えたSolanaメインネットRPCをデプロイする方法を説明します。
サーバーには Ubuntu 24.04 LTS がクリーンインストールされている必要があります。

ベアメタルサーバーの準備

SolanaのクライアントをVPSや仮想マシン(VM)上で立ち上げることも可能ですが、パフォーマンスを十分に発揮することは難しく、安定稼働は期待できません。特にRPCノードやバリデーターは高負荷環境となるため、まず適切なサーバー環境を用意することが重要です。
Solana公式でもベアメタルサーバーの利用が推奨されています。
RPC ノードは用途により必要リソースが大きく変わります。
通常の RPC(SendTx / Geyser gRPC など)と、Index RPC(フルインデックス)は、特にメモリとディスク要件が大きく異なります。
RPC ハードウェア要件(目安)
ComponentRPC NodeIndex RPC(参考)
CPU24 cores+ @ 2.8GHz 以上 / AMD Gen3+ / Intel Ice Lake+ / SHA extensions / AVX232 cores+(高クロック推奨)
RAM512GB+1152GB+
DiskNVMe Gen3 x4 以上 / Accounts・Ledger・Snapshots 分離推奨より大容量 + 高TBW / 分離推奨
Network1Gbps 以上1Gbps 以上(より広帯域が望ましい)
GPU不要不要
Note:
コア数よりもクロックと実効スループットが重要とされています。
Index RPC ではメモリとディスクがボトルネックになりやすいため、十分な容量と高い IOPS を確保してください。
Index が必要な場合は 768GB 以上、安定稼働には 1152GB 以上を推奨します。
SLV Metalでは、予算に応じて最高のパフォーマンスを引き出せるベアメタルサーバーを提供しています。
slv metal list コマンドを実行すると、Solana RPCノード用に特別に設計された RPC オプションを見つけることができます。
bash
slv metal list
? 🛡️ Select SLV BareMetal Type (APP)
  📦 APP - For Trade Bot,Testnet Validator, DApp and More!
  🚀 MV - For Solana Mainnet Validator
 🛡️⚡️ RPC - For Solana RPC Node
まだベアメタルサーバーをセットアップしていない場合は、ベアメタルサーバーセットアップガイドに従ってください。
さらに、以下のリソースを参照してください:

Solana RPCノードのデプロイ

まず、Solana RPCの設定を初期化します。 希望するSolanaネットワークをnetworkとして選択してください。
bash
slv rpc init
? Select Solana Network (mainnet)
  testnet
  devnet
 mainnet
次に、Solanaノード対応サーバーがあるかどうかを確認します。
bash
? 🛡️ Do you have a Solana Node Compatible Server? (yes)
 yes
  no
このチュートリアルでは、yesを選択することを前提としています。

サーバーユーザーとIPアドレスの設定

サーバーユーザー、IPアドレス、RSAキーパスを設定します。
bash
? What's the user for the server? (root) › root
? Enter the server IP address › x.x.x.x
? What's the path to your RSA key? (~/.ssh/id_rsa)

最寄りのリージョンを自動検出

次に、設定するノードから各ブロックエンジンに対して Ping を実行し、最も近いリージョンを自動的に検出します。 Ping で実測値を計測することで、最適なリージョンを選択できます。
bash
🔍 Checking SSH connection...
✔︎ SSH connection succeeded

📍 Measuring latencies from x.x.x.x to mainnet regions...
  Pinging Amsterdam (amsterdam.mainnet.block-engine.jito.wtf)...
  Pinging Dublin (dublin.mainnet.block-engine.jito.wtf)...
  Pinging Frankfurt (frankfurt.mainnet.block-engine.jito.wtf)...
  Pinging London (london.mainnet.block-engine.jito.wtf)...
  Pinging New York (ny.mainnet.block-engine.jito.wtf)...
  Pinging Salt Lake City (slc.mainnet.block-engine.jito.wtf)...
  Pinging Singapore (singapore.mainnet.block-engine.jito.wtf)...
  Pinging Tokyo (tokyo.mainnet.block-engine.jito.wtf)...
 Singapore: 0.291 ms
 London: 154.071 ms
 Dublin: 167.267 ms
 Frankfurt: 149.081 ms
 Amsterdam: 154.501 ms
 New York: 228.624 ms
 Salt Lake City: 278.016 ms
 Tokyo: 376.816 ms

🎯 Nearest region: 🇸🇬 Singapore
   Latency: 0.291 ms
   Block Engine: https://singapore.mainnet.block-engine.jito.wtf
   Shred Receiver: 202.8.11.224:1002
   Relayer: http://singapore.mainnet.relayer.jito.wtf:8100
   NTP Server: ntp.singapore.jito.wtf

アイデンティティキーペアの生成

アイデンティティキーペアを持っていない場合は、新しく生成できます。
bash
? Do you want to create a new identity key now? (Y/n) › Yes
🔑 Generating new identity key...
 Generated Key: p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
 Moved Key to: ~/.slv/keys/p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV.json

Solana CLIの選択

Solana CLIのバージョンを選択します。
bash
? Select Solana CLI (jito)
  agave
 jito
  firedancer-agave
  firedancer-jito

RPCタイプの選択

RPCタイプを選択します。
bash
? Select an RPC type
 Geyser gRPC
  Index RPC
  SendTx RPC
  Index RPC + gRPC
このチュートリアルでは、Geyser gRPCを選択します。

設定の確認

最後に、設定を確認します。
bash
✔︎ Success
 Inventory updated to ~/.slv/inventory.mainnet.rpcs.yml
 Successfully created solv user on p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
✔︎ mainnet_rpcs inventory file has been saved to ~/.slv/inventory.mainnet.rpcs.yml
Now you can deploy with:

$ slv rpc deploy -n mainnet -p p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
その後、ベアメタルサーバーに solv ユーザーが作成され、 Solana RPCの設定が ~/.slv/inventory.mainnet.rpcs.yml に保存されます。

Solana RPCノードのデプロイ

設定を確認したら、デプロイを開始します。
bash
slv rpc deploy -n mainnet -p p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
bash
Your mainnet RPC Nodes Settings:
┌──────────────┬─────────────────────────────────────────────┐
 Identity Key p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
├──────────────┼─────────────────────────────────────────────┤
 Name p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
├──────────────┼─────────────────────────────────────────────┤
 IP x.x.x.x.
├──────────────┼─────────────────────────────────────────────┤
 Region singapore
├──────────────┼─────────────────────────────────────────────┤
 RPC Type Geyser gRPC
├──────────────┼─────────────────────────────────────────────┤
 Version 3.0.7-jito
└──────────────┴─────────────────────────────────────────────┘
.
.
.
Successfully Deployed RPC on mainnet
⚡️⚡️⚡️ Enhanced Solana RPC Connection API Key ⚡️⚡️⚡️

We're excited to offer a free API key exclusively for the Validators DAO community 🎉
It's our way of supporting the community and empowering you with fast, reliable connections.

To get your Free API key, simply join us through the link below:

Validators DAO: `https://discord.gg/X4BgkBHavp`

Unlock fast connections and elevate your experience with your very own API key 🚀

You can monitor your Node with the following steps:

Log in to your server with SSH:
ssh [email protected]

Then, run the following command to monitor your node:
$ solv m
完了です!Solana RPCノードが正常にデプロイされました。 Solanaネットワークとの同期には時間がかかります。

デバッグ・モニタリング

デプロイ後、以下のコマンドでSolana RPCノードの状態を確認できます:
bash
ssh solv@<your-server-ip>
solv m
solvagave-validator -l /mnt/ledger のエイリアスです。 この設定はRPCノードデプロイ時に ~/.profile に追加されます。

SLV RPCコマンド

bash
Usage:   slv rpc
Version: 0.9.700

Description:

  🛠️ Manage Solana RPC Nodes 🛠️

Options:

  -h, --help  - Show this help.

Commands:

  init                - 🚀 Initialize a new RPC node configuration
  deploy              - 📦 Deploy RPC Nodes
  list                - 📋 List RPC Nodes
  setup:firedancer    - 🔥 Setup/Update Firedancer Validator
  update:firedancer   - 🔄 Update Firedancer Version
  build:solana-cli    - 🛠️ Build Solana CLI from Source
  install:solana      - ➡️ Install Solana CLI Binary
  update:script       - ⚙️ Update RPC Startup Config
  update:geyser       - ⚡️ Update Geyser Version
  start               - 🟢 Start RPC
  stop                - 🔴 Stop RPC
  restart             - ♻️ Restart RPC
  cleanup             - 🧹 Cleanup RPC - Remove Ledger/Snapshot Unnecessary Files
  get:snapshot        - 💾 Download Snapshot with aria2c
  update:allowed-ips  - 🛡️ Update allowed IPs for mainnet RPC nodes