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.
Standard RPC (SendTx / Geyser gRPC) and Index RPC (full indexing) differ significantly, especially in memory and storage requirements.
RPC hardware requirements (guideline)
| Component | RPC Node | Index RPC (reference) |
|---|---|---|
| CPU | 24 cores+ @ 2.8GHz+ / AMD Gen3+ / Intel Ice Lake+ / SHA extensions / AVX2 | 32 cores+ (high clock recommended) |
| RAM | 512GB+ | 1152GB+ |
| Disk | NVMe Gen3 x4 or better / Accounts / Ledger / Snapshots separation recommended | Larger capacity + high TBW / separation recommended |
| Network | 1Gbps or higher | 1Gbps or higher (more bandwidth is preferable) |
| GPU | Not required | Not 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 Nodeslv 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 NodeIf 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
β― mainnetslv rpc init
? Select Solana Network (mainnet)
testnet
devnet
β― mainnetNext, confirm whether you have a Solana Node Compatible Server.
bash
? π‘οΈ Do you have a Solana Node Compatible Server? (yes)
β― yes
no? π‘οΈ Do you have a Solana Node Compatible Server? (yes)
β― yes
noThis 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)? 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π 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.wtfGenerate 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? 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.jsonSelect Solana CLI
Select the Solana CLI version.
bash
? Select Solana CLI (jito)
agave
β― jito
firedancer-agave
firedancer-jito? Select Solana CLI (jito)
agave
β― jito
firedancer-agave
firedancer-jitoSelect RPC Type
Select the RPC type.
bash
? Select an RPC type
β― Geyser gRPC
Index RPC
SendTx RPC
Index RPC + gRPC? Select an RPC type
β― Geyser gRPC
Index RPC
SendTx RPC
Index RPC + gRPCIn 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βοΈ 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 p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLVAfter 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 p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLVslv rpc deploy -n mainnet -p p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLVbash
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 mYour 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 mIt'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 mssh solv@<your-server-ip>
solv msolv 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 nodesUsage: 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