Ledgera Ledgera
Networks CelestiaMAINNETCelestiaTESTNETOsmosisMAINNETDymensionMAINNETLavaMAINNET
MAINNET

Lava MAINNET – Installation Guide

Full bootstrap recipe for chain lava-mainnet-1 running lavad v6.2.0 – denom ulava, snapshot service coming soon. Walks through dependencies, Go, build, init, systemd, snapshot apply and a wallet/validator walkthrough. Operated by Ledgera.

Coming soon. The public RPC, REST, gRPC, seed and snapshot endpoints listed in this guide are not live yet. The setup steps are accurate, but the *-proledgera.com endpoints below will begin resolving once the infrastructure is deployed.

01 Prerequisites

Ubuntu 22.04 LTS or 24.04 LTS. Root or sudo-capable user. Minimum 8 GB RAM and a recent SSD with at least 250 GB free for lava-mainnet-1.

02 Update System and Install Build Tools

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git wget jq lz4 unzip tar make gcc clang \
  pkg-config libssl-dev build-essential ncdu htop

03 Install Go 1.26.4

ver="1.26.4"
cd $HOME
wget "https://go.dev/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"

[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export GOROOT=/usr/local/go"   >> ~/.bash_profile
echo "export GOPATH=\$HOME/go"       >> ~/.bash_profile
echo "export PATH=\$GOPATH/bin:\$GOROOT/bin:\$PATH" >> ~/.bash_profile
source ~/.bash_profile
go version

04 Build and Install lavad

cd $HOME
rm -rf lava
git clone https://github.com/lavanet/lava.git
cd lava
git checkout v6.2.0
make install

05 Initialize the Node

MONIKER="<your-moniker>"

lavad config chain-id lava-mainnet-1
lavad config keyring-backend os
lavad config node tcp://localhost:26657

lavad init "$MONIKER" --chain-id lava-mainnet-1

06 Download Genesis and Address Book

wget -O ~/.lava/config/genesis.json \
  https://github.com/lavanet/mainnet-genesis/raw/main/genesis.json

wget -O ~/.lava/config/addrbook.json \
  https://snapshot-lava-mainnet.proledgera.com/addrbook.json

07 Configure Node Settings

7.1 Set Minimum Gas Price

sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.000001ulava"|' \
  $HOME/.lava/config/app.toml

7.2 Configure Pruning (optional, saves disk)

sed -i 's|pruning =.*|pruning = "custom"|;
  s|pruning-keep-recent =.*|pruning-keep-recent = "100"|;
  s|pruning-interval =.*|pruning-interval = "19"|' \
  $HOME/.lava/config/app.toml

7.3 Disable Indexer (optional)

sed -i 's|^indexer *=.*|indexer = "null"|' \
  $HOME/.lava/config/config.toml

7.4 Enable Prometheus Metrics

sed -i 's|prometheus = false|prometheus = true|' \
  $HOME/.lava/config/config.toml

7.5 Add Seeds and Persistent Peers

SEEDS="e03901f901a638ca8982b08f57a79bfe9926cff3@seed-lava-mainnet.proledgera.com:26656"
PEERS=$(curl -s https://snapshot-lava-mainnet.proledgera.com/peers.txt | tr '\n' ',' | sed 's/,$//')

sed -i.bak -E "s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"$SEEDS\"| ; \
  s|^(persistent_peers[[:space:]]+=[[:space:]]+).*$|\1\"$PEERS\"|" \
  $HOME/.lava/config/config.toml

08 Create Systemd Service

sudo tee /etc/systemd/system/lavad.service > /dev/null <<EOF
[Unit]
Description=Lava (lava-mainnet-1)
After=network-online.target

[Service]
User=$USER
ExecStart=$(which lavad) start --home $HOME/.lava
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable lavad

09 Download and Apply Snapshot (optional, recommended)

Pruned snapshot, lz4-compressed, coming soon. Cuts initial sync time from days to minutes.

# Preserve validator state
cp $HOME/.lava/data/priv_validator_state.json \
   $HOME/.lava/priv_validator_state.json.backup

# Wipe + pull latest snapshot
rm -rf $HOME/.lava/data
lavad tendermint unsafe-reset-all --home $HOME/.lava/ --keep-addr-book

SNAP=$(curl -s https://snapshot-lava-mainnet.proledgera.com/latest)
curl -L $SNAP | lz4 -d | tar -x -C $HOME/.lava

# Restore validator state
mv $HOME/.lava/priv_validator_state.json.backup \
   $HOME/.lava/data/priv_validator_state.json

10 Start the Node

sudo systemctl start lavad
sudo journalctl -u lavad -f -o cat

11 Verify Node Status

Check service status

sudo systemctl status lavad

Check sync status

lavad status 2>&1 | jq .SyncInfo
curl -s localhost:26657/status | jq .result.sync_info

12 Create or Restore Wallet

lavad keys add wallet
lavad keys add wallet --recover
ImportantSave the mnemonic phrase from the output in a safe place. Without it you cannot recover the wallet.

13 Check Wallet Balance

lavad q bank balances $(lavad keys show wallet -a)

14 Create Validator (after full sync)

lavad tx staking create-validator \
  --amount=1000000ulava \
  --pubkey=$(lavad tendermint show-validator) \
  --moniker="<your-moniker>" \
  --chain-id=lava-mainnet-1 \
  --commission-rate=0.05 \
  --commission-max-rate=0.20 \
  --commission-max-change-rate=0.01 \
  --min-self-delegation=1 \
  --from=wallet --fees=5000ulava -y
Reference

15 Public Endpoints

Maintained by Ledgera. Mirror to your own infrastructure for production deployments.

RPChttps://rpc-lava-mainnet.proledgera.com
RESThttps://api-lava-mainnet.proledgera.com
gRPCgrpc-lava-mainnet.proledgera.com:443
Addrbookhttps://snapshot-lava-mainnet.proledgera.com/addrbook.json

16 Upgrade

TAG=v6.2.0

cd ~/lava
git fetch --all --tags
git checkout $TAG
make install

lavad version
sudo systemctl restart lavad

17 State Sync (alternative to snapshot)

SNAP_RPC="https://rpc-lava-mainnet.proledgera.com:443"

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height)
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000))
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
  s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
  s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
  s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" \
  $HOME/.lava/config/config.toml

