Here is a full, comprehensive guide to running your own Solana RPC node, covering everything from "why" to "how" and advanced optimization.
Solana RPC Node: The Full Guide

Running your own Solana RPC node gives you uncensored, reliable, and private access to the Solana blockchain. It's essential for developers, power users, and projects that depend on high-performance and reliable data access.
Table of Contents
Why Run Your Own Node?
Hardware & System Requirements
Step-by-Step Setup Guide
Option A: Using Solana's Official Install Tool (Recommended for Beginners)
Option B: Using Docker (Recommended for Isolation & Deployment)
Configuration & Becoming an RPC Node
Monitoring & Maintenance
Advanced Topics & Optimization
Troubleshooting Common Issues
1. Why Run Your Own Node?
Unlimited, Rate-Limit-Free Access: Public RPC endpoints (like those from QuickNode, Alchemy, or the Solana Foundation) have rate limits. Your own node has none.
Privacy and Sovereignty: Your queries and transactions are not shared with a third-party provider.
Reliability: You are not affected by the downtime or congestion of public endpoints.
Customization: You can enable specific accounts indexing, use custom plugins, and optimize for your specific use case (e.g., high-throughput JSON-RPC, Geyser plugins for on-chain data).
Supporting the Network: By running a node, you help decentralize and strengthen the Solana network.
2. Hardware & System Requirements
The requirements vary based on the node type (Validator, RPC, Testnet, etc.) and network load. These are current recommendations for a Mainnet-Beta RPC node.
| Component | Minimum Recommendation | Recommended for Production |
|---|---|---|
| CPU | 12-core (x86_64) | 16-core / 24-core+ (AMD EPYC or Intel Xeon) |
| RAM | 128 GB | 256 GB / 512 GB+ |
| Storage | 1 TB NVMe SSD (High IOPS) | 2 TB NVMe SSD (High IOPS) or larger |
| OS | Ubuntu 20.04 LTS or 22.04 LTS | Ubuntu 22.04 LTS |
| Network | 1 Gbps dedicated port | 1 Gbps+ dedicated port |
| Cost | ~$400-600/month (VPS) | ~$1000+/month (VPS/Bare Metal) |
Critical Note on Storage: The Solana ledger is constantly growing. A 1TB drive will fill up. You must plan for snapshot and account storage management. A 2TB drive is the practical minimum to avoid frequent resizing.
3. Step-by-Step Setup Guide
Prerequisites
A server matching the above specs.
Basic command-line (Bash) knowledge.
Option A: Using Solana's Official Install Tool
This is the simplest method to get a node running quickly.
Update and Install Dependencies
sudo apt update && sudo apt upgrade -ysudo apt install -y build-essential pkg-config libssl-dev libudev-dev
Install Rust & Cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shsource ~/.cargo/env
Install the Solana CLI
sh -c "$(curl -sSfL https://release.solana.com/v1.18.17/install)"# Replace `v1.18.17` with the latest stable version from https://github.com/solana-labs/solana/releases
Add Solana binaries to your PATH (the installer will output the path, usually
~/.local/share/solana/install/active_release/bin).echo 'export PATH="~/.local/share/solana/install/active_release/bin:$PATH"' >> ~/.bashrcsource ~/.bashrc
Verify Installation
solana --version
Choose a Network & Configure
Set the CLI to your chosen network:
solana config set --url https://api.mainnet-beta.solana.com# For Testnet: https://api.testnet.solana.com# For Devnet: https://api.devnet.solana.com
Mainnet-Beta: The primary network.
Testnet: For testing applications.
Devnet: For development and integration testing.
Create Identity & Vote Keypairs (Optional for RPC)
For a basic RPC node, you don't need a validator identity or vote keypair. However, creating an identity keypair is good practice for identifying your node.solana-keygen new --outfile ~/.config/solana/validator-keypair.json# Securely back up the seed phrase it gives you!
Tell Solana to use this keypair:
solana config set --keypair ~/.config/solana/validator-keypair.json
Option B: Using Docker (Recommended)
This method provides a clean, isolated environment and is easier to manage and deploy.
Install Docker
curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.shsudo usermod -aG docker $USER# Log out and back in for group changes to take effect.
Create a Directory for Ledger Data
mkdir -p /mnt/solana-ledger# If your fast NVMe is mounted elsewhere, e.g., /ssd, use that path instead.
Create a
start-validator.shScript
This script defines all the configuration parameters for the node.#!/bin/bashsudo docker run -it --rm \ --name solana-validator \ --publish 8899:8899 \ --publish 8900:8900 \ --publish 8001:8001 \ --publish 8001:8001/udp \ --volume /mnt/solana-ledger/:/root/ledger \ --user $(id -u):$(id -g) \ solanalabs/solana:latest \ solana-validator \ --ledger /root/ledger \ --identity /root/ledger/validator-keypair.json \ --entrypoint entrypoint.mainnet-beta.solana.com:8001 \ --entrypoint entrypoint2.mainnet-beta.solana.com:8001 \ --entrypoint entrypoint3.mainnet-beta.solana.com:8001 \ --entrypoint entrypoint4.mainnet-beta.solana.com:8001 \ --entrypoint entrypoint5.mainnet-beta.solana.com:8001 \ --expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \ --wal-recovery-mode skip_any_corrupted_record \ --dynamic-port-range 8000-8020 \ --limit-ledger-size \ --log - \ --full-rpc-api \ --rpc-port 8899 \ --rpc-bind-address 0.0.0.0 \ --private-rpc \ --no-voting
Key Flags Explained:
--limit-ledger-size: Crucial. Limits the ledger disk usage (default is ~1.2TB for mainnet).--full-rpc-api: Enables all RPC methods, includinggetProgramAccountsandgetSignaturesForAddress.--rpc-bind-address 0.0.0.0: Allows RPC connections from outside the Docker container.--private-rpc: Prevents your RPC port from being advertised to the gossip network.--no-voting: This node is not a validator, it's just an RPC node.Make the Script Executable and Run
chmod +x start-validator.sh ./start-validator.sh
4. Configuration & Becoming an RPC Node
Your node is now running, but it's not yet a public RPC endpoint. The --private-rpc flag keeps it private.
To allow public RPC access, remove the
--private-rpcflag from your command. Be careful: this will open your node to the public internet and it may be scraped and used by others, consuming your resources.To use your node privately, point your application or wallet to your server's IP and the RPC port (default
8899).URL:
http://YOUR_SERVER_IP:8899
5. Monitoring & Maintenance
Check Node Health
Use the Solana CLI to check your node's sync status and version.solana catchup --our-localhost# If it says "0 slots behind", you are fully synced.solana --versionsolana validators --output json | jq '.validators[] | select(.identityPubkey == "YOUR_PUBKEY")'
Monitor Logs
If using Docker, view logs withdocker logs -f solana-validator.
Look for warnings about disk space, memory, or network connectivity.Set up a Monitoring Service (Optional but Recommended)
Prometheus + Grafana: Use the Solana Validator Monitor to create a dashboard for block height, vote latency, disk space, etc.
Simple Script: Create a cron job to check if the validator process is running and restart it if not.
Keep Software Updated
Solana updates frequently. Monitor thesolana-validatorGitHub releases and update your node during periods of low activity.
6. Advanced Topics & Optimization
Geyser Plugin System: Allows you to stream account updates directly from the validator to your application. Essential for building efficient indexers or trading bots. This requires compiling the validator with plugin support and writing a configuration file.
Accounts DB Compression: Newer versions of Solana support RocksDB compression for the accounts database, significantly reducing disk usage.
Jito-Solana (MEV): For validators or advanced users interested in MEV, you can run the
jito-solanaclient, which is a fork of the standard client with MEV-boost functionality.Custom RPC Limits: You can configure your node's RPC limits (e.g.,
--rpc-max-request-size,--rpc-max-request-body-size) to handle larger requests from your dApp.
7. Troubleshooting Common Issues
"Error: Node is behind by X slots"
This is normal when first starting. Wait for it to catch up.
If it persists, your node might be underpowered or have a slow network connection.
"Disk I/O Error" or Very Slow Sync
Cause: Almost always a slow storage drive. NVMe SSDs are mandatory.
Check: Use
iostat -x 1to monitor disk utilization. If%utilis consistently near 100%, your disk is the bottleneck."Out of Memory (OOM) Killer"
Cause: The node consumes more RAM than available.
Solution: Add more RAM or reduce the ledger size limit (
--limit-ledger-size).RPC Connection Refused
Check your firewall (UFW, iptables). Ensure ports
8899(RPC),8001(Gossip), and8900(WebSocket if enabled) are open.If using Docker, ensure the
-pflags are correctly set.Ledger Growing Too Large
Use the
--limit-ledger-sizeflag. The node will automatically prune old ledger data.Plan to upgrade your storage drive periodically as the chain grows.
By following this guide, you will have a robust, self-hosted Solana RPC node that provides a solid foundation for your applications and contributes to the health of the Solana ecosystem.
