An open API service indexing awesome lists of open source software.

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.

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.



Release


License


GitHub stars


GitHub forks


Bash
Solana
Ubuntu
RPC Node


δΈ­ζ–‡ |
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.

---



⭐ If this project helps you, please give us a Star!



Made with ❀️ by fnzero