# Installation

1. **Update packages and install useful tools.**

```
sudo apt update && sudo apt upgrade --yes && \
sudo apt install git build-essential ufw curl jq snapd screen ncdu nano fuse ufw --yes
```

2. **Install `go` using `snap`**.

```
sudo snap install go --classic && \
echo 'export GOPATH="$HOME/go"' >> ~/.profile && \
echo 'export GOBIN="$GOPATH/bin"' >> ~/.profile && \
echo 'export PATH="$GOBIN:$PATH"' >> ~/.profile && \
source ~/.profile && \
go version
```

3. **Build the binary from source.**

```
git clone https://github.com/axone-protocol/axoned
cd axoned
git checkout v12.0.0
make install
axoned version
```

5. **Initialize your node.**

```
axoned init <node_name> --chain-id axone-1
```

6. **Download genesis.**

```
wget -O $HOME/.axoned/config/genesis.json "https://raw.githubusercontent.com/axone-protocol/networks/refs/heads/main/chains/1/genesis.json"
```

7. **Add persistent peers to `config.toml`.**

```
peers="e13c4a54ffd3d6dc71da5238471904ad8e303935@141.95.11.201:26656,2d524b4f87fc684e276abe8fe748e2ca45b767b6@85.202.163.243:26656,e97341e910d0f8c92257f16d38dcf5513196dd41@65.109.125.172:26632,a963a7a927a49dd66e9bf1c1a04127d34d7edb6f@65.21.227.52:26332,dcc0c9c254bdb81107b61f30ddb5f9ed32f24645@168.119.143.51:18656,740741048700f4e8cc1fb6609bddc569e5b9d6d5@65.108.236.5:20056,ea1d3b5b70ac85d553a645561fbfd95577afee4c@148.113.153.62:26656,9ae2608641ed016c38a5357c5ab1051da2cafba2@148.72.141.245:26616"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.axoned/config/config.toml
```

8. **Set up minimum gas price.**

```
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0uaxone\"/;" $HOME/.axoned/config/app.toml
```

9. **Set up pruning (optional).**

```
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.axoned/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.axoned/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.axoned/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.axoned/config/app.toml
```

10. **Create service file.**

```
sudo tee /etc/systemd/system/axoned.service > /dev/null <<EOF
[Unit]
Description=Axone Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which axoned) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

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

11. **Enable and start service.**

```
systemctl daemon-reload
systemctl enable axoned
systemctl restart axoned
journalctl -u axoned -f -o cat
```

{% hint style="info" %}
If you would like to speed up the sync process, you may try using State Sync.
{% endhint %}
