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 = "ff69cca1c97a20057c571862e242635e2c460097@141.164.61.145:26656,2331cbd9e9962eb14ddfcc6ffe91a4741adea6b8@54.248.243.202:26656,a16764b2d03f8fb1d6a98ace50e67d5344852cc2@46.4.64.123:26656,fa5c3f970a30023c5793cade0fa449d5c8c8e6d5@89.168.24.105:26656,80dc72352a7855de0e8c2415a77a305cf99f175c@65.109.82.87:17756,e14b4f3936f6278617d986470512e5d0aec45966@65.109.88.254:34656,ba0a167567c7e08f4bb1e25ec24e42a85b07a0c5@148.113.20.208:17756,a51476d949df940e636f6d072b14b42aac3a16a8@213.246.45.16:5656,9d6916344cea096b7adc86b67faf65f2815f09d3@167.235.39.5:60956,9b9dee928a174bcd0272be9127f5f455d418d6b2@169.0.116.67:26656,5560ee9ab5efdfb7cb774c46155dccf441e13f3b@65.109.70.89:51656,752bc8c7508affd7e2af494a6bf44bcb66cf84ea@65.108.39.140:17756,749b2677ed9e05e66f1d5ccf207ba4041e3c7899@15.235.160.196:17756,401a4986e78fe74dd7ead9363463ba4c704d8759@38.146.3.183:17756,12e79dd617cc71d6848cb9442a84749dee02f70d@65.21.91.160:27544,ce0f78e0eea3150dec37d084421005f2328f1dc8@167.235.9.223:26656,ddd0b1d58b131d822e3d3cb6a592d4ffcc5dbb28@65.109.23.55:1156,1ea414e1e8cb535e8a91162ac3c3039b86704fee@65.109.92.241:1156,6619d41e0a1be47c4a79a5438b81793f06ffbc86@65.21.226.187:60556,7258d8c7880167fca502592b8d64110d60e99a6b@65.108.232.180:17756,ad09756627b5d2e84ca71c7b5e1946648652596a@206.125.34.196:26656,b7f6da1a8aea371206b4d234398c4888c0564066@65.109.99.157:16605,43aa4574714bdfca8bfa6b937ae6b5df74fbfef0@65.108.228.209:17756,fe39fe075c2a593b30c187e05631bf2c640f7f5f@95.214.53.7:55976,75056646163db4a83a4756becb81067c27c5b6bc@213.246.39.89:3656,423b0dafd7a6b9ea5406d5a0fbae667d9d7ffc11@142.132.248.253:22656,631b078d478f50539f5b518747d861b8e0c76c16@51.195.104.64:3656,e8b56928755b7e130575a1ec629a2bef237841fe@136.38.55.33:26656,5a1716e99475479ecbfee30f3d6ff5f958873a70@65.108.237.188:17656,2eb165895e826174ea95328d83e6bb01d09e46fa@174.138.176.146:26696,5a747fd2d7ce2402b42c6e302ed9eefecd42e6dd@95.216.7.84:26656,fe527359b6b6c5ad9cc6e2f6ed3af46018b29e15@136.243.36.60:17756,b384304492bdf3a814c03f5770764b5b4d3f82b9@37.27.58.244:15656,fdea626de237ca109696c773e987501b98d3b942@136.243.104.103:11456,c2b06ac64284267dde6627db93eef6c87bf81162@65.108.232.168:19056,eecc47d73a4e284399036c8525a0af8fc5c02f1c@148.251.43.226:22656,3bea9b46a5b067ccc9208e8952e684d37e18e5b0@141.164.56.119:26656,e5db1c4b82b8b40e972d14c681ce17cf65954d20@95.217.89.202:12932,17da9d2fea9d6d431d390c3b9575547d8881da2b@185.16.39.190:11156,2fd9042e02321cccf513731d6a9bb70c3b12b62d@3.39.25.1:26656,fd55622051218695a44e1b23aa4347287d70a26d@176.9.92.135:46656,c298f3b9d90a5258d48a97ab0577de734a4052dc@65.108.204.209:17756,59c71e1ae0267da913d8460c10bbbb86f8003d12@85.10.201.125:36656,a3f6ecb94b7d888e7d4f6fc2d31b60456f39208d@167.235.102.45:13656,26238cbb6bf285816bd06ca946b190e7248c389c@46.38.232.86:22656,13d370cf706e0cbcbed962f7f5585efead848132@158.69.125.73:10456,59a78237307622645348f8f24ab49315a54886fb@169.1.35.42:26656,1d91dfd19fd714443c291abbe22f2384a28752be@18.116.24.215:26656,1238b070d8c9bfab3e81eb0fc0d99feeb9bbbffe@5.39.249.16:46656,26493d58dc81832882d44003b1a77798be94ff86@193.24.209.165:11156"/' 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