https://github.com/0xfnzero/solana-rpc-install
Solana Node Installation Guide: Optimize Ubuntu system parameters to allow the Solana node to run on more affordable servers while maintaining good performance and block synchronization speed.
https://github.com/0xfnzero/solana-rpc-install
0xfnzero agave fnzero geyser grpc jito jito-bundle jito-solana shredstream solana solana-node solana-rpc yellowstone
Last synced: 25 days ago
JSON representation
Solana Node Installation Guide: Optimize Ubuntu system parameters to allow the Solana node to run on more affordable servers while maintaining good performance and block synchronization speed.
- Host: GitHub
- URL: https://github.com/0xfnzero/solana-rpc-install
- Owner: 0xfnzero
- Created: 2025-05-19T13:52:42.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2026-02-28T05:44:42.000Z (27 days ago)
- Last Synced: 2026-02-28T09:14:17.641Z (27 days ago)
- Topics: 0xfnzero, agave, fnzero, geyser, grpc, jito, jito-bundle, jito-solana, shredstream, solana, solana-node, solana-rpc, yellowstone
- Language: Shell
- Homepage: https://fnzero.dev
- Size: 302 KB
- Stars: 155
- Watchers: 1
- Forks: 78
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
β‘ Solana RPC Install
Production-ready Solana RPC node deployment in 3 simple steps
Deploy battle-tested Solana RPC nodes with stable, proven configurations and source compilation from GitHub.
δΈζ |
English |
Website |
Telegram |
Discord
---
## π― System Requirements
**Minimum Configuration:**
- **CPU**: AMD Ryzen 9 9950X (or equivalent)
- **RAM**: 128 GB minimum (256 GB recommended)
- **Storage**: 1-3x NVMe SSDs (flexible configuration, script auto-adapts)
- **1 disk**: System disk only (basic setup)
- **2 disks**: System + 1 data disk (recommended, best cost-performance)
- **3 disks**: System + 2 data disks (optimal performance)
- **4+ disks**: System + 3 data disks (accounts/ledger/snapshot separated)
- **OS**: Ubuntu 22.04/24.04
- **Network**: High-bandwidth connection (1 Gbps+)
## π Quick Start
**Three-Step Installation**
```bash
# Switch to root user
sudo su -
# Clone repository to /root
cd /root
git clone https://github.com/0xfnzero/solana-rpc-install.git
cd solana-rpc-install
# Step 1: Mount disks + System optimization
bash 1-prepare.sh
# (Optional) Verify mount configuration
bash verify-mounts.sh
# Step 2: Build Jito Solana from source (15-30 minutes)
bash 2-install-jito-validator.sh
# Enter version when prompted (e.g., v3.0.12)
# Enhanced version validation with network fallback
# Step 3: Download snapshot and start node
bash 3-start.sh
```
> **βΉοΈ Installation Method**
> This installation uses **source compilation from GitHub** to build Jito Solana validator. This ensures you get the complete `agave-validator` binary with full MEV support required for RPC nodes.
## β οΈ Critical: Memory Management Details (Required for 128GB Systems)
> **π Why Swap Might Be Needed?**
> - **Memory peaks can exceed 128GB** during initial sync (115-130GB)
> - Without swap, node may crash with OOM
> - Swap provides safety buffer during sync phase
> - After sync stabilizes, memory usage drops to 85-105GB
### π§ Swap Management (Optional for 128GB Systems)
**Add Swap** (If needed during sync)
```bash
# Only if you see high memory pressure during sync
cd /root/solana-rpc-install
sudo bash add-swap-128g.sh
# Script automatically checks:
# β Only adds swap if system RAM < 160GB
# β Skips if swap already exists
# β Adds 32GB swap with swappiness=10 (minimal usage)
```
**Remove Swap** (After sync completes)
Once synchronization completes, memory usage stabilizes at 85-105GB, and you can remove swap for optimal performance:
```bash
# Check current memory usage
systemctl status sol | grep Memory
# If memory peak < 105GB, safe to remove swap
cd /root/solana-rpc-install
sudo bash remove-swap.sh
```
### π Decision Guidelines
| Memory Peak | Recommended Action |
|-------------|-------------------|
| **< 105GB** | β
Can remove swap for optimal performance |
| **105-110GB** | β οΈ Recommended to keep swap as buffer |
| **> 110GB** | π΄ Must keep swap to prevent OOM |
**Note**: If memory issues occur after removing swap, you can always add it back:
```bash
cd /root/solana-rpc-install
sudo bash add-swap-128g.sh
```
---
## π Next Steps: Install Jito ShredStream
After completing your RPC node installation, you can enhance performance with Jito ShredStream:
- **Quick Start Guide**: [QUICK_START.md](https://github.com/0xfnzero/jito-shredstream-install/blob/main/QUICK_START.md)
- **Repository**: [jito-shredstream-install](https://github.com/0xfnzero/jito-shredstream-install)
ShredStream provides low-latency block streaming for Jito MEV infrastructure.
## π Monitoring & Management
```bash
# Real-time logs
journalctl -u sol -f
# Performance monitoring
bash /root/performance-monitor.sh snapshot
# Health check (available after 30 minutes)
/root/get_health.sh
# Sync progress
/root/catchup.sh
```
## β¨ Key Features
### π§ Battle-Tested Configuration Philosophy
All configurations are based on **proven production deployments** with thousands of hours of uptime:
- **Conservative Stability > Aggressive Optimization**
- **Simple Defaults > Complex Customization**
- **Proven Performance > Theoretical Gains**
### π¦ System Optimizations (No Reboot Required)
- π **TCP Congestion Control**: Westwood (classic, stable algorithm)
- π§ **TCP Buffers**: 12MB (conservative, low-latency optimized)
- πΎ **File Descriptors**: 1M limit (sufficient for production)
- π‘οΈ **Memory Management**: swappiness=30 (balanced approach)
- π **VM Settings**: Conservative dirty ratios for stability
### β‘ Yellowstone gRPC Configuration
- β
**Compression Enabled**: gzip + zstd (reduces memory copy overhead)
- π¦ **Conservative Buffers**: 50M snapshot, 200K channel (fast processing)
- π― **Proven Defaults**: System-managed Tokio, default HTTP/2 settings
- π‘οΈ **Resource Protection**: Strict filter limits prevent abuse
### π Deployment Features
- π¦ **Source Compilation Installation**:
- π§ Jito Solana from official GitHub (15-30 min)
- β
Complete validator binary with full MEV support
- π― 100% compliant with Jito Foundation standards
- π§ **Intelligent Configuration Selection**: Auto-detects system RAM and selects optimal validator configuration
- TIER 1 (128GB): Conservative settings for 128-159GB systems
- TIER 2 (192GB): Balanced configuration for 192-223GB systems
- TIER 3 (256GB): High-performance for 256-383GB systems
- TIER 4 (512GB+): Maximum capacity for enterprise deployments
- π **Automatic Disk Management**: Smart disk detection and mounting
- π‘οΈ **Production Ready**: Systemd service with dynamic memory limits and OOM protection
- π **Network Resilience**: Enhanced version verification with graceful degradation
- π **Monitoring Tools**: Performance tracking and health checks included
## π Network Ports
| Port | Protocol | Purpose |
|------|----------|---------|
| **8899** | HTTP | RPC endpoint |
| **8900** | WebSocket | Real-time subscriptions |
| **10900** | gRPC | High-performance data streaming |
| **8000-8025** | TCP/UDP | Validator communication (dynamic) |
## π Performance Metrics
- **Snapshot Download**: Network-dependent (typically 200MB - 1GB/s)
- **Memory Usage**: 60-110GB during sync, 85-105GB stable (optimized for 128GB systems)
- **Sync Time**: 1-3 hours (from snapshot)
- **CPU Usage**: Multi-core optimized (32+ cores recommended)
- **Stability**: Proven configuration with >99.9% uptime in production
## π οΈ Architecture
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Solana RPC Node Stack β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Jito Solana Validator (v3.0.x) β
β ββ Installation: Source compilation from GitHub β
β β β’ agave-validator with full MEV support β
β β β’ 100% Jito Foundation compliant (15-30 min) β
β ββ Yellowstone gRPC Plugin v10.0.1 (Data streaming) β
β ββ RPC HTTP/WebSocket (Port 8899/8900) β
β ββ Accounts & Ledger (Optimized RocksDB) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β System Optimizations (Battle-Tested) β
β ββ TCP: 12MB buffers, Westwood congestion control β
β ββ Memory: swappiness=30, balanced VM settings β
β ββ File Descriptors: 1M limit, sufficient for prod β
β ββ Stability: Conservative defaults, proven in prod β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Yellowstone gRPC (Open-Source Tested Config) β
β ββ Compression: gzip+zstd enabled (fast processing) β
β ββ Buffers: 50M snapshot, 200K channel (low latency) β
β ββ Defaults: System-managed, no over-optimization β
β ββ Protection: Strict filters, resource limits β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Infrastructure β
β ββ Systemd Service (Auto-restart, graceful shutdown) β
β ββ Multi-disk Setup (System/Accounts/Ledger) β
β ββ Monitoring Tools (Performance/Health/Catchup) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
## π§ͺ Configuration Philosophy
### Why Conservative Configuration?
Based on extensive production testing, we discovered:
1. **Compression Enabled = Lower Latency**
- Even on localhost, compressed data transfers faster in memory
- CPU overhead is minimal, latency reduction is significant
2. **Smaller Buffers = Faster Processing**
- 50M snapshot vs 250M: Less queue delay, faster throughput
- 200K channel vs 1.5M: Reduced "buffer bloat" latency
3. **System Defaults = Better Stability**
- No custom Tokio threads: Let system auto-manage
- No custom HTTP/2 settings: Defaults are already optimized
- Fewer custom parameters = Fewer potential issues
4. **Proven in Production**
- Thousands of hours of uptime
- Tested across different hardware configurations
- Battle-tested under real-world load
### π Backup Configuration
If you need the aggressive optimization config for specific use cases:
- Extreme config backed up as `yellowstone-config-extreme-backup.json`
- Accessible in repository history (commit 6cc31d9)
## π Documentation
- **Installation Guide**: You're reading it!
- **Mount Strategy**: See [MOUNT_STRATEGY.md](MOUNT_STRATEGY.md)
- **Troubleshooting**: Check logs with `journalctl -u sol -f`
- **Configuration**: All optimizations included by default
- **Monitoring**: Use provided helper scripts
- **Optimization Details**: See `YELLOWSTONE_OPTIMIZATION.md`
## π€ Support & Community
- **Telegram**: [https://t.me/fnzero_group](https://t.me/fnzero_group)
- **Discord**: [https://discord.gg/vuazbGkqQE](https://discord.gg/vuazbGkqQE)
- **Issues**: [GitHub Issues](https://github.com/0xfnzero/solana-rpc-install/issues)
- **Website**: [https://fnzero.dev/](https://fnzero.dev/)
## π License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---