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 = "c8b1b41978bf5778a538023cb71bf3f4d0ef5877@54.226.104.121:26656,f9abfd22ca7561240184494f196014c707c36d28@2a0c:2500:571:9f4:93b2:180b:5c47:796b:11156,64f3549294c57f23b39cd9bfd0a9f8abb6186ca1@65.21.32.216:36656,51e4e7b04d2f669f5efa53e8d95891fa04e4c5b9@206.125.33.62:26656,b03a7899c69a37837e4026e920cfbb01a3384c94@88.198.27.51:46656,736cc80dc8ab90be3e53e55a21c76925134ca119@142.132.248.253:26656,145d0f311ef1485f5b95eebecbc758fce01b4bb6@38.146.3.184:17756,3ff07328eb65c1ffe7dd120c5ba19fa843048a4b@109.123.242.217:1156,7128e7b73c131c053e9dfbd1e68d977abfe61dfb@213.239.207.175:13256,31bda14eacbc1c1c537c4b7c2e8d338a06c8c5fd@57.128.37.47:26656,57a35f4950f9af0bfa38b48c702082811d517c94@65.109.28.177:26676,68d1cf8ffe9d8a27250c26da69f038d575b4f1a9@78.46.103.246:60956,1e5f1fa5725ab5e09209b7935c6ea3f57b2711ed@2a01:4f9:1a:9462::3:26656,756ae461e4ce9e326e259a8ed33d1c71a4ffc93f@188.40.66.173:17756,35c743def29adbed748363fcf9067d20eda5d5aa@38.242.132.177:22656,6230c5aba898897663f9fb4d65796a187ce2f571@167.235.12.38:12656,060ebadce20603aae40f5aabc41fed8e931867a5@38.242.230.118:46656,814a49c71bc0d5c208c1a8a625bc216ed5ef007a@2a01:4f9:3070:1244::2:14656,4a0d7384e6bbb4b153d650249bea7b210beb8c89@65.108.15.170:26656,5168a051191bbd05d639b9091653c92f43f0cd11@89.58.13.159:35656,bf77d3d46deee79242b61c468ea812b27b4f2e68@136.243.104.103:23056,bbf8ef70a32c3248a30ab10b2bff399e73c6e03c@65.21.198.100:23056,abdbd5eba18a53ec3e0338fff4359141eb2ddef1@3.93.36.178:26656,5b24a2deec45394a66bd70fda4ec33b86f25a2eb@65.109.99.156:16605,814fc6f347bc9059ab0f291e9980dc8a48344e8d@213.133.100.172:27655,b0afa38e69ef40896d8cfe993f31dd4e2ae6e71a@167.235.178.134:17756,c30b391ae80e9ef4ba0659404b21e3f20530efa3@65.108.134.47:17756,41c267a6a154807cd31fc0f407a109ad50518c82@212.22.70.9:60556"/' 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