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 = "862f0129322c2a0872e6440e5e896cabef0146fe@185.225.232.183:26656,99be09a57ef33be2e06773ad246bb8463d439a3d@46.4.55.150:36656,30f37b07b0b876a8f6bd5a66955df87f599f0ac7@198.244.228.162:36756,e6fa17d9eedbb8ac2bf777257d5bbfa99ef73392@185.144.99.38:36659,23721024ea06e3610ab1f6a34b51f592cd1a3589@139.162.81.104:26656,563cd5a32334173f8cd912185b56c0b0d0675762@162.55.245.254:28656,831f9b83fe99ff4b34cafc8895ffcda24096808f@92.253.237.250:26656,3ca2aa0ec1f0ee243cb9c52dedc7653b02ffb94a@45.33.14.172:26656,159729a97ad472bbdd7f1af76ab7c9788f19cccd@103.19.25.25:26656,8b3f98743212473636bcea8e588afdbce26e479a@65.108.131.190:28156,f342a33fa1b5bd1de624093d91bfbfa29b09f3df@65.108.12.181:30656,e507fb82435b5d7fab42967f3914501d4a8a6240@159.65.4.71:26656,6dabce67a9e75edb290bda7bf80b26aa47d87192@67.211.210.50:26656,589e3da834e85cf555353bd2e279081211c495ac@65.21.237.170:46656,82f3df2a67cda343ae9a3ef38ffef62ed17203ed@104.193.254.34:26656,22dd1c203070e0877a5af06ca4f2efd86892e1ea@23.88.72.109:26656,2910d0416b90d73e7d3c94227e31989ee14505a4@51.158.201.205:26656,e4b40dcd6abab99463f55d299cf2b24f103e8f1b@35.201.187.22:26656,a4713dabf474d9d8739ab41497399ff227db3e7e@45.134.226.112:40656,fc9bf4531ddeb66c19c8b6e541cb25e327dbef8d@103.180.28.94:26656,727ef71c8f0eb9055e226a5f0a3ebb2079cee1a5@185.208.207.12:26756,e6177478045e49e41e9101bd10e2e946895a3f79@172.104.53.10:26656,e5436eb9ad22ee822bf8483d44c14b228bc2b626@65.21.204.185:26656,ba4e83f47f523d0ffcbbd3890cc5ad329015ac1d@46.4.81.204:42656,6a25b1568b5ddfd9294574b7e000c4612463a960@198.37.107.164:26656,8dacaa3db6236875ef84e46d96c594bf6fdde48e@51.161.87.146:29656,c92a747a49221fc8a431718268df6b9b15f5016d@142.132.149.171:16256,a69b71dea385113cbe3ff12ed704b78ad06db3f3@172.105.7.249:26656,6b4f8ccaa793ce8e42a176401e0aea319655d4f1@144.91.125.55:26656,01fc8a5adb7273463104d47de5f2068114698b11@45.79.253.104:26656,55ace2b3c12af52e9cc442587a596b5daaaf67f8@161.97.69.121:26650,0552b9272465633cc6a3ab723fc02681178884b2@85.208.48.252:23656,35031426af5bd8328284e72177829c2a1e319f02@139.162.194.206:26656,8d3736cd41c56a670b01d2f8fb946bd37d741d55@43.130.40.8:26656,85d4fb8658b5fa7cab31051a2478fb8818dbb65c@148.251.43.226:36656,dfdd78e6c0954070fb57aa8f2f896e05fe1810bb@172.105.86.65:26656,739c7cb34ffbe43f88254aa225059f0695f29c25@161.97.187.180:36656,d05a8f76bfead024501dcdb69a81cfa6555d9c3a@65.108.236.5:16256,ceba918a8415a3849073ead8ef0cb34b45f7aa78@136.243.55.237:43596,af8cf7e76cebe866689e34d0fda5a15a895e05f8@85.237.193.110:26656,489be5f292662b4de8a753e948dd7c3c2d1fdd07@65.109.18.169:16256,70d76400773af23576f01d25aa2b5450e311f2f3@51.83.131.162:26156,86854c9da9a050d9146849975d23981c3ec7de2c@65.108.126.22:26716,dc26591f9dff06f8d9d7b4431c5534cb759c3ace@65.108.213.177:26656,89ef886c11c2cadfee6416858034cf06029a6a8a@65.109.92.235:37656,e8ff89b51d9fbf594e7f9237f01a6a2f19c44725@65.21.91.99:36656,308bf389c867a566f399d1c0f4ee8baf4329605f@38.242.134.253:26656,6a85e45e2f056f820f5903d40f2e5519224131eb@5.10.24.70:26656,58ff0d99b9a491b10c3b8d2822c6d81e45d3c607@185.249.227.231:27656,7bb14fe46a36369b130e84819176367d746797bf@65.109.174.30:46656,a6312fd9670064ce11d472e2634e70473d3cd925@148.251.91.158:16256,1aab224d8d96f8e0194be097d84615c48a6ba5d7@207.180.231.123:26656,76a72552810c443d39c7ffafead34a4c96bd37e9@164.68.107.173:26656,e3f92035f046a3bb0140f1057eafc5199b03e470@93.159.130.6:56656,7dc8495a129515f5baea3fd39886fd164c646ce7@35.233.198.142:26656,7c4620e42e2d2a7ad2bdbe00511b66995235ee6a@65.109.93.17:27656,6f6ac62212453d3da9a8ae017cdab1f7ccdd8da6@203.135.132.116:26656,df67d75ddcb671fba24c276521c21d71ec08ceca@5.161.103.170:26656,79475db5f2e60405fdc2cd8dceddf3b5ad3c7450@65.109.146.25:46656,a225d2e2dfe610993d83bf5e25025bde3ef38095@66.45.246.166:26656,e0e5babbb6a49b43397892418951202a776f434e@139.59.125.4:26656,0e1566571ddd0d57d8228a4115926730ecd1e56d@148.113.8.181:16256,9755cab2585a2794453a5b396ef13b893393366f@65.108.212.224:46666,5c86915026093f9a2f81e5910107cf14676b48fc@96.126.124.61:26656,45105c7241068904bdf5a32c86ee45979794637f@212.71.238.55: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