Skip to content

Install


Chain IDLatest Version TagWasm

Setup validator name

Terminal window
MONIKER="YOUR_MONIKER_GOES_HERE"

Install dependencies

Update system and install build tools
Terminal window
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential
sudo apt -qy upgrade
Install file2ban

more here and here

Terminal window
# set and copy the config that will have higher priority
sudo apt install fail2ban -y && \
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && \
sudo nano /etc/fail2ban/jail.local
# uncomment and add your IP: ignoreip = 127.0.0.1.1/8 ::1 [ip]
sudo systemctl restart fail2ban
# check status
sudo systemctl status fail2ban
# check which jails are active (by default only sshd)
sudo fail2ban-client status
# check sshd statistics
sudo fail2ban-client status sshd
# look at the logs
sudo tail /var/log/fail2ban.log
# stop work and remove from autoloading
\#sudo systemctl stop fail2ban && sudo systemctl disable fail2ban
Install GO
Terminal window
cd $HOME
ver="1.22.5"
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go$ver.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)

Download and build binaries

Terminal window
# Clone project repository
cd $HOME
rm -rf _repo_name_
git clone _repo_path_
cd _repo_name_
git checkout _project_version_
# Build binaries
make build
# Prepare binaries for Cosmovisor
mkdir -p $HOME/._project_name_/cosmovisor/genesis/bin
mv build/_project_bin_ $HOME/._project_name_/cosmovisor/genesis/bin/
rm -rf build
Terminal window
# Create application symlinks
sudo ln -s $HOME/._project_name_/cosmovisor/genesis $HOME/._project_name_/cosmovisor/current -f
sudo ln -s $HOME/._project_name_/cosmovisor/current/bin/_project_bin_ /usr/local/bin/_project_bin_ -f

Install Cosmovisor and create a service

Terminal window
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0
Terminal window
# Create service
sudo tee /etc/systemd/system/_project_name_.service > /dev/null << EOF
[Unit]
Description=_project_name_ node service
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/._project_name_/
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/._project_name_"
Environment="DAEMON_NAME=_project_bin_"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/._project_name_/cosmovisor/current/bin"
[Install]
WantedBy=multi-user.target
EOF
Terminal window
sudo systemctl daemon-reload && sudo systemctl enable _project_name_.service

Initialize the node

Terminal window
# Set node configuration
_project_bin_ config chain-id _chain_id_
_project_bin_ config keyring-backend file
_project_bin_ config node tcp://localhost:26657
# Initialize the node
_project_bin_ init $MONIKER --chain-id _chain_id_
# Download genesis and addrbook
curl -Ls _url_genesis_ > $HOME/._project_name_/config/genesis.json
curl -Ls _url_adrbook_ > $HOME/._project_name_/config/addrbook.json
# Add peers
sed -i 's/persistent_peers = ""/persistent_peers = "ce001dd820b8b838533390372aea4dfc365780d9@192.99.4.66:26866,e8bbbe53969162a893ab67c1eeb40432d57edec6@167.235.102.45:11656,a03c3f2be4298d6d07b9069e94c032f09e1ad399@167.235.3.247:26616,89757803f40da51678451735445ad40d5b15e059@169.155.168.66:26656,555b8fbc2705c3f3473663d9efa77418d151550c@155.133.26.217:26656,e726816f42831689eab9378d5d577f1d06d25716@169.155.46.44:26656,f1ec537703ce9df7932107f6a101c02c23b19656@135.181.5.232:13056,9ca926169792c5e0dc7cf01520e9bc9a46d62d67@49.12.86.120:26686,7c00beb4956bc40cd33ced6e2c2ffe07d4fa32e7@95.216.242.82:36656,d9a3ee7986d535cbdcd864c8dd5224830d6f832d@51.81.49.176:13056,0e9387a4aa548998eda8f2bb4a5cd799345d5367@65.21.198.100:11756,20cad4773622c7ea721585f6c65eef22f0eaf4a3@65.109.112.170:37656,3a609bcab56fda1baa921f91318e8c0e7da5b7c5@85.237.193.92:26656,5a048cab1d183de5c465c56b29a16fd93a8bf9bd@152.53.18.245:27656,f980e9e74a73b6a3a413b9d4bee1bb4052f23843@148.251.13.186:13056,13c8ab223afee8cb6c5593a7f38160d9f1d34ae0@136.243.104.103:11756,0cae2ecaad6069f1e9977470ae25f6acd23f981c@185.103.132.18:26656,8dc6b9442f84fe86cc04882c6fc617bffa411f42@37.187.79.109:26676,97798665c60d3a72d39f4e07c9c0ab3ec88cdea0@185.144.99.37:26656,950a1c706034397b43d643cd610db7a3f833d23c@65.109.17.23:56242,7c91bae6d5c20dcd45d4c312c9e0d6f48abeff61@64.20.42.198:14256,d5ac0ba3e6e95b75f9c01a15a92f1cb38576dd8a@188.165.194.110:26706,f6841eb103db79c64802ffe1418d159f9ef664a3@178.215.71.199:13056,88c6b1fa1c7fef98b4449b769eb2705476586664@65.109.92.241:21326,d5ed854872ad96f114737889ac9521ea3a29e3a3@185.208.207.12:26656,9b58ddccf0951dccdc976857482dabb09fc15e82@43.135.186.183:26656,5163658c129e40bb9882743598c3b902ec7dfd55@65.21.207.116:32656,c0c4ba9fef25b3e1b5df20dced8beadf78a3d189@167.235.12.38:10256,dd24d867596646eb109fd5d36beb15797e6fe5d2@195.26.244.117:13056,c4a83da26003b9ddefa9a474980cb43d2ec21779@161.97.149.94:26656,27c48c73c400943eca150c917aa1b1b412d8dc6c@5.181.190.114:12656,36d48586325c9760a958c2f561f77f1bcb07dc8e@138.94.49.22:26656,d9bfa29e0cf9c4ce0cc9c26d98e5d97228f93b0b@65.109.88.38:14256,cb9741ce22ab5f615913ac11b211c3c7f58dee71@107.191.36.154:26656"/' config.toml
# Set minimum gas price
sed -i -e "s|^minimum-gas-prices _=._|minimum-gas-prices = \"_min_gas__utoken_\"|" $HOME/._project_name_/config/app.toml
# Set pruning
sed -i \
-e 's|^pruning _=._|pruning = "custom"|' \
-e 's|^pruning-keep-recent _=._|pruning-keep-recent = "1000"|' \
-e 's|^pruning-keep-every _=._|pruning-keep-every = "0"|' \
-e 's|^pruning-interval _=._|pruning-interval = "10"|' \
$HOME/._project_name_/config/app.toml
# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:14258\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:14257\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:14260\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:14256\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":14266\"%" $HOME/._project_name_/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:14217\"%; s%^address = \":8080\"%address = \":14280\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:14290\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:14291\"%; s%:8545%:14245%; s%:8546%:14246%; s%:6065%:14265%" $HOME/._project_name_/config/app.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/._project_name_/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 50/g' $HOME/._project_name_/config/config.toml

Start service and check the logs

Terminal window
sudo systemctl start _project_name_.service && sudo journalctl -u _project_name_.service -f --no-hostname -o cat