Advertisement
Guest User

Part 1 TNA decentralized Storage

a guest
Oct 23rd, 2019
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.71 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #############################
  4. # Script by CcC #
  5. # Taona IPFS v0.0.0.1 #
  6. # http://taonacoin.com/ #
  7. #############################
  8.  
  9. LOG_FILE=/tmp/install.log
  10.  
  11. decho () {
  12. echo `date +"%H:%M:%S"` $1
  13. echo `date +"%H:%M:%S"` $1 >> $LOG_FILE
  14. }
  15.  
  16. error() {
  17. local parent_lineno="$1"
  18. local message="$2"
  19. local code="${3:-1}"
  20. echo "Error on or near line ${parent_lineno}; exiting with status ${code}"
  21. exit "${code}"
  22. }
  23. trap 'error ${LINENO}' ERR
  24.  
  25. clear
  26.  
  27. cat <<'FIG'
  28. .----------------. .----------------. .----------------. .-----------------. .----------------.
  29. | .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
  30. | | _________ | || | __ | || | ____ | || | ____ _____ | || | __ | |
  31. | | | _ _ | | || | / \ | || | .' `. | || ||_ \|_ _| | || | / \ | |
  32. | | |_/ | | \_| | || | / /\ \ | || | / .--. \ | || | | \ | | | || | / /\ \ | |
  33. | | | | | || | / ____ \ | || | | | | | | || | | |\ \| | | || | / ____ \ | |
  34. | | _| |_ | || | _/ / \ \_ | || | \ `--' / | || | _| |_\ |_ | || | _/ / \ \_ | |
  35. | | |_____| | || ||____| |____|| || | `.____.' | || ||_____|\____| | || ||____| |____|| |
  36. | | | || | | || | | || | | || | | |
  37. | '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
  38. '----------------' '----------------' '----------------' '----------------' '----------------'
  39. .----------------. .----------------. .----------------. .----------------.
  40. | .--------------. || .--------------. || .--------------. || .--------------. |
  41. | | _____ | || | ______ | || | _________ | || | _______ | |
  42. | | |_ _| | || | |_ __ \ | || | |_ ___ | | || | / ___ | | |
  43. | | | | | || | | |__) | | || | | |_ \_| | || | | (__ \_| | |
  44. | | | | | || | | ___/ | || | | _| | || | '.___`-. | |
  45. | | _| |_ | || | _| |_ | || | _| |_ | || | |`\____) | | |
  46. | | |_____| | || | |_____| | || | |_____| | || | |_______.' | |
  47. | | | || | | || | | || | | |
  48. | '--------------' || '--------------' || '--------------' || '--------------' |
  49. '----------------' '----------------' '----------------' '----------------'
  50. FIG
  51.  
  52.  
  53. # Check if executed as root user
  54. if [[ $EUID -ne 0 ]]; then
  55. echo -e "This script has to be run as \033[1mroot\033[0m user."
  56. exit 1
  57. fi
  58.  
  59.  
  60. # Print variable on a screen
  61. decho "Please make sure you double check information before hitting enter!"
  62.  
  63. read -e -p "Please enter username that will run Taona IPFS server |CaSe SeNsItIvE|: " whoami
  64. if [[ "$whoami" == "" ]]; then
  65. decho "WARNING: No user entered, exiting!!!"
  66. exit 3
  67. fi
  68. if [[ "$whoami" == "root" ]]; then
  69. decho "WARNING: User root entered? It is recommended to use a non-root user, exiting!!!"
  70. exit 3
  71. fi
  72. read -e -p "Server IP Address: " ip
  73. if [[ "$ip" == "" ]]; then
  74. decho "WARNING: No IP entered, exiting!!!"
  75. exit 3
  76. fi
  77.  
  78. read -e -p "(Optional) Install Fail2ban? (Recommended) [Y/n]: " install_fail2ban
  79. read -e -p "(Optional) Install UFW and configure ports? (Recommended) [Y/n]: " UFW
  80.  
  81.  
  82. # Check for systemd
  83. systemctl --version >/dev/null 2>&1 || { decho "systemd is required. Are you using Ubuntu 16.04?" >&2; exit 1; }
  84.  
  85. # Install swap
  86. decho "Enabling a swap partition..."
  87.  
  88. if free | awk '/^Swap:/ {exit !$2}'; then
  89. echo "Has swap..."
  90. else
  91. touch /var/swap.img
  92. chmod 600 /var/swap.img
  93. dd if=/dev/zero of=/var/swap.img bs=1024k count=2048
  94. mkswap /var/swap.img
  95. swapon /var/swap.img
  96. echo "/var/swap.img none swap sw 0 0" >> /etc/fstab
  97. fi
  98.  
  99.  
  100. # Update packages
  101. decho "Updating system..."
  102.  
  103. apt-get update -y
  104.  
  105.  
  106. # Install required packages
  107. decho "Installing base packages and dependencies..."
  108.  
  109. apt-get install -y sudo
  110. apt-get install -y wget
  111. apt-get install -y git
  112. apt-get install -y unzip
  113. apt-get install -y pwgen
  114. apt-get install -y mc
  115.  
  116. apt-get install -y build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3
  117. apt-get install -y libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev
  118. apt-get install -y libboost-all-dev
  119.  
  120. apt-get install -y software-properties-common
  121. add-apt-repository -y ppa:bitcoin/bitcoin
  122. apt-get update -y
  123. apt-get install -y libdb4.8-dev libdb4.8++-dev
  124.  
  125. apt-get install -y libminiupnpc-dev
  126. apt-get install -y libzmq3-dev
  127. apt-get install -y libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
  128. apt-get install -y libqt4-dev libprotobuf-dev protobuf-compiler
  129. apt-get install -y libqrencode-dev
  130.  
  131. if [[ ("$install_fail2ban" == "y" || "$install_fail2ban" == "Y" || "$install_fail2ban" == "") ]]; then
  132. decho "Optional install: Fail2ban"
  133. cd ~
  134. apt-get install -y fail2ban
  135. systemctl enable fail2ban
  136. systemctl start fail2ban
  137. fi
  138.  
  139. if [[ ("$UFW" == "y" || "$UFW" == "Y" || "$UFW" == "") ]]; then
  140. decho "Optional install: UFW"
  141. apt-get install -y ufw
  142. ufw allow ssh/tcp
  143. ufw allow sftp/tcp
  144. ufw allow 4001/tcp
  145. ufw allow 8757/tcp
  146. ufw default deny incoming
  147. ufw default allow outgoing
  148. ufw logging on
  149. ufw --force enable
  150. fi
  151.  
  152.  
  153. decho "Create user $whoami (if necessary)"
  154.  
  155. # Deactivate trap only for this command
  156. trap '' ERR
  157. getent passwd $whoami > /dev/null 2&>1
  158.  
  159. if [ $? -ne 0 ]; then
  160. trap 'error ${LINENO}' ERR
  161. adduser --disabled-password --gecos "" $whoami
  162. else
  163. trap 'error ${LINENO}' ERR
  164. fi
  165.  
  166.  
  167. # Create taona.conf
  168. decho "Setting up Taona Core..."
  169.  
  170. echo 'Creating taona.conf...'
  171. mkdir -p /home/$whoami/.taona/
  172. cat << EOF > /home/$whoami/.taona/taona.conf
  173. rpcuser=user
  174. rpcpassword=password
  175. rpcallowip=127.0.0.1
  176. listen=1
  177. server=1
  178. daemon=1
  179. maxconnections=32
  180. externalip=$ip
  181. EOF
  182. chown -R $whoami:$whoami /home/$whoami
  183.  
  184.  
  185. # Install Taona Daemon
  186. echo 'Downloading daemon...'
  187. cd
  188. wget https://github.com/TaonaProject/Taonacoin/releases/download/2.2.2/taona-2.2.2.0-linux.zip
  189. unzip taona-2.2.2.0-linux.zip
  190. chmod -R 755 taona-2.2.2.0-linux
  191. cp taona-2.2.2.0-linux/taonad /usr/bin/
  192. cp taona-2.2.2.0-linux/taona-cli /usr/bin/
  193. cp taona-2.2.2.0-linux/taona-qt /usr/bin/
  194. rm taona-2.2.2.0-linux.zip
  195. rm -rf taona-2.2.2.0-linux
  196.  
  197.  
  198. # Run taonad as selected user
  199. sudo -H -u $whoami bash -c 'taonad'
  200.  
  201. echo 'Taona Core prepared and launched...'
  202.  
  203. sleep 10
  204.  
  205.  
  206. # Deploy script to keep daemon alive
  207. cat << EOF > /home/$whoami/taonadkeepalive.sh
  208. until taonad; do
  209. echo "Taonad crashed with error $?. Restarting.." >&2
  210. sleep 1
  211. done
  212. EOF
  213.  
  214. chmod +x /home/$whoami/taonadkeepalive.sh
  215. chown $whoami:$whoami /home/$whoami/taonadkeepalive.sh
  216.  
  217. # Setup crontab
  218. echo "@reboot sleep 30 && /home/$whoami/taonadkeepalive.sh" >> newCrontab
  219. crontab -u $whoami newCrontab
  220. rm newCrontab
  221.  
  222. clear
  223.  
  224.  
  225. # Taona Syncing
  226. sudo -H -u $whoami bash -c 'taona-cli getinfo'
  227. sleep 2
  228. clear
  229. sudo -H -u $whoami bash -c 'taona-cli getinfo'
  230. sleep 2
  231. clear
  232. sudo -H -u $whoami bash -c 'taona-cli getinfo'
  233. sleep 2
  234. clear
  235. sudo -H -u $whoami bash -c 'taona-cli getinfo'
  236. sleep 2
  237. clear
  238. sudo -H -u $whoami bash -c 'taona-cli getinfo'
  239. sleep 2
  240. clear
  241.  
  242. # IPFS Install
  243. echo 'Installing IPFS...'
  244. apt-get update
  245. apt-get install golang-go -y
  246. wget https://dist.ipfs.io/go-ipfs/v0.4.22-rc1/go-ipfs_v0.4.22-rc1_linux-386.tar.gz
  247. tar xvfz go-ipfs_v0.4.22-rc1_linux-386.tar.gz
  248. sudo mv go-ipfs/ipfs /usr/bin/ipfs
  249. rm -rf go-ipfs
  250.  
  251. clear
  252.  
  253.  
  254. # IPFS Init
  255. ipfs init
  256.  
  257.  
  258. # Deploy script to keep daemon alive
  259. cat << EOF > /home/$whoami/ipfskeepalive.sh
  260. #!/bin/sh
  261. until ipfs daemon; do
  262. echo "IPFS crashed with error 0. Restarting.." >&2
  263. sleep 1
  264. done
  265. EOF
  266.  
  267. chmod +x /home/$whoami/ipfskeepalive.sh
  268. chown $whoami:$whoami /home/$whoami/ipfskeepalive.sh
  269.  
  270. cat << EOF > /home/$whoami/ipfsdaemon.sh
  271. #!/bin/sh
  272. screen -ls | grep Detached | cut -d. -f1 | awk '{print $1}' | xargs kill
  273. screen -dmS ipfs ./ipfskeepalive.sh
  274. EOF
  275.  
  276. chmod +x /home/$whoami/ipfsdaemon.sh
  277. chown $whoami:$whoami /home/$whoami/ipfsdaemon.sh
  278.  
  279.  
  280. # Setup crontab
  281. echo "@reboot sleep 30 && /home/$whoami/taonadkeepalive.sh" >> newCrontab
  282. echo "@reboot sleep 30 && /home/$whoami/ipfsdaemon.sh" >> newCrontab
  283. crontab -u $whoami newCrontab
  284. rm newCrontab
  285.  
  286. clear
  287.  
  288.  
  289. # Part 1 Completed
  290. echo 'Part 1 completed...'
  291. echo 'Taona and IPFS deamon are installed'
  292. echo 'Watchdogs are in place'
  293. sleep 5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement