Solana Mainnet RPC - Quickstart

Introduction

To deploy a Solana mainnet RPC, you'll use the SLV command-line tool. This quickstart guide explains how to use the SLV command-line tool to deploy a Solana mainnet RPC with Geyser Yellowstone plugin.
You must have Ubuntu 24.04 LTS clean installed on your server.

Preparing a Baremetal Server

While it is possible to run a Solana client on VPS or virtual machine (VM), achieving optimal performance and stable operation is challenging. RPC nodes and validators, in particular, operate under high-load conditions, making it crucial to set up an appropriate server environment.
Solana officially recommends using baremetal servers.
RPC nodes vary greatly depending on workload.
Standard RPC (SendTx / Geyser gRPC) and Index RPC (full indexing) differ significantly, especially in memory and storage requirements.
RPC hardware requirements (guideline)
ComponentRPC NodeIndex RPC (reference)
CPU24 cores+ @ 2.8GHz+ / AMD Gen3+ / Intel Ice Lake+ / SHA extensions / AVX232 cores+ (high clock recommended)
RAM512GB+1152GB+
DiskNVMe Gen3 x4 or better / Accounts / Ledger / Snapshots separation recommendedLarger capacity + high TBW / separation recommended
Network1Gbps or higher1Gbps or higher (more bandwidth is preferable)
GPUNot requiredNot required
Note:
Clock speed and effective throughput are considered more important than core count.
Index RPC can be bottlenecked by memory and storage, so ensure sufficient capacity and high IOPS.
If indexing is required, we recommend 768GB or more, and 1152GB or more for stable operation.
SLV Metal provides baremetal servers designed to deliver the highest performance within your budget.
When executing the slv metal list command, you can find the RPC option specifically tailored for Solana RPC nodes.
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
If you have not yet set up your baremetal server, please follow the Baremetal Server Setup Guide.
Additionally, refer to the following resources:

Deploy Solana RPC Node

First, initialize the Solana RPC configuration. Please select network as your desired Solana network.
bash
slv rpc init
? Select Solana Network (mainnet)
  testnet
  devnet
❯ mainnet
Next, confirm whether you have a Solana Node Compatible Server.
bash
? πŸ›‘οΈ Do you have a Solana Node Compatible Server? (yes)
❯ yes
  no
This tutorial assumes you select yes.

Set Server User and IP Address

Set the server user, IP address, and RSA key path.
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)

Automatic Region Detection

Next, the system will ping each block engine from your configured node to automatically detect the nearest region. By measuring actual ping values, you can select the optimal region.
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

Generate Identity Keypair

If you don't have an identity keypair, you can generate a new one.
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

Select Solana CLI

Select the Solana CLI version.
bash
? Select Solana CLI (jito)
  agave
❯ jito
  firedancer-agave
  firedancer-jito

Select RPC Type

Select the RPC type.
bash
? Select an RPC type
❯ Geyser gRPC
  Index RPC
  SendTx RPC
  Index RPC + gRPC
In this tutorial, we select Geyser gRPC.

Confirm Configuration

Finally, confirm the configuration.
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
After that, the solv user is created on the bare metal server, and the Solana RPC configuration is saved to ~/.slv/inventory.mainnet.rpcs.yml.

Deploy Solana RPC Node

Once you confirm the configuration, the deployment will start.
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
It's done! Your Solana RPC node is now deployed. It will take some time to synchronize with the Solana network.

Debugging & Monitoring

After deployment, you can check the status of the Solana RPC node with the following command:
bash
ssh solv@<your-server-ip>
solv m
solv is an alias for agave-validator -l /mnt/ledger. This setting is added to ~/.profile during the RPC node deployment.

SLV RPC Commands

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