Running a Node
This guide will walk you through the process of setting up and running a Neutron node. You can use this setup to operate a standard RPC node for network access or as the foundation for becoming a validator.
Access the Neutron network, run applications, or provide RPC services to others
Participate in consensus, earn rewards, and help secure the Neutron network
This guide covers the basic node setup that serves both purposes. If you want to become a validator, refer to our becoming a validator section.
System Requirements
Minimum: 4 or more cores
Recommended: 8 or more cores
Minimum: 16GB
Recommended: 32GB or more
Minimum: 500GB SSD
Recommended: 1TB or more NVMe SSD
Minimum: 100Mbps
Recommended: 1Gbps or more with low latency
Installation Process
Configuration
Download Genesis and Address Book
# Download genesis file
wget -O $HOME/.neutrond/config/genesis.json https://snapshots.kjnodes.com/neutron/genesis.json
# Download address book
wget -O $HOME/.neutrond/config/addrbook.json https://snapshots.kjnodes.com/neutron/addrbook.json
RPC and API Endpoints
For connecting to the Neutron network, you can use the following official endpoints:
RPC: https://rpc-lb.neutron.org
Load-balanced RPC endpoint maintained by Neutron
Solara: https://rest-solara.neutron-1.neutron.org
Vertexa: https://rest-vertexa.neutron-1.neutron.org
High-availability REST API endpoints
For a comprehensive list of community-maintained endpoints, visit Cosmos Directory which provides real-time status and performance metrics for various RPC and API providers.
Configure Your Node
Edit app.toml to set minimum gas prices:
sed -i 's/minimum-gas-prices = ""/minimum-gas-prices = "0.025untrn"/' $HOME/.neutrond/config/app.toml
Add seeds and peers to config.toml:
# Set up seeds
SEEDS="24f609fb5946ca3a979f40b7f54132c00104433e@p2p-erheim.neutron-1.neutron.org:26656,[email protected]:19156"
sed -i 's/seeds = ""/seeds = "'"$SEEDS"'"/' $HOME/.neutrond/config/config.toml
# Set up persistent peers
PEERS="e5d2743d9a3de514e4f7b9461bf3f0c1500c58d9@neutron.peer.stakewith.us:39956,[email protected]:15600"
sed -i 's/persistent_peers = ""/persistent_peers = "'"$PEERS"'"/' $HOME/.neutrond/config/config.toml
For a complete list of available seeds and peers, check the Peers page.
State Sync or Snapshot (Optional)
To speed up the initial sync process, you can use state sync or a snapshot.
Set Up SystemD Service
Create a systemd service file for Neutron:
sudo tee /etc/systemd/system/neutrond.service > /dev/null <<EOF
[Unit]
Description=Neutron Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which neutrond) start
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Start the service:
sudo systemctl daemon-reload
sudo systemctl enable neutrond
sudo systemctl start neutrond
Monitor Node Status
Performance Monitoring
Set up comprehensive monitoring to ensure your validator meets performance requirements:
Essential Monitoring Stack
Prometheus: Collect system and validator metrics
Node Exporter: System resource monitoring
Cosmos Exporter: Neutron-specific metrics
Grafana: Create dashboards for metrics visualization
Alertmanager: Configure alerts for critical issues
TenderDuty: Validator-specific monitoring tool
Key Metrics to Monitor
Configure alerts for these critical metrics:
- Block Signing: Track missed blocks and signing percentage
- Oracle Performance: Monitor oracle price update success rate
- System Resources: CPU, memory, disk usage, and network connectivity
- Node Health: Sync status, peer count, and consensus participation
Alert Configuration
Set up alerts for:
Security Recommendations
Firewall Configuration
Configure your firewall to only allow necessary ports:
# Install ufw
sudo apt install ufw -y
# Configure ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 26656/tcp # P2P
sudo ufw allow 26657/tcp # RPC (restrict to specific IPs if needed)
sudo ufw allow 1317/tcp # API (restrict to specific IPs if needed)
sudo ufw allow 9090/tcp # gRPC (restrict to specific IPs if needed)
# Enable ufw
sudo ufw enable
SSH Hardening
Improve SSH security with these steps:
# Edit SSH config
sudo nano /etc/ssh/sshd_config
Make these changes:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Restart SSH:
sudo systemctl restart sshd
Sentry Node Architecture
For production validators, consider implementing a sentry node architecture:
- Set up separate sentry nodes that connect to the public network
- Configure your validator to only connect to your sentry nodes
- This protects your validator from DDoS attacks
Architecture: Internet <-> Sentry Nodes <-> Private Network <-> Validator
Key Management
Secure your validator keys:
- Store validator keys on hardware security modules (HSM) when possible
- Use separate signing keys and never expose private keys
- Implement proper backup and recovery procedures
- Consider multi-signature setups for additional security
Best Practices
Implement redundant systems, backup power, and multiple network providers to avoid single points of failure.
Maintain testing infrastructure and participate in testnet upgrades to ensure smooth mainnet transitions.
Regularly monitor and optimize system performance to maintain greater than 99.5% uptime and greater than 98% oracle success rates.
Maintain detailed operational procedures, incident response plans, and recovery documentation.
Next Steps
Choose your path based on your intended use:
You're Ready! Your node can now serve RPC requests, sync with the network, and support applications. Consider configuring:
- API endpoints for application access
- Monitoring for node health
- Backup and recovery procedures
To become a validator, continue with these additional steps:
- Set up the Connect Oracle Service
- Review validator requirements
- Complete validator registration
Additional Configuration for RPC Nodes
If you're running an RPC node for public or application use, consider these additional configurations:
# Enable API and configure CORS (in app.toml)
sed -i 's/enable = false/enable = true/' $HOME/.neutrond/config/app.toml
sed -i 's/enabled-unsafe-cors = false/enabled-unsafe-cors = true/' $HOME/.neutrond/config/app.toml
# Configure RPC settings (in config.toml)
sed -i 's/laddr = "tcp:\/\/127.0.0.1:26657"/laddr = "tcp:\/\/0.0.0.0:26657"/' $HOME/.neutrond/config/config.toml
Only enable external access if you understand the security implications and have proper firewall rules in place.