Install
Chain ID | Latest Version Tag | Wasm |
---|---|---|
Setup validator name
MONIKER="YOUR_MONIKER_GOES_HERE"
Install dependencies
Update system and install build tools
sudo apt -q updatesudo apt -qy install curl git jq lz4 build-essentialsudo apt -qy upgrade
Install file2ban
# set and copy the config that will have higher prioritysudo 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 statussudo systemctl status fail2ban
# check which jails are active (by default only sshd)sudo fail2ban-client status
# check sshd statisticssudo fail2ban-client status sshd
# look at the logssudo tail /var/log/fail2ban.log
# stop work and remove from autoloading\#sudo systemctl stop fail2ban && sudo systemctl disable fail2ban
Install GO
cd $HOMEver="1.22.5"sudo rm -rf /usr/local/gocurl -Ls https://go.dev/dl/go$ver.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/localeval $(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
Download the latest binary file from the page
If necessary
# Unpack the tar.gz file:
tar -xvf _project_bin__linux_amd64.tar.gz
# Prepare binaries for Cosmovisor
mkdir -p $HOME/._project_name_/cosmovisor/genesis/binmv _project_bin_ $HOME/._project_name_/cosmovisor/genesis/bin/
# Create application symlinks
sudo ln -s $HOME/._project_name_/cosmovisor/genesis $HOME/._project_name_/cosmovisor/current -fsudo ln -s $HOME/._project_name_/cosmovisor/current/bin/_project_bin_ /usr/local/bin/_project_bin_ -f
Install Cosmovisor and create a service
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0
# Create servicesudo tee /etc/systemd/system/_project_name_.service > /dev/null << EOF[Unit]Description=_project_name_ node serviceAfter=network-online.target
[Service]User=$USERWorkingDirectory=$HOME/._project_name_/ExecStart=$(which cosmovisor) run startRestart=on-failureRestartSec=10LimitNOFILE=65535Environment="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.targetEOF
sudo systemctl daemon-reload && sudo systemctl enable _project_name_.service
Initialize the node
# 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.jsoncurl -Ls _url_adrbook_ > $HOME/._project_name_/config/addrbook.json
# Add peers
sed -i 's/persistent_peers = ""/persistent_peers = "d3b5b6ca39c8c62152abbeac4669816166d96831@165.22.24.236:26656,94a7baabb2bcc00c7b47cbaa58adf4f433df9599@157.230.119.165:26656,35f478c534e2d58dc2c4acdf3eb22eeb6f23357f@165.232.125.66:26656,ca4b6131d616d4d5930e50f1f557950f17fe4091@188.166.218.244:26656,d165ec9a58bc2b6c105379bad462f35052d69ae1@31.220.76.42:11656,e8502eb858f555051f3f80edc13f46ea942e7507@23.111.23.233:26656,bbf8ef70a32c3248a30ab10b2bff399e73c6e03c@65.21.198.100:22056,0d7455e17b839bf8c5e193cab45de1a9c7050157@62.171.175.128:11356,99a652384547a6992a19e1f687b2f7b84c037800@65.109.70.100:21156,14968afc435e723973ecb3c4c03e00795de9bcd8@161.97.167.196:11356"/' 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.tomlsed -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.tomlsed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 50/g' $HOME/._project_name_/config/config.toml
Start service and check the logs
sudo systemctl start _project_name_.service && sudo journalctl -u _project_name_.service -f --no-hostname -o cat