Jump to content

Скрипт для разворота NKN ноды [github]


Msrybin

Recommended Posts

Файл: autoupdate.sh

 

#!/bin/bash

SCRIPT_NAME="nknupdate.sh"

if [[ "$USER" == "root" ]]; then
        HOMEFOLDER="/root/nkn-node"
 else
        HOMEFOLDER="/home/$USER/nkn-node"
fi

CURRENTDIR=$(pwd)
cd $HOMEFOLDER

if [[ -z $(sudo -u root crontab -l | grep 'nknupdate.sh') ]]; then
        sudo -u root crontab -l > cron
        echo -e "0 */2 * * * $HOMEFOLDER/nknupdate.sh >/dev/null 2>&1" >> cron
        sudo -u root crontab cron
        rm cron
fi
echo "Create script file..."

echo "#!/bin/bash" > $SCRIPT_NAME
echo >> $SCRIPT_NAME
echo 'GITPATH="https://github.com/nknorg/nkn.git"' >> $SCRIPT_NAME
echo 'RELEASES_PATH="https://github.com/nknorg/nkn/releases/download"' >> $SCRIPT_NAME
echo 'DIR_NAME="linux-amd64"' >> $SCRIPT_NAME
echo 'CURRENTDIR=$(pwd)' >> $SCRIPT_NAME
echo -e "cd $HOMEFOLDER" >> $SCRIPT_NAME
echo 'if [ -d nkn ]; then' >> $SCRIPT_NAME
echo '  cd nkn' >> $SCRIPT_NAME
echo '  git fetch' >> $SCRIPT_NAME
echo '  else' >> $SCRIPT_NAME
echo '  git clone $GITPATH' >> $SCRIPT_NAME
echo '  cd nkn' >> $SCRIPT_NAME
echo 'fi' >> $SCRIPT_NAME
echo -e "chown -R $USER:$USER $HOMEFOLDER/nkn" >> $SCRIPT_NAME
echo 'LATEST_TAG=$(git tag | sort -d | tail -n 1)' >> $SCRIPT_NAME
echo 'cd ..' >> $SCRIPT_NAME
echo -n 'if [[ -z $' >> $SCRIPT_NAME
echo -n -e "($HOMEFOLDER/nknd -v | grep " >> $SCRIPT_NAME
echo '$LATEST_TAG) ]]; then' >> $SCRIPT_NAME
echo '  sudo systemctl stop nkn.service' >> $SCRIPT_NAME
echo '  if [ -f $DIR_NAME.zip ]; then rm $DIR_NAME.zip; fi' >> $SCRIPT_NAME
echo '  wget "$RELEASES_PATH/$LATEST_TAG/$DIR_NAME.zip"' >> $SCRIPT_NAME
echo '  unzip "$DIR_NAME.zip" >/dev/null 2>&1' >> $SCRIPT_NAME
echo '  chmod +x $DIR_NAME/nkn*' >> $SCRIPT_NAME
echo '  cp -r $DIR_NAME/* .' >> $SCRIPT_NAME
echo '  rm ../Log/*' >> $SCRIPT_NAME
echo '  sudo systemctl start nkn.service' >> $SCRIPT_NAME
echo '  rm -rf $DIR_NAME' >> $SCRIPT_NAME
echo '  rm $DIR_NAME.zip' >> $SCRIPT_NAME
echo 'fi' >> $SCRIPT_NAME
echo 'LATEST_TAG=$( ps -e | grep nknd | awk '\''{print $1}'\'' )' >> $SCRIPT_NAME
echo 'if [ -z $LATEST_TAG ]; then systemctl start nkn.service; fi' >> $SCRIPT_NAME
echo 'cd $CURRENTDIR' >> $SCRIPT_NAME

chmod +x $SCRIPT_NAME
cd $CURRENTDIR
rm -rf nkn

Файл: install.sh

#!/bin/bash

GITPATH="https://github.com/nknorg/nkn.git"
RELEASES_PATH="https://github.com/nknorg/nkn/releases/download"
DIR_NAME="linux-amd64"
FCONFIG="config.json"
FWALLET="wallet.json"
IDTXFEE=1


#color
BLUE="\033[0;34m"
YELLOW="\033[0;33m"
CYAN="\033[0;36m"
PURPLE="\033[0;35m"
RED='\033[0;31m'
GREEN="\033[0;32m"
NC='\033[0m'
MAG='\e[1;35m'

if [[ "$USER" == "root" ]]; then
        HOMEFOLDER="/root/nkn-node"
#       echo -e "${RED}Do not install node in the root folder, please create new user${NC}"
#        exit 0
 else
        HOMEFOLDER="/home/$USER/nkn-node"
