Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #############################
- # Script by CcC #
- # Taona IPFS v0.0.0.1 #
- # http://taonacoin.com/ #
- #############################
- LOG_FILE=/tmp/install.log
- decho () {
- echo `date +"%H:%M:%S"` $1
- echo `date +"%H:%M:%S"` $1 >> $LOG_FILE
- }
- error() {
- local parent_lineno="$1"
- local message="$2"
- local code="${3:-1}"
- echo "Error on or near line ${parent_lineno}; exiting with status ${code}"
- exit "${code}"
- }
- trap 'error ${LINENO}' ERR
- clear
- cat <<'FIG'
- .----------------. .----------------. .----------------. .-----------------. .----------------.
- | .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
- | | _________ | || | __ | || | ____ | || | ____ _____ | || | __ | |
- | | | _ _ | | || | / \ | || | .' `. | || ||_ \|_ _| | || | / \ | |
- | | |_/ | | \_| | || | / /\ \ | || | / .--. \ | || | | \ | | | || | / /\ \ | |
- | | | | | || | / ____ \ | || | | | | | | || | | |\ \| | | || | / ____ \ | |
- | | _| |_ | || | _/ / \ \_ | || | \ `--' / | || | _| |_\ |_ | || | _/ / \ \_ | |
- | | |_____| | || ||____| |____|| || | `.____.' | || ||_____|\____| | || ||____| |____|| |
- | | | || | | || | | || | | || | | |
- | '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
- '----------------' '----------------' '----------------' '----------------' '----------------'
- .----------------. .----------------. .----------------. .----------------.
- | .--------------. || .--------------. || .--------------. || .--------------. |
- | | _____ | || | ______ | || | _________ | || | _______ | |
- | | |_ _| | || | |_ __ \ | || | |_ ___ | | || | / ___ | | |
- | | | | | || | | |__) | | || | | |_ \_| | || | | (__ \_| | |
- | | | | | || | | ___/ | || | | _| | || | '.___`-. | |
- | | _| |_ | || | _| |_ | || | _| |_ | || | |`\____) | | |
- | | |_____| | || | |_____| | || | |_____| | || | |_______.' | |
- | | | || | | || | | || | | |
- | '--------------' || '--------------' || '--------------' || '--------------' |
- '----------------' '----------------' '----------------' '----------------'
- FIG
- # Check if executed as root user
- if [[ $EUID -ne 0 ]]; then
- echo -e "This script has to be run as \033[1mroot\033[0m user."
- exit 1
- fi
- # Print variable on a screen
- decho "Please make sure you double check information before hitting enter!"
- read -e -p "Please enter username that will run Taona IPFS server |CaSe SeNsItIvE|: " whoami
- if [[ "$whoami" == "" ]]; then
- decho "WARNING: No user entered, exiting!!!"
- exit 3
- fi
- if [[ "$whoami" == "root" ]]; then
- decho "WARNING: User root entered? It is recommended to use a non-root user, exiting!!!"
- exit 3
- fi
- read -e -p "Server IP Address: " ip
- if [[ "$ip" == "" ]]; then
- decho "WARNING: No IP entered, exiting!!!"
- exit 3
- fi
- read -e -p "(Optional) Install Fail2ban? (Recommended) [Y/n]: " install_fail2ban
- read -e -p "(Optional) Install UFW and configure ports? (Recommended) [Y/n]: " UFW
- # Check for systemd
- systemctl --version >/dev/null 2>&1 || { decho "systemd is required. Are you using Ubuntu 16.04?" >&2; exit 1; }
- # Install swap
- decho "Enabling a swap partition..."
- if free | awk '/^Swap:/ {exit !$2}'; then
- echo "Has swap..."
- else
- touch /var/swap.img
- chmod 600 /var/swap.img
- dd if=/dev/zero of=/var/swap.img bs=1024k count=2048
- mkswap /var/swap.img
- swapon /var/swap.img
- echo "/var/swap.img none swap sw 0 0" >> /etc/fstab
- fi
- # Update packages
- decho "Updating system..."
- apt-get update -y
- # Install required packages
- decho "Installing base packages and dependencies..."
- apt-get install -y sudo
- apt-get install -y wget
- apt-get install -y git
- apt-get install -y unzip
- apt-get install -y pwgen
- apt-get install -y mc
- apt-get install -y build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3
- apt-get install -y libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev
- apt-get install -y libboost-all-dev
- apt-get install -y software-properties-common
- add-apt-repository -y ppa:bitcoin/bitcoin
- apt-get update -y
- apt-get install -y libdb4.8-dev libdb4.8++-dev
- apt-get install -y libminiupnpc-dev
- apt-get install -y libzmq3-dev
- apt-get install -y libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
- apt-get install -y libqt4-dev libprotobuf-dev protobuf-compiler
- apt-get install -y libqrencode-dev
- if [[ ("$install_fail2ban" == "y" || "$install_fail2ban" == "Y" || "$install_fail2ban" == "") ]]; then
- decho "Optional install: Fail2ban"
- cd ~
- apt-get install -y fail2ban
- systemctl enable fail2ban
- systemctl start fail2ban
- fi
- if [[ ("$UFW" == "y" || "$UFW" == "Y" || "$UFW" == "") ]]; then
- decho "Optional install: UFW"
- apt-get install -y ufw
- ufw allow ssh/tcp
- ufw allow sftp/tcp
- ufw allow 4001/tcp
- ufw allow 8757/tcp
- ufw default deny incoming
- ufw default allow outgoing
- ufw logging on
- ufw --force enable
- fi
- decho "Create user $whoami (if necessary)"
- # Deactivate trap only for this command
- trap '' ERR
- getent passwd $whoami > /dev/null 2&>1
- if [ $? -ne 0 ]; then
- trap 'error ${LINENO}' ERR
- adduser --disabled-password --gecos "" $whoami
- else
- trap 'error ${LINENO}' ERR
- fi
- # Create taona.conf
- decho "Setting up Taona Core..."
- echo 'Creating taona.conf...'
- mkdir -p /home/$whoami/.taona/
- cat << EOF > /home/$whoami/.taona/taona.conf
- rpcuser=user
- rpcpassword=password
- rpcallowip=127.0.0.1
- listen=1
- server=1
- daemon=1
- maxconnections=32
- externalip=$ip
- EOF
- chown -R $whoami:$whoami /home/$whoami
- # Install Taona Daemon
- echo 'Downloading daemon...'
- cd
- wget https://github.com/TaonaProject/Taonacoin/releases/download/2.2.2/taona-2.2.2.0-linux.zip
- unzip taona-2.2.2.0-linux.zip
- chmod -R 755 taona-2.2.2.0-linux
- cp taona-2.2.2.0-linux/taonad /usr/bin/
- cp taona-2.2.2.0-linux/taona-cli /usr/bin/
- cp taona-2.2.2.0-linux/taona-qt /usr/bin/
- rm taona-2.2.2.0-linux.zip
- rm -rf taona-2.2.2.0-linux
- # Run taonad as selected user
- sudo -H -u $whoami bash -c 'taonad'
- echo 'Taona Core prepared and launched...'
- sleep 10
- # Deploy script to keep daemon alive
- cat << EOF > /home/$whoami/taonadkeepalive.sh
- until taonad; do
- echo "Taonad crashed with error $?. Restarting.." >&2
- sleep 1
- done
- EOF
- chmod +x /home/$whoami/taonadkeepalive.sh
- chown $whoami:$whoami /home/$whoami/taonadkeepalive.sh
- # Setup crontab
- echo "@reboot sleep 30 && /home/$whoami/taonadkeepalive.sh" >> newCrontab
- crontab -u $whoami newCrontab
- rm newCrontab
- clear
- # Taona Syncing
- sudo -H -u $whoami bash -c 'taona-cli getinfo'
- sleep 2
- clear
- sudo -H -u $whoami bash -c 'taona-cli getinfo'
- sleep 2
- clear
- sudo -H -u $whoami bash -c 'taona-cli getinfo'
- sleep 2
- clear
- sudo -H -u $whoami bash -c 'taona-cli getinfo'
- sleep 2
- clear
- sudo -H -u $whoami bash -c 'taona-cli getinfo'
- sleep 2
- clear
- # IPFS Install
- echo 'Installing IPFS...'
- apt-get update
- apt-get install golang-go -y
- wget https://dist.ipfs.io/go-ipfs/v0.4.22-rc1/go-ipfs_v0.4.22-rc1_linux-386.tar.gz
- tar xvfz go-ipfs_v0.4.22-rc1_linux-386.tar.gz
- sudo mv go-ipfs/ipfs /usr/bin/ipfs
- rm -rf go-ipfs
- clear
- # IPFS Init
- ipfs init
- # Deploy script to keep daemon alive
- cat << EOF > /home/$whoami/ipfskeepalive.sh
- #!/bin/sh
- until ipfs daemon; do
- echo "IPFS crashed with error 0. Restarting.." >&2
- sleep 1
- done
- EOF
- chmod +x /home/$whoami/ipfskeepalive.sh
- chown $whoami:$whoami /home/$whoami/ipfskeepalive.sh
- cat << EOF > /home/$whoami/ipfsdaemon.sh
- #!/bin/sh
- screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
- screen -dmS ipfs ./ipfskeepalive.sh
- EOF
- chmod +x /home/$whoami/ipfsdaemon.sh
- chown $whoami:$whoami /home/$whoami/ipfsdaemon.sh
- # Setup crontab
- echo "@reboot sleep 30 && /home/$whoami/taonadkeepalive.sh" >> newCrontab
- echo "@reboot sleep 30 && /home/$whoami/ipfsdaemon.sh" >> newCrontab
- crontab -u $whoami newCrontab
- rm newCrontab
- clear
- # Part 1 Completed
- echo 'Part 1 completed...'
- echo 'Taona and IPFS deamon are installed'
- echo 'Watchdogs are in place'
- sleep 5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement