Solana Mainnet Validator - Quickstart
Introduction
To deploy a Solana mainnet validator, you'll use the SLV command-line tool.
This quickstart guide explains how to launch and deploy a mainnet validator hot spare.
You must have Ubuntu 24.04 LTS clean installed on your server.
Preparing a Baremetal Server
While it is possible to run a Solana node on VPS or virtual machines (VM), achieving optimal performance and stable operation is challenging. Solana officially recommends the use of baremetal servers.
Recommended server specifications are as follows:
- Agave recommended specs: 24-core CPU, 256GB RAM or higher
- Firedancer recommended specs: 32-core CPU, 512GB RAM or higher
For the best balance of cost and performance, choosing Agave with a 24-core CPU and 384GB RAM is ideal. (This recommendation ensures not merely the minimum to run a validator, but stable operation and reliable returns.) SLV Metal offers this configuration starting at β¬580 per month.
When you run the
slv v init command, you will be asked whether your baremetal server is already set up:β slv v init ? Select Solana Network (testnet) βΊ mainnet ? π‘οΈ Do you have a Solana Node Compatible Server? (no) β― yes no
This tutorial assumes you select
yes.If you have not yet prepared your baremetal server, please refer to the Baremetal Server Setup Guide.
Additionally, you may find these resources helpful:
Deploy Solana Mainnet Firedancer Jito Validator
New SLV deployments always use
unstaked-keypair.json as the identity key.
This is a best practice to prevent double voting and other issues.Therefore, after deployment, please use
slv v set:identity to set the authorized identity key.In most mainnet validator operations, you will use
slv v switch to change the identity key.
For no-downtime migration, please refer to this guide.Select the Solana Network
Select the Solana Network you want to deploy.
slv v init ? Select Solana Network (mainnet) testnet β― mainnet
Input Server's Default Username
Most of the time, the default username is
ubuntu or root.? What's the user for the server? (ubuntu) βΊ ubuntu
Input Server's IP Address
Input the IP address of the server.
? What's the IP address of the server? βΊ
Set RSA Key for SSH
β» Please set the path to your RSA key. The default path is
~/.ssh/id_rsa.? What's the path to your RSA key? (~/.ssh/id_rsa) βΊ ~/.ssh/id_rsa π Checking SSH connection... βοΈ SSH connection succeeded
Then SLV will check the connection to the server. If the connection is
successful, the next step will be prompted.
Select Solana Validator Type
Select the type of Solana validator.
? Select Validator Type (firedancer-jito) agave jito firedancer-agave β― firedancer-jito
Set Commission Rate
Set the commission rate for your validator.
β» 1000 equals 10%.
? Enter Commission BPS (Max 1000 = 10%) (1000)
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 with the name "epics-sub".
? Do you want to create a new identity key now? (Y/n) βΊ No ? Please Enter Your Identity Public Key βΊ KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM ? Enter Inventory Name (KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM) βΊ epics-sub β οΈ Please place your identity key in ~/.slv/keys/KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM.json . . βοΈ Success β Inventory updated to ~/.slv/inventory.yml β Successfully created solv user on x.x.x.x
Please place your identity key in
~/.slv/keys/<your-pubkey>.json.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.
β Inventory updated to ~/.slv/inventory.mainnet.validators.yml π 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)... β London: 8.801 ms β Dublin: 12.946 ms β Frankfurt: 5.888 ms β Amsterdam: 0.169 ms β New York: 74.321 ms β Salt Lake City: 115.577 ms β Singapore: 154.200 ms β Tokyo: 229.989 ms π― Nearest region: π³π± Amsterdam Latency: 0.169 ms Block Engine: https://amsterdam.mainnet.block-engine.jito.wtf Shred Receiver: 74.118.140.240:1002 Relayer: http://amsterdam.mainnet.relayer.jito.wtf:8100 NTP Server: ntp.amsterdam.jito.wtf
Generate or Set the Solana Validator Vote Account Key
You can generate a new vote account key or set an existing vote account key.
This example shows how to set an existing vote account key.
? Do you want to create a new vote account key now? (Y/n) βΊ No ? Please Enter Your Vote Account Public Key > <your-vote-account>
The validator node information will be saved to
~/.slv/inventory.mainnet.validators.yml.βοΈ Success β Inventory updated to ~/.slv/inventory.mainnet.validators.yml β Successfully created solv user on epics-sub βοΈ Validator Mainnet Config Saved To ~/.slv/inventory.mainnet.validators.yml Now you can deploy with: $ slv v deploy -n mainnet -p epics-sub
Deploy the Validator
Once you confirm the configuration, the deployment will start.
slv v deploy -n mainnet -p epics-sub
Your Mainnet Validators Settings: ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββ β Identity Key β KTMkUG8WCw9FdH44jLMBpc1teGafnYL6SgP4fHHbsNM β ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€ β Vote Key β EpicsoqLdDP8qRn3wQRKTSKAXbjK9dUgFfNPRQS77MQD β ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€ β Authority Key β authAccount β ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€ β IP β x.x.x.x β ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€ β Validator Type β firedancer-jito β ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€ β Version β 0.712.30006 β ββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββ ? Do you want to continue? (Y/n) βΊ Yes . . . 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 Validator is now deployed. It will take some time to
sync with the Solana network.
Debugging & Monitoring
After deployment, you can debug and monitor within the Solana RPC node.
You can check the status of the Solana RPC node using the following commands:
$ solv m
solv is an alias for agave-validator -l /mnt/ledger.
This setting is added to ~/.profile during the RPC node deployment.Change the Identity Key
After deployment, you need to change the unstaked key to the authorized identity key.
slv v set:identity -n mainnet --pubkey epics-sub
This command will change the identity key to the authorized identity key.
β» For no-downtime migration, please refer to this guide.
SLV Validator Commands
slv validator --help Usage: slv validator Version: 0.9.700 Description: π οΈ Manage Solana Validator Nodes π οΈ Options: -h, --help - Show this help. Commands: init - π Initialize a new validator configuration deploy - π¦ Deploy Validators list - π List validators set:identity - πͺͺ Set Validator Identity set:unstaked - π΄ Set Validator Identity to Unstaked Key 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 Validator Startup Config update:jinja - π§© Update Jinja Template start - π’ Start Validator stop - π΄ Stop Validator restart - β»οΈ Restart Validator cleanup - π§Ή Cleanup Validator - Remove Ledger/Snapshot Unnecessary Files get:snapshot - πΎ Download Snapshot with aria2c gen:vote-account - π³οΈ Generate Vote Account switch - π Switch Validator Identity - No DownTime Migration