fi
sudo apt update
sudo apt install unzip cpulimit -y
CURRENTDIR=$(pwd)
if [ -d $HOMEFOLDER ] ; then cd $HOMEFOLDER ; else mkdir $HOMEFOLDER; cd $HOMEFOLDER; fi

if [ -d nkn ]; then 
  cd nkn
  git merge
  else
  git clone $GITPATH
  cd nkn
fi
LATEST_TAG=$(git tag --sort=-creatordate | head -1)
cd ..

if [ -f $DIR_NAME.zip ]; then rm $DIR_NAME.zip ; fi
if [ -f nknd ]; then
        echo -e "${RED}Bin files exist!${NC}"
        else
        echo -e "${CYAN}Downloading bin files...${NC}"
        wget "$RELEASES_PATH/$LATEST_TAG/$DIR_NAME.zip"
        if [ -f $DIR_NAME.zip ]; then 
                echo -e "${MAG}Unzipping bin files...${NC}"
                unzip $DIR_NAME.zip >/dev/null 2>&1
                echo -e "${BLUE}Moving bin files...${NC}"
                mv $DIR_NAME/nkn* .
                mv $DIR_NAME/certs .
                mv $DIR_NAME/web .
                rm -rf $DIR_NAME
                rm $DIR_NAME.zip
        else
                echo -e "${YELLOW}Bin files not found. Do you want to compile? [Y,n]:${NC}"
                read -e ANSWER
                if [ -z $ANSWER ] || [ $ANSWER = 'Y' ] || [ $ANSWER = 'y' ]; then
                        sudo add-apt-repository -y ppa:longsleep/golang-backports
                        sudo apt-get install -y golang-go
                        cd $HOMEFOLDER/nkn
                        make
                        mv nknd ..
                        mv nknc ..
                        cd $HOMEFOLDER
                 fi
        fi
fi
ADDRESS=ВашКошелек
echo -n -e "${YELLOW}Input Your BeneficiaryAddr:${NC}"
echo $ADDRESS
#read -e ADDRESS
IDTXFEE=10
echo -n -e "${YELLOW}Input Your RegisterIDTxnFee in sat(default 1 sat):${NC}"
#read -e IDTXFEE
echo $IDTXFEE
if [[ ! ${IDTXFEE} =~ ^[0-9]+$ ]] ; then IDTXFEE=1 ; fi
echo
#    "RegisterIDTxnFee": $IDTXFEE,
if [ -f $FCONFIG ]; then rm $FCONFIG ; fi
cat << EOF > $FCONFIG
{
  "BeneficiaryAddr": "$ADDRESS",
  "StatePruningMode": "lowmem",
  "SeedList": [
    "http://mainnet-seed-0001.nkn.org:30003",
    "http://mainnet-seed-0002.nkn.org:30003",
    "http://mainnet-seed-0003.nkn.org:30003",
    "http://mainnet-seed-0004.nkn.org:30003",
    "http://mainnet-seed-0005.nkn.org:30003",
    "http://mainnet-seed-0006.nkn.org:30003",
    "http://mainnet-seed-0007.nkn.org:30003",
    "http://mainnet-seed-0008.nkn.org:30003",
    "http://mainnet-seed-0009.nkn.org:30003",
    "http://mainnet-seed-0010.nkn.org:30003",
    "http://mainnet-seed-0011.nkn.org:30003",
    "http://mainnet-seed-0012.nkn.org:30003",
    "http://mainnet-seed-0013.nkn.org:30003",
    "http://mainnet-seed-0014.nkn.org:30003",
    "http://mainnet-seed-0015.nkn.org:30003",
    "http://mainnet-seed-0016.nkn.org:30003",
    "http://mainnet-seed-0017.nkn.org:30003",
    "http://mainnet-seed-0018.nkn.org:30003",
    "http://mainnet-seed-0019.nkn.org:30003",
    "http://mainnet-seed-0020.nkn.org:30003",
    "http://mainnet-seed-0021.nkn.org:30003",
    "http://mainnet-seed-0022.nkn.org:30003",
    "http://mainnet-seed-0023.nkn.org:30003",
    "http://mainnet-seed-0024.nkn.org:30003",
    "http://mainnet-seed-0025.nkn.org:30003",
    "http://mainnet-seed-0026.nkn.org:30003",
    "http://mainnet-seed-0027.nkn.org:30003",
    "http://mainnet-seed-0028.nkn.org:30003",
    "http://mainnet-seed-0029.nkn.org:30003",
    "http://mainnet-seed-0030.nkn.org:30003",
    "http://mainnet-seed-0031.nkn.org:30003",
    "http://mainnet-seed-0032.nkn.org:30003",
    "http://mainnet-seed-0033.nkn.org:30003",
    "http://mainnet-seed-0034.nkn.org:30003",
    "http://mainnet-seed-0035.nkn.org:30003",
    "http://mainnet-seed-0036.nkn.org:30003",
    "http://mainnet-seed-0037.nkn.org:30003",
    "http://mainnet-seed-0038.nkn.org:30003",
    "http://mainnet-seed-0039.nkn.org:30003",
    "http://mainnet-seed-0040.nkn.org:30003",
    "http://mainnet-seed-0041.nkn.org:30003",
    "http://mainnet-seed-0042.nkn.org:30003",
    "http://mainnet-seed-0043.nkn.org:30003",
    "http://mainnet-seed-0044.nkn.org:30003"
  ],
  "GenesisBlockProposer": "a0309f8280ca86687a30ca86556113a253762e40eb884fc6063cad2b1ebd7de5"
}
EOF
sleep 2
if [ -f $FWALLET ] ; then
        echo -e "${RED}Wallet already exist!${NC}"
        echo -n -e "${YELLOW}Input your wallet password:${NC}"
        read -e WPASSWORD        
        else
        echo -e "${CYAN}Create new wallet...${NC}"
        WPASSWORD=12345
        echo -n -e "${YELLOW}Input your wallet password:${NC}"
        #read -e WPASSWORD
        echo $WPASSWORD
        echo -e "${GREEN}"
        ./nknc wallet -c -p $WPASSWORD
        echo -e "${NC}"
        #echo -n -e "${YELLOW}Send $IDTXFEE sat nkn to address and press <ENTER>${NC}"
        #read -e ANSWER
        fi
