> For the complete documentation index, see [llms.txt](https://skyneticlabs.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://skyneticlabs.gitbook.io/docs/services/mainnet-networks/arkeo/installation.md).

# Installation

Chain ID: arkeo-main-v1 | Latest Version Tag: v1.0.14

#### Setup validator name

```bash
MONIKER=<your_moniker>
```

#### Install dependencies

#### Update system and install build tools

```bash
sudo apt -q update
sudo apt -qy install curl git jq lz4 npm build-essential
sudo apt -qy upgrade
```

#### Install GO

```bash
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.24.6.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
source $HOME/.bash_profile
go version
```

#### Download and build binaries

```bash
# Download Binary
cd $HOME
rm -rf arkeo
git clone https://github.com/arkeonetwork/arkeo.git
cd arkeo
git checkout v1.0.14

make install

# Prepare binaries for Cosmovisor
mkdir -p $HOME/.arkeo/cosmovisor/genesis/bin
mv $HOME/go/bin/arkeod $HOME/.arkeo/cosmovisor/genesis/bin/

# Create application symlinks
sudo ln -s $HOME/.arkeo/cosmovisor/genesis $HOME/.arkeo/cosmovisor/current -f
sudo ln -s $HOME/.arkeo/cosmovisor/current/bin/arkeod /usr/local/bin/arkeod -f
```

#### Сreate a service

```bash
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.6.0

# Create service
sudo tee /etc/systemd/system/arkeod.service > /dev/null << EOF
[Unit]
Description=Arkeo Mainnet node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.arkeo"
Environment="DAEMON_NAME=arkeod"
Environment="UNSAFE_SKIP_BACKUP=true"
[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable arkeod
```

#### Initialize the node

```bash
# Set node configuration
arkeod config set client chain-id arkeo-main-v1
arkeod config set client keyring-backend file
arkeod config set client node tcp://localhost:26657

# Initialize the node
arkeod init $MONIKER --chain-id arkeo-main-v1
# Download genesis and addrbook
curl -Ls https://snapshots3.stakevillage.net/arkeo-main-v1/genesis.json > $HOME/.arkeo/config/genesis.json
curl -Ls https://snapshots3.stakevillage.net/arkeo-main-v1/addrbook.json > $HOME/.arkeo/config/addrbook.json

# Add seeds
seeds="4d2c67a1d732679826b2f71c833e94b3718c2b50@seed2.arkeo.network:26656,416bd4379fa4fa3e76e59e4415396f727463142e@seed.arkeo.network:26656"
sed -i -e "s|^seeds *=.*|seeds = \"$seeds\"|" $HOME/.arkeo/config/config.toml


# Add peers
peers="e21ebcb0b2694e7b316f2f8de883300cffc93b32@peer1.arkeo.network:26656,b8653eecacbe3f413046beb0e8b53d8f520c925e@peer2.arkeo.network:26656,f3037b238720c022be888890b7d8ecb516ae2a05@peer3.arkeo.network:26656,2e0a5e51ae1eabf527eb54632feb6a90ae0704ba@204.16.245.181:26656,4b60b22753c88f3cd6ba42dae8170e1a22429e76@141.95.3.94:26656,56a47e4ad462edfba90d0409785bc56196fdf376@51.89.98.102:55926,57c53dc1149c8696c839fc5a230579327d650e4c@65.109.114.178:26656,637609e9fe4618fe1d5c7c3564dc9ce4678abf61@142.132.251.87:15856,beaf7267d852cfbaaaaccbc1f92e785e5e0f0420@18.218.164.255:26656,de8f228211e72e8bb206e4f0f5e6e703cb2505eb@95.217.36.103:26656,e077b7ffdfcd6ea6826a126d0003a98fe0218bf7@213.239.194.132:15856,e87f1d4cfa4b7c70defa93dffefc450e2a1c1dc4@44.240.61.167:26656,fc03a34ea37cee3d97391cee11bffc792560cd61@46.4.32.57:26656,a3998b8a50765975be2be59954db0f6de66f92e3@5.161.246.27:36657"
sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$peers\"|" $HOME/.arkeo/config/config.toml

# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.001uarkeo\"|" $HOME/.arkeo/config/app.toml

# Set pruning
sed -i \
  -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "10"|' \
  $HOME/.arkeo/config/app.toml
```

#### Set custom ports

**You can change value CUSTOM\_PORT=161 to any other ports**

```bash
CUSTOM_PORT=161
```

```bash
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}58\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}57\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}60\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}56\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}66\"%" $HOME/.arkeo/config/config.toml
sed -i -e "s%^address = \"tcp://localhost:1317\"%address = \"tcp://localhost:${CUSTOM_PORT}17\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}80\"%; s%^address = \"localhost:9090\"%address = \"localhost:${CUSTOM_PORT}90\"%; s%^address = \"localhost:9091\"%address = \"localhost:${CUSTOM_PORT}91\"%; s%^address = \"0.0.0.0:8545\"%address = \"0.0.0.0:${CUSTOM_PORT}45\"%; s%^ws-address = \"0.0.0.0:8546\"%ws-address = \"0.0.0.0:${CUSTOM_PORT}46\"%" $HOME/.arkeo/config/app.toml

#Set config with new custom port
arkeod config set client node tcp://localhost:${CUSTOM_PORT}57
```

#### Start service and check the logs

```bash
sudo systemctl start arkeod && sudo journalctl -u arkeod -f --no-hostname -o cat
```
