- install guide
- contributions
Solana Validator Installation Guide
About Solana
Solana validators run the Agave client (or a compatible client such as Jito or Firedancer). A validator keeps the full ledger, replays every block and votes on the fork it believes is canonical. Voting costs SOL in transaction fees, so a validator has a running cost from the first slot it votes on.
Facts that shape the setup:
- Solana is the most hardware-hungry network in common validator practice. Under-provisioning does not degrade gracefully — the node falls behind, becomes delinquent and stops earning.
- The identity keypair and the vote account are different things. The identity signs blocks and votes; the vote account holds the stake relationship and the reward. Losing the identity key means losing the node; running two nodes with the same identity at the same time will get you slashed by the network's duplicate-block detection in practice, so treat it as a hard rule: one identity, one running process.
- Restarts are routine and expensive. Plan for them: snapshots, swap and fast disks are what make a restart minutes instead of hours.
Requirements
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 16 cores / 32 threads | 32 cores, high single-core clock |
| RAM | 256 GB | 384–512 GB |
| Ledger disk | 1 TB NVMe | 2 TB NVMe, dedicated |
| Accounts disk | 500 GB NVMe | 1 TB NVMe, dedicated |
| Network | 1 Gbps | 10 Gbps+ |
| OS | Ubuntu 22.04 | Ubuntu 24.04 |
Put the ledger and the accounts database on separate NVMe devices, and keep both off the root filesystem. Snapshots belong on the ledger filesystem, not on root — a root filesystem that fills up during snapshot creation takes the node down.
Prepare the system
Raise the kernel limits Solana needs:
Add swap even on a large-memory host. A validator that hits memory pressure without swap dies; with swap it slows down and survives:
Install the client
Install the Agave release you intend to run:
Jito's build is a drop-in alternative that adds MEV tips; it is installed from
its own tag and reports itself as agave-validator with a Jito suffix. Whatever
you choose, record the exact tag and the binary SHA-256 you deployed — you will
need it to prove what is running after an incident:
Create the keys
Back up all three offline before funding anything. The authorized withdrawer controls the stake and should never live on the validator host.
Create the vote account once, from a funded wallet:
Create the systemd unit
Open the ports
Keep the RPC port closed to the internet. --private-rpc restricts it, but the
firewall is what enforces it.
Verify
Then check what the network sees, which is the only view that matters:
delinquent=false, a fresh lastVote and an advancing rootSlot are the three
signals that say the validator is genuinely working. "The service is running" is
not one of them.
Restart discipline
A restart replays from the last snapshot. Before every planned restart:
- confirm a recent snapshot exists under
--snapshots; - confirm free space on both the ledger and accounts filesystems;
- stop the service, wait for the process to exit fully, then start it;
- watch
solana catchup --our-localhostuntil the gap closes; - confirm
delinquent=falsefrom an external RPC before calling it done.
Upgrade
Solana upgrades are frequent and coordinated with the cluster. Upgrade during a low-stake window, keep the previous release directory in place so a rollback is a symlink change, and record the new version and binary hash. After restarting, run the same external checks as above — version, delinquency, last vote, root slot.
Monitoring
Watch: service state and restart count, local getHealth, local slot against
public slot, delinquent, last vote and root slot from an external RPC, disk
free on ledger and accounts, memory and swap usage, and the vote account
balance — a vote account that runs out of SOL stops voting.
Created by POSTHUMAN validators
Website: https://posthuman.digital