Build an Akash RPC node manually on a Linux server. This guide provides full control over node configuration and is ideal for validators, providers, and production dApps.
Time: 15-30 minutes (setup) + 20-30 minutes (sync via snapshot)
Requirements:
- Ubuntu 24.04 LTS
- 4 CPU cores
- 8 GB RAM
- 100 GB SSD storage (minimum), 1 TB recommended
- Root access
Overview
This guide covers:
- Install Akash Software
- Add Akash to PATH
- Choose Node Moniker
- Initialize Node
- Set Minimum Gas Price
- Copy Genesis File
- Add Seed and Peer Nodes
- Configure Fast Sync
- Download Blockchain Snapshot
- Start the Node
Step 1 - Install Akash Software
Install the latest stable version of Akash Node software.
Install Dependencies
apt updateapt install -y jq unzip curlDownload and Install Akash
cd ~curl -sSfL https://raw.githubusercontent.com/akash-network/node/main/install.sh | shThis installs the akash binary to ~/bin/akash.
Step 2 - Add Akash to PATH
Add the Akash binary location to your system PATH.
Edit Environment File
nano /etc/environmentUpdate PATH
Add /root/bin to the existing PATH:
Before:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"After:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/bin"Save and exit (Ctrl+X, then Y, then Enter).
Activate Changes
source /etc/environmentVerify Installation
akash versionExpected output:
v1.1.0Step 3 - Choose Node Moniker
Choose a memorable name for your node (ASCII characters only).
export AKASH_MONIKER="my-akash-node"Note: You can change the moniker later in ~/.akash/config/config.toml.
Step 4 - Initialize Node
Initialize your Akash node with the mainnet chain ID.
Set Network Variables
export AKASH_NET="https://raw.githubusercontent.com/akash-network/net/main/mainnet"export AKASH_CHAIN_ID="$(curl -s "$AKASH_NET/chain-id.txt")"Initialize Node
akash init --chain-id "$AKASH_CHAIN_ID" "$AKASH_MONIKER"This creates the node configuration in ~/.akash/.
Expected: JSON output with chain ID and node information.
Step 5 - Set Minimum Gas Price
Set a minimum gas price to protect your node from spam transactions.
nano ~/.akash/config/app.tomlFind the minimum-gas-prices field and set it to:
minimum-gas-prices = "0.0025uakt"Save and exit.
Step 6 - Copy Genesis File
Download the genesis file for the Akash mainnet.
curl -s "$AKASH_NET/genesis.json" > $HOME/.akash/config/genesis.jsonStep 7 - Add Seed and Peer Nodes
Configure seed and peer nodes to connect your node to the network.
Download and Configure Automatically
# Get seed nodesSEED_NODES=$(curl -s "$AKASH_NET/seed-nodes.txt" | paste -d, -s)
# Get peer nodesPEER_NODES=$(curl -s "$AKASH_NET/peer-nodes.txt" | paste -d, -s)
# Update config.toml with seed nodessed -i.bak "s|^seeds = \"\"|seeds = \"$SEED_NODES\"|" ~/.akash/config/config.toml
# Update config.toml with peer nodessed -i.bak "s|^persistent_peers = \"\"|persistent_peers = \"$PEER_NODES\"|" ~/.akash/config/config.toml
# Configure RPC to listen on all interfacessed -i.bak 's|laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' ~/.akash/config/config.tomlWhat this does:
- Downloads current seed and peer node lists
- Automatically updates
config.tomlwith the nodes - Configures RPC to accept external connections
- Creates backup files (
.bak) before modifications
Verify Configuration
grep "^seeds" ~/.akash/config/config.tomlgrep "^persistent_peers" ~/.akash/config/config.tomlgrep "laddr.*26657" ~/.akash/config/config.tomlExpected output:
seeds = "[email protected]:26656,..."persistent_peers = "[email protected]:51656,..."laddr = "tcp://0.0.0.0:26657"Step 8 - Configure Fast Sync
Verify Fast Sync is enabled (it should be by default).
nano ~/.akash/config/config.tomlConfirm these settings:
# Fast Sync enabledfast_sync = true
# Fast Sync version (v0 recommended)[fastsync]version = "v0"Step 9 - Download Blockchain Snapshot
Download a blockchain snapshot to sync quickly. Snapshots are updated hourly.
Remove Existing Data
rm -rf ~/.akash/datamkdir -p ~/.akash/datacd ~/.akashDownload Latest Snapshot
Snapshot URL: https://snapshots.akash.network/akashnet-2/latest
Size: ~15GB compressed, updated hourly
# Install lz4 if not already installedapt-get install -y lz4
# Download snapshotwget -O akashnet-2_latest.tar.lz4 https://snapshots.akash.network/akashnet-2/latest --inet4-only
# Decompresslz4 -d akashnet-2_latest.tar.lz4
# Extracttar -xvf akashnet-2_latest.tarNote: This process takes 20-30 minutes depending on your internet speed (~15 GB compressed download).
Step 10 - Start the Node
Create a systemd service to run your Akash node.
Create Start Script
cat > /usr/local/bin/start-akash-node.sh << 'EOF'#!/usr/bin/env bash/root/bin/akash startEOF
chmod +x /usr/local/bin/start-akash-node.shCreate Systemd Service
cat > /etc/systemd/system/akash-node.service << 'EOF'[Unit]Description=Akash NodeAfter=network.target
[Service]User=rootGroup=rootExecStart=/usr/local/bin/start-akash-node.shRestart=on-failureRestartSec=15LimitNOFILE=65535
[Install]WantedBy=multi-user.targetEOFStart the Service
systemctl daemon-reloadsystemctl enable akash-nodesystemctl start akash-nodeCheck Node Status
akash statusExpected (while syncing):
{ "SyncInfo": { "latest_block_height": "15234567", "catching_up": true }}Expected (when synced):
{ "SyncInfo": { "latest_block_height": "15234567", "catching_up": false }}Compare latest_block_height with Mintscan to verify sync status.
Monitor Logs
journalctl -u akash-node -fPress Ctrl+C to stop following logs.
Configuration Files
Your Akash node configuration is stored in ~/.akash/config/:
app.toml- Cosmos SDK application configuration (gas prices, API, gRPC)config.toml- Tendermint consensus configuration (P2P, RPC, mempool)genesis.json- Genesis state of the blockchain
Optional: Enable RPC & API Services
RPC Service (Port 26657)
Already enabled if you followed Step 7. Used for transactions and queries.
Configuration: ~/.akash/config/config.toml
[rpc]laddr = "tcp://0.0.0.0:26657"API Service (Port 1317)
Enable the REST API for external tools (wallets, dashboards).
Edit ~/.akash/config/app.toml:
[api]enable = trueaddress = "tcp://0.0.0.0:1317"Restart the node:
systemctl restart akash-nodeState Pruning
Control how much blockchain history your node stores.
Pruning Strategies:
default- Keep last 100 states + every 500th state (recommended)nothing- Keep all history (archival node, requires >1TB storage)everything- Keep only current state (not for validators!)custom- Manual configuration
Configuration: ~/.akash/config/app.toml
[pruning]pruning = "default"Important: Validators should use default or nothing. Never use everything for validator nodes.
Other Networks
This guide uses Akash mainnet. For sandbox or other networks:
Next Steps
- For Validators: See Running a Validator
- For Providers: Use your node as an RPC endpoint in provider configuration
- For dApps: Configure your application to use your node’s RPC/API endpoints
Questions? Join #validators on Discord