sleep 2
echo -e "${CYAN}Creating nkn service...${NC}"

echo "[Unit]" > nkn.service
echo "Description=nkn" >> nkn.service
echo "[Service]" >> nkn.service
echo -e "User=$USER" >> nkn.service
echo -e "WorkingDirectory=$HOMEFOLDER" >> nkn.service
echo -e "ExecStart=$HOMEFOLDER/nknd -p $WPASSWORD" >> nkn.service
echo "Restart=always" >> nkn.service
echo "RestartSec=3" >> nkn.service
echo "LimitNOFILE=500000" >> nkn.service
echo "[Install]" >> nkn.service
echo "WantedBy=default.target" >> nkn.service

sudo cp nkn.service /etc/systemd/system/nkn.service
sudo systemctl enable nkn.service

rm nkn.service

echo -e "${CYAN}firewall setup...${NC}"
sudo ufw allow 30001/tcp
sudo ufw allow 30002/tcp
sudo ufw allow 30003/tcp
sudo ufw allow 30004/tcp
sudo ufw allow 30005/tcp

ANSWER=y
echo -e "${YELLOW}Do you want to download bootstrap file? [Y,n]: ${NC}"
echo $ANSWER
#read -e ANSWER
if [ -z $ANSWER ] || [ $ANSWER = 'Y' ] || [ $ANSWER = 'y' ]; then
        cd $HOMEFOLDER
        wget https://nkn.org/ChainDB_pruned_latest.zip
        sudo cpulimit -l 60 unzip ChainDB_pruned_latest.zip | tr '\n' '\r' > /dev/null 2>&1
        rm -rf ChainDB_pruned_latest.zip
fi       

echo -e "${CYAN}Starting nkn service...${NC}"
sudo systemctl start nkn.service
echo
#echo -e "${GREEN}"
#./nknc wallet -l account -p $WPASSWORD
#echo -e "${NC}"
echo -e "${MAG}Nkn node control:${NC}"
echo -e "${CYAN}Start nkn node: ${BLUE}sudo systemctl start nkn.service${NC}"
echo -e "${CYAN}Stop nkn node: ${BLUE}sudo systemctl stop nkn.service${NC}"
echo -e "${CYAN}Enabe nkn service: ${BLUE}sudo systemctl enable nkn.service${NC}"
echo -e "${CYAN}Disable nkn service: ${BLUE}sudo systemctl disable nkn.service${NC}"
echo -e "${CYAN}Status nkn node: ${BLUE}sudo systemctl status nkn.service${NC}"
echo -e "${BLUE}or use command ./nknc info --state for statistics${NC}"
echo -e "${CYAN}For nkn.service file editing: ${BLUE}sudo nano /etc/systemd/system/nkn.service${NC}"
echo -e "${CYAN}After editing nkn.service file: ${BLUE}sudo systemctl daemon-reload${NC}"

cd $CURRENTDIR
bash ВАШАДЕРИКТОРИЯ/autoupdate.sh
rm -rf nkn

secs=$((3 * 60))
while [ $secs -gt 0 ]; do
   echo -ne "${YELLOW}Please wait 3 minuts... $secs\033[0K\r${NC}"
   sleep 1
   : $((secs--))
done
echo
nkn-node/nknc info -s

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
Top.Mail.Ru