⚙️Installation

Recommended Hardware: 4 Cores, 8GB RAM, 200GB of storage (NVME)

Install dependencies

sudo apt update && apt upgrade -y
sudo apt install vim zip unzip git curl wget -y && git config --global core.editor "vim" && sudo apt install make clang pkg-config libssl-dev build-essential -y 
sudo apt install tar wget clang gcc tmux libleveldb-dev jq bsdmainutils git make ncdu htop lz4 screen bc fail2ban -y

Install go, if needed

cd $HOME
VER="1.22.10"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin

Let's start

# set vars
echo "export WALLET="wallet"" >> $HOME/.bash_profile
echo "export MONIKER="my-node-name"" >> $HOME/.bash_profile
echo "export SHENTU_CHAIN_ID="shentu-2.2"" >> $HOME/.bash_profile
echo "export SHENTU_PORT="26"" >> $HOME/.bash_profile
source $HOME/.bash_profile

# download binary
cd $HOME
wget -O shentud https://github.com/shentufoundation/shentu/releases/download/v2.13.1/shentud_2.13.1_linux_amd64
chmod +x shentud
mv shentud /usr/local/bin/

# config and init app
shentud init $MONIKER --chain-id $SHENTU_CHAIN_ID 
sed -i -e "s|^node *=.*|node = \"tcp://localhost:${SHENTU_PORT}657\"|" $HOME/.shentud/config/client.toml

# download genesis and addrbook
wget -O $HOME/.shentud/config/genesis.json https://files.nodesphere.net/mainnet/shentu/genesis.json
wget -O $HOME/.shentud/config/addrbook.json  https://files.nodesphere.net/mainnet/shentu/addrbook.json

# set seeds
sed -i 's/seeds = ""/seeds = "[email protected]:14056"/' $HOME/.shentud/config/config.toml

# set custom ports in app.toml
sed -i.bak -e "s%:1317%:${SHENTU_PORT}317%g;
s%:8080%:${SHENTU_PORT}080%g;
s%:9090%:${SHENTU_PORT}090%g;
s%:9091%:${SHENTU_PORT}091%g;
s%:8545%:${SHENTU_PORT}545%g;
s%:8546%:${SHENTU_PORT}546%g;
s%:6065%:${SHENTU_PORT}065%g" $HOME/.shentud/config/app.toml

# set custom ports in config.toml file
sed -i.bak -e "s%:26658%:${SHENTU_PORT}658%g;
s%:26657%:${SHENTU_PORT}657%g;
s%:6060%:${SHENTU_PORT}060%g;
s%:26656%:${SHENTU_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${SHENTU_PORT}656\"%;
s%:26660%:${SHENTU_PORT}660%g" $HOME/.shentud/config/config.toml

# config pruning
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.shentud/config/app.toml 
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.shentud/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.shentud/config/app.toml

# set minimum gas price, enable prometheus and disable indexing
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.025uctk"|g' $HOME/.shentud/config/app.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.shentud/config/config.toml

# create service file
sudo tee /etc/systemd/system/shentud.service > /dev/null <<EOF
[Unit]
Description=Shentu node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.shentud
ExecStart=$(which shentud) start --home $HOME/.shentud
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

# reset and download snapshot
shentud tendermint unsafe-reset-all --home $HOME/.shentud
sudo rm -rf $HOME/.shentud/data && sudo mkdir $HOME/.shentud/data
SNAP_NAME=$(curl -s https://snapshots.nodesphere.net/shentu/ | egrep -o ">shentu-2.*lz4" | tr -d ">" | sort -V | tail -n 1)
curl -o - -L https://snapshots.nodesphere.net/shentu/${SNAP_NAME} | lz4 -c -d - | tar -x -C $HOME/.shentud/data

# enable and start service
sudo systemctl daemon-reload
sudo systemctl enable shentud
sudo systemctl restart shentud && sudo journalctl -u shentud -f

Last updated