How to Setup and Run a Solana RPC Node

Posted By : Suchit

May 01, 2024

Solana's RPC (Remote Procedure Call) node acts as a gateway to the network, allowing developers to interact with the blockchain for Solana blockchain development services. If you're looking to build dApps or interact with the Solana ecosystem, running your own RPC node offers several advantages:


  • Reduced Reliance: Free yourself from dependence on public RPC nodes, ensuring data sovereignty and potentially faster response times.
  • Customization: Tailor the node to your specific needs, enabling features like filtering or whitelisting requests.


Solana relies on validators, which are computers that maintain the network. Each validator runs a program to track accounts and validate transactions. Without validators, Solana wouldn't function.


Before diving into RPC, let's clarify a key distinction. The validator software offers two deployment options: voting/consensus nodes and RPC nodes. While both leverage the same software, RPC nodes prioritize performance and refrain from voting. Unlike validator nodes focused on consensus, RPC nodes serve a distinct purpose within the cluster. They act as information providers, responding to blockchain inquiries and facilitating transaction submissions from users.


Also, Read | A Guide to Meme Coin Development on Solana


Set Up and Run a Solana RPC Node


Solana Validator Requirements


Minimum SOL requirements


Running a Solana validator doesn't require a strict initial SOL investment. However, to participate in consensus and earn rewards, you'll need a vote account with a minimum balance of 0.02685864 SOL to cover rent exemption. Additionally, voting on blocks incurs daily transaction fees, estimated around 1.1 SOL.


Hardware recommendations:


You can check hardware requirements from the doc mentioned


Running the RPC node


To create your validator vote account, ensure you have the Solana command-line interface installed on your local computer.


Also, Check | Compressed NFTs (cNFTs) | Solana's Cost-Effective NFT standard


In this blog we are going to use linux for reference.


Install solana release using the following command 


sh -c "$(curl -sSfL"


Verify that you have the desired version of Solana installed by running the following command:


solana --version


After confirming successful installation of the Solana CLI (command-line interface), update your configuration to target the testnet cluster for interacting with the Solana test network.


solana config set --url


Create an identity keypair for your validator by running:


solana-keygen new -o ~/validator-keypair.json


You can view the identity public key by executing the following command:


solana-keygen pubkey ~/validator-keypair.json


To connect to the machine running the node, we recommend using a non-privileged user with sudo permissions. If necessary, you can SSH as root on remote machines. For local development, open a terminal and use sudo su to elevate your privileges.


Make sure you have the latest and greatest package versions on your server.


sudo apt update
sudo apt upgrade


Ensure you have a minimum of 2TB of disk space mounted on your Ubuntu computer. You can verify disk space using the "df" command.


df -h


Use the "list block devices" command to view the available hard disk devices.


lsblk -f


If you have an unformatted NVMe drive, you'll need to format it before you can proceed with mounting it. Once formatted, you can then proceed to mount it.


For example, if your computer has a device located at /dev/nvme0n1, then you can format the drive with the command:


sudo mkfs -t ext4 /dev/nvme0n1


Device names and locations can vary for different computers.


Next, confirm that you have a UUID assigned to the device by running:


Now that you've formatted the drive, it's time to mount it. Create a directory for mounting your drive:


sudo mkdir -p /mnt/ledger


Now you can mount the drive:


sudo mount /dev/nvme0n1 /mnt/ledger


To ensure optimal performance, consider mounting the accounts database on a separate hard drive. Follow a process similar to the ledger example mentioned earlier.


Also, Explore | Solana for Real Estate Asset Tokenization


If you have a device located at /dev/nvme1n1, format the device and verify its existence.


sudo mkfs -t ext4 /dev/nvme1n1


Create a directory for mounting:


sudo mkdir -p /mnt/accounts


And lastly, mount the drive:


sudo mount /dev/nvme1n1 /mnt/accounts


System Tuning


Proper system tuning is essential for the successful operation of your validator. Failure to implement the settings below may result in your validator failing to start.


Optimize sysctl knobs


