Solana Testnet Validator - Quickstart
Installation & Validator Launch
bash
curl -fsSL https://storage.slv.dev/slv/install | sh
slv validator init
slv validator deploycurl -fsSL https://storage.slv.dev/slv/install | sh
slv validator init
slv validator deployDeploy Solana Testnet Firedancer Validator
π Prerequisites
Please prepare a server with Ubuntu 24.04 LTS cleanly installed.
π About Key Handling
For new SLV Firedancer deployments, unstaked-keypair.json is always used as the identity key initially for security.
This is a best practice to prevent critical issues such as double voting.
β
Identity Setting After Deployment
After deployment, be sure to set the authorized identity key with the following command:
bash
slv v set:identity -n testnet --pubkey <name>slv v set:identity -n testnet --pubkey <name>Preparing a Baremetal Server for Testnet
While it is possible to run Solana nodes on VPS or virtual machines (VM), achieving optimal performance and stability is challenging in practice. Solana officially recommends using baremetal servers, which deliver much higher performance than virtualized environments.
Since testnet environments have lower load compared to mainnet, we have confirmed stable operation using servers with 16-core Ryzen CPU and 128GB DDR5 RAM. Using this server configuration helps reduce operational costs, so it is recommended.
When you run the
slv v init command, you will be asked whether your baremetal server is already set up:bash
β slv v init
? Select Solana Network (testnet) βΊ testnet
? π‘οΈ Do you have a Solana Node Compatible Server? (no)
β― yes
noβ slv v init
? Select Solana Network (testnet) βΊ testnet
? π‘οΈ Do you have a Solana Node Compatible Server? (no)
β― yes
noThis tutorial assumes you select
yes.If you have not yet prepared your baremetal server, please refer to the Baremetal Server Setup Guide to complete the setup.
Input Server's Default Username
Most of the time, the default username is
ubuntu or root.bash
? What's the user for the server? (ubuntu) βΊ ubuntu? What's the user for the server? (ubuntu) βΊ ubuntuInput Server's IP Address
Input the IP address of the server.
bash
? What's 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.
Currently, only the default path is supported, so please set it as is.bash
? What's the path to your RSA key? (~/.ssh/id_rsa) βΊ ~/.ssh/id_rsa
π Checking SSH connection...
βοΈ SSH connection succeeded? What's the path to your RSA key? (~/.ssh/id_rsa) βΊ ~/.ssh/id_rsa
π Checking SSH connection...
βοΈ SSH connection succeededThen 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.
bash
? Select Validator Type (firedancer-jito)
agave
jito
jito-bam
firedancer-agave
β― firedancer-jito? Select Validator Type (firedancer-jito)
agave
jito
jito-bam
firedancer-agave
β― firedancer-jitoGenerate 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-test".
bash
? Do you want to create a new identity key now? (Y/n) βΊ No
? Please Enter Your Identity Public Key βΊ TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp
? Enter Inventory Name (TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp) βΊ epics-test
β οΈ Please place your identity key in
~/.slv/keys/TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp.json
.
.
βοΈ Success
β Inventory updated to ~/.slv/inventory.yml
β Successfully created solv user on x.x.x.x? Do you want to create a new identity key now? (Y/n) βΊ No
? Please Enter Your Identity Public Key βΊ TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp
? Enter Inventory Name (TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp) βΊ epics-test
β οΈ Please place your identity key in
~/.slv/keys/TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp.json
.
.
βοΈ Success
β Inventory updated to ~/.slv/inventory.yml
β Successfully created solv user on x.x.x.xPlease place your identity key in
~/.slv/keys/<your-pubkey>.json. Then, SLV will create the solv user using a password.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
π Measuring latencies from x.x.x.x to testnet regions...
Pinging Dallas (dallas.testnet.block-engine.jito.wtf)...
Pinging New York (ny.testnet.block-engine.jito.wtf)...
β
New York: 74.341 ms
β
Dallas: 114.722 ms
π― Nearest region: πΊπΈ New York
Latency: 74.341 ms
Block Engine: https://ny.testnet.block-engine.jito.wtf
Shred Receiver: 64.130.35.224:1002
Relayer: http://ny.testnet.relayer.jito.wtf:8100
NTP Server: ntp.dallas.jito.wtfπ Measuring latencies from x.x.x.x to testnet regions...
Pinging Dallas (dallas.testnet.block-engine.jito.wtf)...
Pinging New York (ny.testnet.block-engine.jito.wtf)...
β
New York: 74.341 ms
β
Dallas: 114.722 ms
π― Nearest region: πΊπΈ New York
Latency: 74.341 ms
Block Engine: https://ny.testnet.block-engine.jito.wtf
Shred Receiver: 64.130.35.224:1002
Relayer: http://ny.testnet.relayer.jito.wtf:8100
NTP Server: ntp.dallas.jito.wtfGenerate 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.
bash
? Do you want to create a new vote account key now? (Y/n) βΊ No
? Please Enter Your Vote Account Public Key > <your-vote-account>? 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 configuration has now been saved to
~/.slv/inventory.testnet.validators.yml.Deploy the Validator
Once you confirm the configuration, the deployment will start.
bash
slv v deploy -n testnetslv v deploy -n testnetFirst, the configuration confirmation will be displayed.
Select Yes to continue.
bash
Your Testnet Validators Settings:
ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββ
β Identity Key β TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β Vote Key β 6XdQ6szHJjm1t3XbgahSS6WVEhsrs5fniZbLgfkN1QWn β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β Authority Key β authAccount β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β IP β x.x.x.x. β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β Validator Type β jito β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β Version β 3.0.7-jito β
ββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββ
? Do you want to continue? (Y/n) βΊ YesYour Testnet Validators Settings:
ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββ
β Identity Key β TKMNqvfwb7PKkc9KFEJJ8EaNK9s5XjNWgFS6oyqSLkp β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β Vote Key β 6XdQ6szHJjm1t3XbgahSS6WVEhsrs5fniZbLgfkN1QWn β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β Authority Key β authAccount β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β IP β x.x.x.x. β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β Validator Type β jito β
ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ€
β Version β 3.0.7-jito β
ββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββ
? Do you want to continue? (Y/n) βΊ YesIt'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:
bash
$ solv m$ solv msolv 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.
bash
slv v set:identity -n testnet --pubkey epics-testslv v set:identity -n testnet --pubkey epics-testThis command will set the identity key from your local computer located at:
~/.slv/keys/<name>.jsonRestart Firedancer
If you have any issues with the validator, you can restart firedancer with the following command.
The
--rm option will stop the validator, remove the ledger and snapshot directories, download a snapshot using the snapshot finder, and then start the validator.bash
slv v restart -n testnet --pubkey <name> --rmslv v restart -n testnet --pubkey <name> --rmSLV Validator Commands
bash
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 Migrationslv 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