Skip to content

Instantly share code, notes, and snippets.

@fenriz07
Last active October 29, 2024 00:56
Show Gist options
  • Save fenriz07/7866ed75096ed29c3e174dd632b2703e to your computer and use it in GitHub Desktop.
Save fenriz07/7866ed75096ed29c3e174dd632b2703e to your computer and use it in GitHub Desktop.
Elys Install with one line script
#!/bin/bash
source <(curl -s https://raw.githubusercontent.com/staketown/utils/master/common.sh)
printLogo
source <(curl -s https://raw.githubusercontent.com/staketown/cosmos/master/utils/ports.sh) && sleep 1
export -f selectPortSet && selectPortSet
read -r -p "Enter node moniker: " NODE_MONIKER
CHAIN_ID="elystestnet-1"
CHAIN_DENOM="uelys"
BINARY_NAME="elysd"
BINARY_VERSION_TAG="v0.48.0"
CHEAT_SHEET=""
printDelimiter
echo -e "Node moniker: $NODE_MONIKER"
echo -e "Chain id: $CHAIN_ID"
echo -e "Chain demon: $CHAIN_DENOM"
echo -e "Binary version tag: $BINARY_VERSION_TAG"
printDelimiter && sleep 1
source <(curl -s https://raw.githubusercontent.com/staketown/cosmos/master/utils/dependencies.sh)
echo "" && printGreen "Building binaries..." && sleep 1
cd $HOME || return
rm -rf elys
git clone https://github.com/elys-network/elys.git
cd elys || return
git checkout $BINARY_VERSION_TAG
make install
elysd config keyring-backend os
elysd config chain-id $CHAIN_ID
elysd init "$NODE_MONIKER" --chain-id $CHAIN_ID
curl -s https://snapshots-testnet.stake-town.com/elys/genesis.json > $HOME/.elys/config/genesis.json
curl -s https://snapshots-testnet.stake-town.com/elys/addrbook.json > $HOME/.elys/config/addrbook.json
CONFIG_TOML=$HOME/.elys/config/config.toml
PEERS="[email protected]:26656,[email protected]:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $CONFIG_TOML
SEEDS=""
sed -i.bak -e "s/^seeds =.*/seeds = \"$SEEDS\"/" $CONFIG_TOML
APP_TOML=$HOME/.elys/config/app.toml
sed -i "s/^db_backend *=.*/db_backend = \"pebbledb\"/" $HOME/.elys/config/config.toml
sed -i "s/^app-db-backend *=.*/app-db-backend = \"pebbledb\"/" $APP_TOML
sed -i 's|^pruning *=.*|pruning = "custom"|g' $APP_TOML
sed -i 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|g' $APP_TOML
sed -i 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|g' $APP_TOML
sed -i 's|^pruning-interval *=.*|pruning-interval = "19"|g' $APP_TOML
sed -i -e "s/^filter_peers *=.*/filter_peers = \"true\"/" $CONFIG_TOML
indexer="null"
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $CONFIG_TOML
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.0018ibc/2180E84E20F5679FCC760D8C165B60F42065DEF7F46A72B447CFF1B7DC6C0A65,0.00025ibc/E2D2F6ADCC68AA3384B2F5DFACCA437923D137C14E86FB8A10207CF3BED0C8D4,0.00025uelys"|g' $APP_TOML
# Customize ports
CLIENT_TOML=$HOME/.elys/config/client.toml
sed -i.bak -e "s/^external_address *=.*/external_address = \"$(wget -qO- eth0.me):$PORT_PPROF_LADDR\"/" $CONFIG_TOML
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:$PORT_PROXY_APP\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:$PORT_RPC\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:$PORT_P2P\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:$PORT_PPROF_LADDR\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":$PORT_PROMETHEUS\"%" $CONFIG_TOML && \
sed -i.bak -e "s%^address = \"localhost:9090\"%address = \"0.0.0.0:$PORT_GRPC\"%; s%^address = \"localhost:9091\"%address = \"0.0.0.0:$PORT_GRPC_WEB\"%; s%^address = \"tcp://localhost:1317\"%address = \"tcp://0.0.0.0:$PORT_API\"%" $APP_TOML && \
sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:$PORT_RPC\"%" $CLIENT_TOML
printGreen "Install and configure cosmovisor..." && sleep 1
go install cosmossdk.io/tools/cosmovisor/cmd/[email protected]
mkdir -p ~/.elys/cosmovisor/genesis/bin
mkdir -p ~/.elys/cosmovisor/upgrades
cp ~/go/bin/elysd $HOME/.elys/cosmovisor/genesis/bin
printGreen "Starting service and synchronization..." && sleep 1
sudo tee /etc/systemd/system/elysd.service > /dev/null << EOF
[Unit]
Description=Elys Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=3
LimitNOFILE=10000
Environment="DAEMON_NAME=elysd"
Environment="DAEMON_HOME=$HOME/.elys"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="UNSAFE_SKIP_BACKUP=true"
[Install]
WantedBy=multi-user.target
EOF
elysd tendermint unsafe-reset-all --home $HOME/.elys --keep-addr-book
# Add snapshot here
URL="https://snapshots-testnet.stake-town.com/elys/elystestnet-1_latest.tar.lz4"
curl $URL | lz4 -dc - | tar -xf - -C $HOME/.elys
[[ -f $HOME/.elys/data/upgrade-info.json ]] && cp $HOME/.elys/data/upgrade-info.json $HOME/.elys/cosmovisor/genesis/upgrade-info.json
sudo systemctl daemon-reload
sudo systemctl enable elysd
sudo systemctl start elysd
printDelimiter
printGreen "Check logs: sudo journalctl -u $BINARY_NAME -f -o cat"
printGreen "Check synchronization: $BINARY_NAME status 2>&1 | jq .SyncInfo.catching_up"
printGreen "Check our cheat sheet: $CHEAT_SHEET"
printDelimiter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment