> For the complete documentation index, see [llms.txt](https://service.block-pro.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://service.block-pro.net/mainnet/lava/installation.md).

# Installation

Install and synchronize Lava Mainnet, one command at a time.

**Mainnet · `lava-mainnet-1` · Ubuntu 24.04 / x86-64**

Use a normal Linux account with sudo access. Commands assume a new node and the same shell session. Existing operators should use [Upgrade](/mainnet/lava/upgrade.md).

### 1. Prepare packages

Refresh package metadata.

```bash
sudo apt update
```

### Install dependencies

Install download, build and snapshot tools.

```bash
sudo apt install -y ca-certificates curl jq git make build-essential golang-go lz4 tar
```

## Install the binary

### Select a release

Use the network-approved release. This pinned stable release is the reference, not an automatic upgrade decision.

```bash
LAVA_VERSION=v6.2.5
```

### Download lavad

Download the Linux amd64 release asset.

```bash
curl -fL "https://github.com/lavanet/lava/releases/download/$LAVA_VERSION/lavad-$LAVA_VERSION-linux-amd64" -o "$HOME/lavad.download"
```

### Check the download

For v6.2.5, this must print OK. A different release needs its own published checksum.

```bash
printf "%s  %s\n" e500f73102264a48818ab5ecc1350bf54d663d6d3a4bfb45d9a85833d2b1fded "$HOME/lavad.download" | sha256sum -c -
```

### Install

Place the verified executable in the system path.

```bash
sudo install -m 0755 "$HOME/lavad.download" /usr/local/bin/lavad
```

### Verify the binary

Confirm the selected version starts successfully.

```bash
lavad version --long
```

## Initialize and connect

### Initialize once

Replace MY\_NODE with your own moniker. Do not rerun this over an existing validator home.

```bash
lavad init "MY_NODE" --chain-id lava-mainnet-1
```

### Download genesis

Save network genesis to the node configuration.

```bash
curl -fL https://raw.githubusercontent.com/Shoni-O/files/main/mainnet-files/lava/genesis.json -o "$HOME/.lava/config/genesis.json"
```

### Verify the network

Continue only if the file is valid JSON and this check returns true.

```bash
jq -e '.chain_id == "lava-mainnet-1"' "$HOME/.lava/config/genesis.json"
```

### Download the address book

Load BlockPro’s published peer discovery file.

```bash
curl -fL https://raw.githubusercontent.com/Shoni-O/files/main/mainnet-files/lava/addrbook.json -o "$HOME/.lava/config/addrbook.json"
```

### Check the address book

Ensure the download contains peer records, not an HTML error page.

```bash
jq -e '.addrs | type == "array"' "$HOME/.lava/config/addrbook.json"
```

### Set minimum gas prices

Set this node’s local transaction admission policy.

```bash
sed -i 's/^minimum-gas-prices *=.*/minimum-gas-prices = "0.000000001ulava"/' "$HOME/.lava/config/app.toml"
```

### Set a persistent peer

Use the BlockPro peer published for this network.

```bash
sed -i 's|^persistent_peers *=.*|persistent_peers = "290d562781dd46eaa66eb88f87b60e888550ae44@lava-rpc.block-pro.net:61356"|' "$HOME/.lava/config/config.toml"
```

### Use bounded pruning

Keep the application’s standard pruning policy; archive operation needs more disk space.

```bash
sed -i 's/^pruning *=.*/pruning = "default"/' "$HOME/.lava/config/app.toml"
```

### Apply Lava consensus timing

Apply the timings from the official joining guide.

```bash
sed -i -e 's/^timeout_commit *=.*/timeout_commit = "30s"/' -e 's/^timeout_propose *=.*/timeout_propose = "1s"/' -e 's/^timeout_precommit *=.*/timeout_precommit = "1s"/' -e 's/^timeout_prevote *=.*/timeout_prevote = "1s"/' -e 's/^timeout_propose_delta *=.*/timeout_propose_delta = "500ms"/' -e 's/^timeout_precommit_delta *=.*/timeout_precommit_delta = "500ms"/' -e 's/^timeout_prevote_delta *=.*/timeout_prevote_delta = "500ms"/' -e 's/^skip_timeout_commit *=.*/skip_timeout_commit = false/' "$HOME/.lava/config/config.toml"
```

## Run with systemd

### Create the service

Run the node as the current non-root account, with automatic restart after a process failure.

```bash
sudo tee /etc/systemd/system/lavad.service > /dev/null <<EOF
[Unit]
Description=Lava Mainnet node
After=network-online.target
Wants=network-online.target

[Service]
User=$(id -un)
WorkingDirectory=$HOME/.lava
ExecStart=/usr/local/bin/lavad start --home $HOME/.lava
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
```

### Load the unit

Tell systemd about the new service.

```bash
sudo systemctl daemon-reload
```

### Enable on boot

Enable the service without starting it yet.

```bash
sudo systemctl enable lavad
```

### Restore recent state

Follow [Snapshots](/mainnet/lava/snapshots.md) before starting. The current binary may not replay every historical upgrade from genesis. Choose a snapshot compatible with the installed release.

### Start

Start the node after restoration.

```bash
sudo systemctl start lavad
```

### Follow logs

Look for advancing blocks; Ctrl+C leaves the service running.

```bash
sudo journalctl -u lavad -f -o cat
```

### Check synchronization

Wait for catching\_up to become false and compare the height with the explorer.

```bash
curl -fsS http://127.0.0.1:26657/status | jq '.result.sync_info'
```

Next: [Validator](/mainnet/lava/validator.md) or [Useful Commands](/mainnet/lava/useful-commands.md).

[Upstream reference](https://docs.lavanet.xyz/mainnet-manual-cosmovisor/).
