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 SPL token account indexing and Geyser Yellow 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.
Recommended specifications for an RPC node are as follows:
- Minimum Requirements: 24-core CPU, 512GB RAM or higher
- Recommended for Indexed Nodes: 32-core CPU, 1152GB RAM or higher
CPU clock speed is particularly important for Solana nodes. As noted in the official documentation, having the latest generation CPU with high clock speeds can significantly maximize performance, beyond simply increasing core count. Recently, Firedancer has also started recommending 32-core CPUs, making it optimal to utilize 32 cores, especially considering the handling of a large volume of RPC requests.
SLV Metal provides baremetal servers designed to deliver the highest performance within your budget.
When executing the
slv rpc init
command, you will be prompted to confirm whether your baremetal server is already set up:β slv rpc init ? π‘οΈ Do you have a Solana Node Compatible Server? (no) β― yes no
This tutorial assumes you select
yes
.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 Mainnet Jito RPC
This command will prompt you to provide necessary information to deploy.
slv rpc init
Generate or Set the Solana Validator Identity Key
You can generate a new identity key or set an existing identity key. This
example shows how to set an existing identity key.
? Do you want to create a new identity key now? (Y/n) βΊ Yes π Generating new identity key... β¨ Generated Key: gnz9qntHdXDRVbthem2e28F8Asta8Lqp5FRDoDVrSLV β¨ Moved Key to: /Users/fumi/.slv/keys/gnz9qntHdXDRVbthem2e28F8Asta8Lqp5FRDoDVrSLV.json
Select Solana CLI
Select the Solana CLI version.
? Select Validator Type (jito) β― jito
Select Region
Select the Jito block engine region.
? π Select Block Engine Region β― amsterdam frankfurt ny salt_lake_city tokyo
Set RPC Port
Set the Solana RPC port.
? Select Solana RPC port (8899)
Set Snapshot URL (Optional)
Set the Snapshot URL.
If you don't have a specific setting, press Enter to skip.
? Enter Snapshot URL(Optional) () βΊ
Select RPC Type
Select the RPC type.
? Select an RPC type β― geyser-yellowstone
Set gRPC Port
Set the gRPC port.
? Select Solana gRPC port (10000)
Set Geyser gRPC Token
Set the Geyser gRPC token for security.
? Please enter your x_token (xToken) βΊ
Set UFW Firewall
The UFW firewall is configured to allow SSH connections only from specific IP addresses.
To add to the existing whitelist, select
Keep and add more
.π Updating Allowed SSH IPs for mainnet_validators Current Allowed SSH IPs: - x.x.x.x - x.x.x.x ? What would you like to do with the current IPs? β― Keep and add more Replace all Keep as is
Next, enter the IP addresses that are allowed to connect to the node.
π Updating Allowed IPs for mainnet_validators Current Allowed IPs: - x.x.x.x - x.x.x.x ? What would you like to do with the current IPs? β― Keep and add more Replace all Keep as is
This completes the firewall configuration.
To update the whitelist later, run the following command:
slv v update:allowed-ips
βοΈ Success β Inventory updated to /Users/fumi/.slv/inventory.mainnet.rpcs.yml β Successfully created solv user on gnz9qntHdXDRVbthem2e28F8Asta8Lqp5FRDoDVrSLV βοΈ mainnet_rpcs inventory file has been saved to /Users/fumi/.slv/inventory.mainnet.rpcs.yml Now you can deploy with: $ slv rpc deploy -n mainnet -p gnz9qntHdXDRVbthem2e28F8Asta8Lqp5FRDoDVrSLV
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.
slv rpc deploy -n mainnet -p gnz9qntHdXDRVbthem2e28F8Asta8Lqp5FRDoDVrSLV Your Mainnet RPC Nodes Settings: ββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββ β Identity Key β gnz9qntHdXDRVbthem2e28F8Asta8Lqp5FRDoDVrSLV β ββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ€ β Name β gnz9qntHdXDRVbthem2e28F8Asta8Lqp5FRDoDVrSLV β ββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ€ β IP β x.x.x.x β ββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ€ β Region β amsterdam β ββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ€ β RPC Type β geyser-yellowstone β ββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ€ β Version β 2.1.16 β ββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββ ? Do you want to continue? (Y/n) βΊ Yes . . . Successfully deployed validator 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 π
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:
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
Usage: slv rpc Version: 0.8.2 Description: Manage Solana RPC Nodes Options: -h, --help - Show this help. Commands: init - Initialize a new RPC node configuration deploy - Deploy a new RPC node setup:jupiter - Setup Jupiter Self-hosted SWAP API deploy:jupiter - Deploy Jupiter Self-hosted SWAP API list:jupiter - List all Jupiter API instances restart - Restart RPC Node update:version - Update RPC Version update:script - Update Validator Startup Config update:allowed-ips - Update allowed IPs for mainnet RPC nodes list