> 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/testnet-networks/odiseo/installation.md).

# Installation

Chain ID: ithaca-1 | Latest Version Tag: v1.0.2

#### 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 Achilles
git clone https://github.com/daodiseomoney/Achilles.git
cd $HOME/Achilles
git checkout v1.0.2
cd "achilles"
make build

mkdir -p $HOME/.achilles/cosmovisor/genesis/bin
mv ./build/achillesd $HOME/.achilles/cosmovisor/genesis/bin/

sudo ln -s $HOME/.achilles/cosmovisor/genesis $HOME/.achilles/cosmovisor/current -f
sudo ln -s $HOME/.achilles/cosmovisor/current/bin/achillesd /usr/local/bin/achillesd -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/achillesd.service > /dev/null << EOF
[Unit]
Description=Odiseo Testnet 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/.achilles"
Environment="DAEMON_NAME=achillesd"
Environment="UNSAFE_SKIP_BACKUP=true"
[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable achillesd
```

#### Initialize the node

```bash
# Set node configuration
achillesd config set client chain-id ithaca-1
achillesd config set client keyring-backend file
achillesd config set client node tcp://localhost:26657

# Initialize the node
achillesd init $MONIKER --chain-id ithaca-1
# Download genesis and addrbook

curl -Ls https://snapshots3.stakevillage.net/ithaca-1/genesis.json > $HOME/.achilles/config/genesis.json
curl -Ls https://snapshots3.stakevillage.net/ithaca-1/addrbook.json > $HOME/.achilles/config/addrbook.json

# Add seeds
seeds=""
sed -i -e "s|^seeds *=.*|seeds = \"$seeds\"|" $HOME/.achilles/config/config.toml

# Add peers
peers="c1713d4608c638208e9b707b0c545d6c6299705a@78.46.58.241:61656,d9621f67229bf348680166aa31cdf204d4b96895@152.53.91.160:26656,e24c6210e897b7eb9794b75b83f0bbc46a752de8@95.217.76.186:26656,c890f1607460e4d342f47b8dc16b59b524d3ba38@142.160.67.89:26656,c8239ca8aa8ee7d93a12e0c2821c49dd5d2ab18a@135.181.181.59:61656,b023395834f214123cff87215e2fa0eeb28117f6@193.34.212.80:61656,44c8905216a2e783dc95a46a6a8db21cebc7ccb2@185.194.216.90:61656,fbed8792c707fae3a4a00e99f14fe657b13fdadf@188.245.182.10:26656,0dcbe4f78c51a375dfa7536e8491afbf001f81bb@46.250.225.62:13256,f3350043c2854b6068d6ce7b249a2f65e2cf2607@157.90.128.99:13856,81a8414ed31cbf75614046b50133d499aa277f2a@88.99.167.174:13256,68d5b8c43fccfae849cf5f95d421267418e547a9@65.109.123.185:61656,aaae9d7b30fc4f490e9243861075a2a8ed9d7c65@185.183.33.133:18656,f00874350258b8200b14b44cdb25114f1efa0458@152.53.250.96:26656,3158d05a973417121900641ba0ba210e6e3dd619@23.88.7.159:26656,848704737a731cf767db8b054ed280f9787cf750@65.109.16.218:61656,9214537c2cebedfaee749d02d07c6ceff028835f@65.109.154.182:35656,fe54d4b6337c2db58190f98b2a46fffcbd9371e5@37.27.181.215:26656,e09483418e299dedcd56418cbb9852c89b3a3889@195.3.221.75:14656,b5039c0931a419b72368f8bd6b756eb8879ced7f@5.9.104.181:13856,9c10dfca04505c1ed29f69c661e3ae19049e8063@184.107.57.137:22656,89f769f15f93c0b0e45626675001fc25aeea49d8@37.187.78.225:12256,666cd80f79df97f3835f994971ef7516c46aa621@109.123.255.154:36656,4e60e749ded21528ecb81670ae435dac2e62f087@88.99.3.132:26656,d47bcc981c7b2ef4ea9334925bba95bab2c71da5@149.50.101.137:13256,8dceb983d6e50c5d3b0a23fc1d54daeb72d790e2@65.109.113.233:31356,b7e209811b1fd237c7a022ef292fd9c0335c77b1@37.27.127.107:55656,6fac9423a337903b415222e15be9b3da47afe08b@176.9.120.85:31256,c50c8a57794a21ee0de5b23d69da54c9c74af88d@15.235.145.210:35656,e2f7243eb190782e9ab9bcd1db2e78ec4249fa2f@149.50.96.109:56656,e69600b35390ce9e1f69c90040477975691e2a3c@144.217.68.182:16756,96db29a4be83ae84787ccde69c3074f7c18b996a@94.130.143.184:28656,9e8766911ee04f1c37e990b10d9a2771a7024bf3@37.187.74.222:12256,d20c0e780536889aee198018e3c93f4657e3fe28@80.76.43.37:26656,bc8e837dfdc9ea9744c8b774bf94eac578826758@46.151.119.162:26656,0b616b49e4832a958a08548f1f65c6a65663d488@46.4.52.158:26656,a1b8251ec70b9d37377db118f2f550258b2047da@65.108.201.218:28656,4c692bfc520a7b9cf1ed329030effaf89c9f1466@184.107.185.203:25656,7c31bf9a9d0a419574e5330cff66a17c5fefa4ce@65.109.30.147:61656,4411c9656938976244b10064dc1a8cabf043294e@185.194.177.201:26656,6f3762605c1d27623661086cb297ea7e22b8f1a5@152.53.66.24:26656,76f16630adeeaca572ddcfb8465dff74d1572990@100.42.187.89:36656,5cba71412f911b5a4f24353dd386131e02ccf515@88.198.46.55:55556,71dfbccd5db3d2d538df7051b433a598298bfb92@195.3.223.73:61656,49d2d7391166c1a1385e5c5fdb2bb0c94c9d2170@95.216.69.94:61656,f752f5822c2e2bca20f8c2e4365952893b05d3bb@65.109.59.22:31356,a882c67a4d0d8f4a41c3518c884033ca3e1b6d23@188.165.226.46:26716,39f7c446ef9d80c6b651431030fffe21dbda6c03@145.223.101.173:11656,5a44d6915e9c123f94099019220755bdac86a5ba@116.202.218.189:12156,da3827fe93b9232eb5a218d6c9c3a44de0b9578f@88.99.149.170:28656"
sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$peers\"|" $HOME/.achilles/config/config.toml

# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.25uodis\"|" $HOME/.achilles/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/.achilles/config/app.toml
```

#### Set custom ports

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

```bash
CUSTOM_PORT=145
```

```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/.achilles/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/.achilles/config/app.toml

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

#### Start service and check the logs

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