Last active
February 11, 2024 04:19
-
-
Save joshhamon/43d90df0afa906980a7d1ff85a4e2bb0 to your computer and use it in GitHub Desktop.
Run multiple vNodes on the same machine/cloud VM
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Update api="https://mainnet.infura.io/v3/*" with your mainnet url. Go to the forum on we.incognito.org for help | |
# Update the following section with your validator keys | |
validator_keys=( | |
"KEY 1" | |
"KEY 2" | |
"KEY 3" | |
... | |
"KEY X" | |
) | |
api="https://mainnet.infura.io/v3/*" | |
run() | |
{ | |
bootnode="mainnet-bootnode.incognito.org:9330" | |
latest_tag=$1 #leave as $1 or replace with a known good tag if latest tag isn't stable | |
current_tag=$2 | |
for i in "${!validator_keys[@]}" | |
do | |
docker rm -f "inc_mainnet_$i" | |
done | |
if [ "$current_tag" != "" ] | |
then | |
docker image rm -f incognitochain/incognito-mainnet:${current_tag} | |
fi | |
if [ ! -d "$PWD/eth-mainnet-data" ] | |
then | |
mkdir $PWD/eth-mainnet-data | |
chmod -R 777 $PWD/eth-mainnet-data | |
fi | |
docker pull incognitochain/incognito-mainnet:${latest_tag} | |
docker network create --driver bridge inc_net || true | |
docker run --restart=always --net inc_net -d --name eth_mainnet -p 8545:8545 -p 30303:30303 -v $PWD/eth-mainnet-data:/geth -it ethereum/client-go --syncmode light --datadir /geth --rpcaddr 0.0.0.0 --rpcport 8545 --rpc --rpccorsdomain "*" | |
for i in "${!validator_keys[@]}" | |
do | |
docker run --restart=always -p $((9334 + $i)):$((9334 + $i)) -p $((9433 + $i)):$((9433 + $i)) --net inc_net -e GETH_PROTOCOL= -e GETH_PORT= -e NODE_PORT=$((9433 + $i)) -e RPC_PORT=$((9334 + $i)) -e BOOTNODE_IP=$bootnode -e GETH_NAME=$api -e MININGKEY=${validator_keys[$i]} -e TESTNET=false -e LIMIT_FEE=1 -v $PWD/data${i}:/data -it -d --name inc_mainnet_${i} incognitochain/incognito-mainnet:${latest_tag} | |
done | |
} | |
if [ -x "$(command -v docker)" ]; then | |
echo "Docker Installed" | |
else | |
echo "Installing Docker" | |
bash -c "wget -qO- https://get.docker.com/ | sh" | |
sudo usermod -aG docker $USER | |
echo "PLEASE RESTART YOUR COMPUTER AND RE-RUN THIS SCRIPT" | |
exit | |
fi | |
ps aux | grep 'incognito.sh' | awk '{ print $2}' | grep -v "^$$\$" | xargs kill -9 | |
current_latest_tag="" | |
while [ 1 = 1 ] | |
do | |
tags=`curl -X GET https://registry.hub.docker.com/v1/repositories/incognitochain/incognito-mainnet/tags | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}' | sed -e 's/\n/;/g'` | |
sorted_tags=($(echo ${tags[*]}| tr " " "\n" | sort -rn)) | |
latest_tag=${sorted_tags[0]} | |
if [ "$current_latest_tag" != "$latest_tag" ] | |
then | |
run $latest_tag $current_latest_tag | |
current_latest_tag=$latest_tag | |
fi | |
for i in "${!validator_keys[@]}" | |
do | |
docker start "inc_mainnet_$i" | |
done | |
sleep 3600s | |
done |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# I never used this file so edited the name to make it easier to run incognito_eth.sh but I saved this just in case. | |
validator_keys=( | |
"KEY 1" | |
"KEY 2" | |
"KEY 3" | |
... | |
"KEY X" | |
) | |
run() | |
{ | |
bootnode="mainnet-bootnode.incognito.org:9330" | |
latest_tag=$1 #leave as $1 or replace with a known good tag if latest tag isn't stable | |
current_tag=$2 | |
for i in "${!validator_keys[@]}" | |
do | |
docker rm -f "inc_mainnet_$i" | |
done | |
if [ "$current_tag" != "" ] | |
then | |
docker image rm -f incognitochain/incognito-mainnet:${current_tag} | |
fi | |
docker pull incognitochain/incognito-mainnet:${latest_tag} | |
for i in "${!validator_keys[@]}" | |
do | |
docker run --restart=always -p $((9334 + $i)):$((9334 + $i)) -p $((9433 + $i)):$((9433 + $i)) -e NODE_PORT=$((9433 + $i)) -e RPC_PORT=$((9334 + $i)) -e BOOTNODE_IP=$bootnode -e MININGKEY=${validator_keys[$i]} -e TESTNET=false -e LIMIT_FEE=1 -v $PWD/data${i}:/data -itd --name inc_mainnet_${i} incognitochain/incognito-mainnet:${latest_tag} | |
done | |
} | |
if [ -x "$(command -v docker)" ]; then | |
echo "Docker Installed" | |
else | |
echo "Installing Docker" | |
bash -c "wget -qO- https://get.docker.com/ | sh" | |
sudo usermod -aG docker $USER | |
echo "PLEASE RESTART YOUR COMPUTER AND RE-RUN THIS SCRIPT" | |
exit | |
fi | |
ps aux | grep 'incognito.sh' | awk '{ print $2}' | grep -v "^$$\$" | xargs kill -9 | |
current_latest_tag="" | |
while [ 1 = 1 ] | |
do | |
tags=`curl -X GET https://registry.hub.docker.com/v1/repositories/incognitochain/incognito-mainnet/tags | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}' | sed -e 's/\n/;/g'` | |
sorted_tags=($(echo ${tags[*]}| tr " " "\n" | sort -rn)) | |
latest_tag=${sorted_tags[0]} | |
if [ "$current_latest_tag" != "$latest_tag" ] | |
then | |
run $latest_tag $current_latest_tag | |
current_latest_tag=$latest_tag | |
fi | |
for i in "${!validator_keys[@]}" | |
do | |
docker start "inc_mainnet_$i" | |
done | |
sleep 3600s | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment