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 = "930ba7243c45e056021ae9c4f3fa62187a3475c7@37.27.38.176:31756,23bba3a35ca531803264eba6b3f4bd42a09762e7@173.249.50.178:27856,b425084d1c2ba3073fe787b35626c84e8249da09@194.163.164.192:23456,4465001ac18c38858acf24a4b3852b853cf6b600@152.53.22.69:3456,0975f81e78b9164d54a86767128df8c2aa2a3daa@37.60.239.102:30656,a5d1462e34c5ac5173f3d11215963a132cf3835e@152.53.64.210:3456,5f13168f3723b266f1c7055fcc7ec2bb1c1fb2a9@94.16.115.193:3456,d1f632ba90b7da479c837d59ec2f5591d2b99dc0@37.120.167.32:3456,b0475aaf0bee05abd007d1ff5a833bb46ec0daf4@162.55.22.230:26656,6e7a6e2aff12cc42d81587a99c5ecd5ad7670d63@45.136.29.177:3456,120c2776d1db3968de27dc747d1274b6b97b032b@45.137.194.83:3456,8449a74e8a9af6d3d044b402748eb0aba86a9596@45.84.138.47:30656,cace0f89582aa5130508377a3c3f37261eae7b6b@217.76.51.168:3456,b195e857bb0f12776989b411f5482c52e94b5b42@45.129.182.102:3456,6f61a544ab6def933fd5c59b60f0dc3f0720bbcc@185.232.71.81:3456,2d48fc88b3313502a1e78fa708ee35cd960bd291@173.249.26.237:30656,34d0920a1e76d91f6fa150f5321f3d72c016dacb@152.53.45.163:3456,9cd61bb0dd2cc3c25a4571753d447937c199bc27@91.205.105.40:3456,1a79010deb368178c114ea9b01245e3d54adc808@65.21.19.170:3456,d8f3b1198b69447c7f8e5edde5b403ebcd5e76ed@217.76.63.246:3456,01dc52fcaff7084a158d36c8c5fc84440b5b3ae5@84.46.244.44:3456,765d37e5b3a26ffb9e91949e12457f2558e963e2@152.53.16.213:3456,d737d18d415cc728fb1ae83a716088e843b8d65d@45.136.29.183:3456,6bbd54a7b2f36620ae5e6651b162f45181ee7a0d@117.182.236.105:3456,cfd1bb00ca192523838e77e3e440c6dc90b10648@195.179.227.242:11856,e35c03e6e00506e5403a23845a8e60b764e2d8bb@152.53.23.221:3456,18ac2dbc9e6d19ec863e489b8efbc4fbfdddf3e0@185.216.178.106:3456,0d6f5be0f227a9dda3c98a1415610caa9e592860@213.199.38.215:45656,a771c78c5b0a3743c080db43cd5f6382da8f59e0@80.190.80.181:3456,c71fb9e30c0b80bfe8aa283a4ab15834a9df9259@185.232.70.166:3456,c084e213b26be4e7a98af123f9c5e01ba86b5521@84.46.254.252:30656,1f09c918f39240cf204996cd1239eccdbb22a779@45.136.17.26:3456,48d8ca30876b840a35c857d1493fad61ba935bdc@45.157.178.239:3456,9bf0f78376f849e4c463232831d9f90864dc5e9c@109.199.105.150:25656,4f2381a484618f5b1aaedf238153bcfe08dc6874@68.183.206.86:3456,37ede161f4fb9701948cfde6063cfede8ebf2aa8@38.242.243.8:3456,175336eea5ec4480ba2c14204801005541cf5b6d@143.198.220.17:3456,93e15ce09bb61455d9a61ec7e82503ae9686c3d0@157.173.204.113:3456,4a8519b9c53ec35b51cd58df1a8d7c70fcd0011e@185.255.131.50:3456,43742fe4d59459502a32ad0e38085b36d2ca8be6@147.124.222.221:3456,c9b300d15d68b33b349eb7b726cb8329d5c3a16a@185.222.240.16:11856,7d1da767225e82d2fe82a03ac9142e1c9cc9efe5@152.42.226.211:3456,4e59af673df074b993f58c6162ccd1e2c25b0e52@140.238.215.202:3456,8ef8348d9d0050851a73508f2a9abaf1fafdbd81@65.109.32.148:26176"/' 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