sudo bash -c "cat >/etc/sysctl.d/21-solana-validator.conf <<EOF
# Increase UDP buffer sizes
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728

# Increase memory mapped files limit
vm.max_map_count = 1000000

# Increase number of allowed open file descriptors
fs.nr_open = 1000000
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf
Increase systemd and session file limits




to the [Service] section of your systemd service file, if you use one, otherwise add




to the [Manager] section of /etc/systemd/system.conf.


sudo systemctl daemon-reload
sudo bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1000000

Transfer your validator-keypair.json and vote-account-keypair.json files securely from your personal computer to the validator server.


scp validator-keypair.json sol@<server.hostname>:
scp vote-account-keypair.json sol@<server.hostname>:
Create A Validator Startup Script"‹


n your sol home directory (e.g. /home/sol/), create a folder called bin. Inside that folder create a file called and make it executable:

mkdir -p /home/sol/bin
touch /home/sol/bin/
chmod +x /home/sol/bin/


Next, open the file for editing:


nano /home/sol/bin/


Copy and paste the following contents into then save the file:


Due to the Solana blockchain's high transaction throughput, storing the entire chain on an RPC node isn't feasible. Operators set block storage limits with the --limit-ledger-size flag in startup scripts. For historical data, RPC servers access older blocks via Solana's bigtable instance.


exec solana-validator \
   --identity /home/sol/validator-keypair.json \
   --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
   --known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \
   --known-validator eoKpUABi59aT4rR9HGS3LcMecfut9x7zJyodWWP43YQ \
   --known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \
   --known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
   --known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
   --only-known-rpc \
   --full-rpc-api \
   --no-voting \
   --ledger /mnt/ledger \
   --accounts /mnt/accounts \
   --log /home/sol/solana-rpc.log \
   --rpc-port 8899 \
   --rpc-bind-address \
   --private-rpc \
   --dynamic-port-range 8000-8020 \
   --entrypoint \
   --entrypoint \
   --entrypoint \
   --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \
   --wal-recovery-mode skip_any_corrupted_record \
You may also like | Exploring Solana Blockchain Development for Enterprises


Verifying your validator is working


Test that your file is running properly by executing the script:




The script should initiate the solana-validator process. In a new terminal window, SSH into your server, then confirm that the process is running:


ps aux | grep solana-validator


You should encounter a line in the output containing "solana-validator" along with all the flags added to your script.


Next, examine the logs to ensure smooth operation.


In a new terminal window, SSH into your validator machine, switch to the sol user, and tail the logs:


su - sol
tail -f solana-validator.log


The "tail" command continuously displays the output of a file as it changes. You should observe a continuous stream of log output as your validator runs. Watch for any lines indicating "_ERROR_".


If no error messages are visible, exit the command.


To confirm that your validator is running correctly, ensure that it has registered itself with the gossip network.


In a new terminal window, establish an SSH connection to your server. Identify your validator's pubkey:


solana-keygen pubkey ~/validator-keypair.json


The "solana gossip" command displays all validators registered with the protocol. To verify whether the newly set up validator is listed in gossip, we'll use "grep" to search for our pubkey in the output:


solana gossip | grep <pubkey>


If you don't observe any output after using "grep" on the gossip output, your validator might be encountering startup issues. In such a scenario, initiate debugging by examining the validator log output.

Once you've confirmed that your validator is in gossip, you can verify its network membership by using the "solana validators" command. This command provides a list of all validators in the network. You can filter the output to focus on the specific validator of interest using the "grep" command as before.


solana validators | grep <pubkey>


For more about Solana blockchain development, connect with our Solana blockchain developers.


Leave a


Name is required

Invalid Name

Comment is required

Recaptcha is required.


July 16, 2024 at 01:52 pm

Your comment is awaiting moderation.

By using this site, you allow our use of cookies. For more information on the cookies we use and how to delete or block them, please read our cookie notice.

Chat with Us
Contact Us

Oodles | Blockchain Development Company

Name is required

Please enter a valid Name

Please enter a valid Phone Number

Please remove URL from text