This page outlines the minimum and recommended system requirements for operating an Agave validator on Solana.
Minimum SOL Requirements
There is no strict minimum amount of SOL required to run an Agave validator on Solana.
However, in order to participate in consensus, a vote account is required which has a rent-exempt reserve of 0.02685864 SOL. Voting also requires sending a vote transaction for each block the validator agrees with, which can cost up to 1.1 SOL per day.
Ensure your validator identity account always has enough SOL to pay for vote transactions. Running out of SOL will cause your validator to stop voting.
Hardware Requirements
The hardware recommendations below are provided as a guide. Operators are encouraged to do their own performance testing.
CPU
Base Requirements:
- 2.8GHz base clock speed, or faster
- SHA extensions instruction support
- AMD Gen 3 or newer
- Intel Ice Lake or newer
- Higher clock speed is preferable over more cores
- AVX2 instruction support (to use official release binaries, self-compile otherwise)
- Support for AVX512f is helpful
Core Count:
- Validators: 12 cores / 24 threads, or more
- RPC Nodes: 16 cores / 32 threads, or more
RAM
Base Requirements:
- Error Correction Code (ECC) memory is suggested
- Motherboard with 512GB capacity suggested
Memory Size:
- Validators: 256GB or more
- RPC Nodes: 512GB or more (for all account indexes)
Disk
PCIe Gen3 x4 NVME SSD, or better, on each of:
- Accounts: 1TB or larger. High TBW (Total Bytes Written)
- Ledger: 1TB or larger. High TBW suggested
- Snapshots: 500GB or larger. High TBW suggested
- OS: (Optional) 500GB or larger. SATA OK
Accounts and ledger can be stored on the same disk, however due to high IOPS, this is not recommended. For RPC nodes, accounts and ledger should not be stored on the same disk.
The OS may be installed on the ledger disk, though testing has shown better performance with the ledger on its own disk.
The Samsung 970 and 980 Pro series SSDs are popular with the validator community.
For RPC Nodes:
Consider a larger ledger disk if longer transaction history is required.
A community maintained list of currently optimal hardware can be found at solanahcl.org. It is updated automatically from the solanahcl/solanahcl Github repo.
Networking Requirements
A stable connection with a public IPv4 address is required.
- For an unstaked node: 1 GBit/s symmetric connection is sufficient
- For a staked node: at least 2 GBit/s symmetric connection is required
- Recommended: 10 GBit/s of available bandwidth for stable operation
Firewall Configuration
It is not recommended to run a validator behind a NAT. Operators who choose to do so should be comfortable configuring their networking equipment and debugging any traversal issues on their own.
The following traffic needs to be allowed. Furthermore, there should not be any traffic filtering from your validator to internet.
Required Ports
| Source | Destination | Protocol | Port(s) | Comment |
|---|
| any | your validator’s IP | TCP and UDP | 8000-8030 | P2P protocols (gossip, turbine, repair, etc). Can be limited to any free port range with --dynamic-port-range |
Recommended Ports
When you manage your validator via SSH it is recommended to limit the allowed SSH traffic to your validator management IP.
| Source | Destination | Protocol | Port(s) | Comment |
|---|
| your IP address | your validator’s management IP | TCP | 22 | SSH management traffic. Port can be different depending on your SSH config. |
Your source IP address should be a static public IP address. Please check with your service provider if you’re not sure if your public IP address is static.
Optional Ports
For security purposes, it is not suggested that the following ports be open to the internet on staked, mainnet-beta validators.
| Source | Destination | Protocol | Port(s) | Comment |
|---|
| RPC user | your validator’s IP | TCP | 8899 | JSONRPC over HTTP. Change with --rpc-port RPC_PORT |
| RPC user | your validator’s IP | TCP | 8900 | JSONRPC over Websockets. Derived. Uses RPC_PORT + 1 |
Software Requirements
Operating System
- We build and run on Ubuntu 24.04
- Prebuilt binaries are currently available targeting x86_64 with AVX2 support on Ubuntu 20.04 (will stop being published in the near future as of May 2025)
Building from source is required for all other supported target platforms (MacOS and Windows) and suggested for Linux as it will soon be required there as well.
Solana CLI
See the Installing Solana CLI documentation for the current Solana CLI software release.
Running an Agave node in the cloud requires significantly greater operational expertise to achieve stability and performance. Do not expect to find sympathetic voices should you choose this route and find yourself in need of support.
Docker
Running an Agave validator for live clusters (including mainnet-beta) inside Docker is not recommended and generally not supported. This is due to general concerns of Docker’s containerization overhead and resultant performance degradation unless specially configured. We use Docker only for development purposes.
System Tuning Requirements
Your system will need to be tuned to run properly. Your validator may not start without the settings below.
Linux Tuning
Optimize sysctl knobs
sudo bash -c "cat >/etc/sysctl.d/21-agave-validator.conf <<EOF
# Increase max UDP buffer sizes
net.core.rmem_max = 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
EOF"
sudo sysctl -p /etc/sysctl.d/21-agave-validator.conf
Increase systemd and session file limits
Add the following to the [Service] section of your systemd service file, if you use one:
LimitNOFILE=1000000
LimitMEMLOCK=2000000000
Otherwise add the following to the [Manager] section of /etc/systemd/system.conf:
DefaultLimitNOFILE=1000000
DefaultLimitMEMLOCK=2000000000
Then reload systemd:
sudo systemctl daemon-reload
Set security limits:
sudo bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1000000
# Increase memory locked limit (kB)
* - memlock 2000000
EOF"
Close all open sessions (log out then, in again) for the changes to take effect.