lavad tendermint unsafe-reset-all --home $HOME/.lava --keep-addr-book
sudo systemctl restart lavad

18 Useful Commands

Keys
lavad keys list
lavad keys show wallet -a
lavad keys show wallet --bech val -a
Tokens
lavad q bank balances $(lavad keys show wallet -a)
lavad tx bank send wallet <to> 1000000ulava \
  --chain-id lava-mainnet-1 --fees 5000ulava -y

VAL=$(lavad keys show wallet --bech val -a)
lavad tx staking delegate $VAL 1000000ulava \
  --from wallet --chain-id lava-mainnet-1 --fees 5000ulava -y

lavad tx distribution withdraw-rewards $VAL \
  --commission --from wallet --chain-id lava-mainnet-1 --fees 5000ulava -y
Validator
lavad tx staking edit-validator \
  --moniker="<new-moniker>" \
  --website="https://proledgera.com/" \
  --chain-id=lava-mainnet-1 --from=wallet --fees=5000ulava -y

lavad tx slashing unjail --from wallet --chain-id lava-mainnet-1 --fees 5000ulava -y

lavad q slashing signing-info $(lavad tendermint show-validator)
Governance
lavad q gov proposals
lavad tx gov vote <id> yes \
  --from wallet --chain-id lava-mainnet-1 --fees 5000ulava -y
Service
sudo systemctl start lavad
sudo systemctl stop lavad
sudo systemctl restart lavad
sudo journalctl -u lavad -f -o cat

19 Uninstall Node

ImportantThis wipes all data – keys, signing state, chain database. Back up priv_validator_key.json first.
sudo systemctl stop lavad
sudo systemctl disable lavad
sudo rm /etc/systemd/system/lavad.service
sudo systemctl daemon-reload
rm -rf $HOME/.lava $HOME/lava
sudo rm $(which lavad)