Advertisement
Guest User

Untitled

a guest
Aug 21st, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 KB | None | 0 0
  1. #!/bin/bash
  2. # Easy TeamSpeak 3 installer for Debian based OS
  3. # Tested on Debian 7/8 and Ubuntu 14.04 LTS
  4.  
  5. # Check for root account
  6. if [[ "$EUID" -ne 0 ]]; then
  7. echo "Sorry, you need to run this as root"
  8. exit 1
  9. fi
  10.  
  11. # Check supported OS
  12. if [ -e '/etc/redhat-release' ] ; then
  13. echo 'Error: Sorry, this installer works only on Debian or Ubuntu'
  14. exit 1
  15. fi
  16.  
  17. # Get the internal IP of the server
  18. pvtip=$( ifconfig | grep 'inet addr:'| grep -v '127.0.0*' | cut -d ':' -f2 | awk '{ print $1}' )
  19.  
  20. # Get the external public IP of the server
  21. pubip=$( wget -qO- http://ipinfo.io/ip )
  22.  
  23. # Gives user the internal ip for reference and ask for desired ports
  24. echo "Your private internal IP is: $pvtip"
  25. read -p "Enter Voice Server port [9987]: " vport
  26. while true; do
  27. if [[ "$vport" == "" ]]; then
  28. vport="9987"
  29. break
  30. elif ! [[ "$vport" =~ ^[0-9]+$ ]] || [[ "$vport" -lt "1" ]] || [[ "$vport" -gt "65535" ]]; then
  31. echo "Voice Server port invalid."
  32. read -p "Re-enter Voice Server port [9987]: " vport
  33. else
  34. break
  35. fi
  36. done
  37.  
  38. read -p "Enter File Transfer port [30033]: " fport
  39. while true; do
  40. if [[ "$fport" == "" ]]; then
  41. fport="30033"
  42. break
  43. elif ! [[ "$fport" =~ ^[0-9]+$ ]] || [[ "$fport" -lt "1" ]] || [[ "$fport" -gt "65535" ]]; then
  44. echo "File Transfer port invalid."
  45. read -p "Re-enter File Transfer port [30033]: " fport
  46. else
  47. break
  48. fi
  49. done
  50.  
  51. read -p "Enter Server Query port [10011]: " qport
  52. while true; do
  53. if [[ "$qport" == "" ]]; then
  54. qport="10011"
  55. break
  56. elif ! [[ "$qport" =~ ^[0-9]+$ ]] || [[ "$qport" -lt "1" ]] || [[ "$qport" -gt "65535" ]]; then
  57. echo "Server Query port invalid."
  58. read -p "Re-enter Server Query port [10011]: " qport
  59. else
  60. break
  61. fi
  62. done
  63.  
  64. rapass=$( cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1 )
  65. read -p "Enter Server Query Admin password [$rapass]: " apass
  66. if [[ "$apass" == "" ]]; then
  67. apass=$rapass
  68. fi
  69.  
  70. # Get latest TS3 server version
  71. echo "-------------------------------------------------------"
  72. echo "Detecting latest TeamSpeak 3 version, please wait..."
  73. echo "-------------------------------------------------------"
  74. wget 'http://dl.4players.de/ts/releases/?C=M;O=D' -q -O - | grep -i dir | grep -Eo '<a href=\".*\/\">.*\/<\/a>' | grep -Eo '[0-9\.?]+' | uniq | sort -V -r > TS3V
  75. while read ts3version; do
  76. if [[ "${ts3version}" =~ ^[3-9]+\.[0-9]+\.1[2-9]+\.?[0-9]*$ ]]; then
  77. wget --spider -q http://dl.4players.de/ts/releases/${ts3version}/teamspeak3-server_linux_amd64-${ts3version}.tar.bz2
  78. else
  79. wget --spider -q http://dl.4players.de/ts/releases/${ts3version}/teamspeak3-server_linux-amd64-${ts3version}.tar.gz
  80. fi
  81. if [[ $? == 0 ]]; then
  82. break
  83. fi
  84. done < TS3V
  85. rm -f TS3V
  86.  
  87. # Get OS Arch and download correct packages
  88. if [ "$(arch)" != 'x86_64' ]; then
  89. wget "http://dl.4players.de/ts/releases/"$ts3version"/teamspeak3-server_linux_x86-"$ts3version".tar.bz2" -P /opt/ts3/
  90. else
  91. wget "http://dl.4players.de/ts/releases/"$ts3version"/teamspeak3-server_linux_amd64-"$ts3version".tar.bz2" -P /opt/ts3/
  92. fi
  93.  
  94. # Install required packages
  95. apt-get update
  96. apt-get install -y sudo telnet bzip2
  97.  
  98. # Create non-privileged user for TS3 server, and moves home directory under /etc
  99. adduser --disabled-login --gecos "ts3server" ts3
  100.  
  101. # Extract the contents and give correct ownership to the files and folders
  102. echo "------------------------------------------------------"
  103. echo "Extracting TeamSpeak 3 Server Files, please wait..."
  104. echo "------------------------------------------------------"
  105. tar -xjf /opt/ts3/teamspeak3-server_linux*.tar.bz2 --strip 1 -C /opt/ts3/
  106. rm -f /opt/ts3/teamspeak3-server_linux*.tar.bz2
  107. chown -R ts3:ts3 /opt/ts3/
  108.  
  109. # Create autostart script
  110. cat > /etc/init.d/teamspeak3 <<"EOF"
  111. #!/bin/sh
  112. ### BEGIN INIT INFO
  113. # Provides: TeamSpeak 3 Server
  114. # Required-Start: networking
  115. # Required-Stop:
  116. # Default-Start: 2 3 4 5
  117. # Default-Stop: 0 1 6
  118. # Short-Description: TeamSpeak 3 Server Daemon
  119. # Description: Starts/Stops/Restarts the TeamSpeak 3 Server Daemon
  120. ### END INIT INFO
  121.  
  122. set -e
  123.  
  124. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  125. DESC="TeamSpeak 3 Server"
  126. NAME=ts3
  127. USER=ts3
  128. DIR=/opt/ts3/
  129. DAEMON=$DIR/ts3server_startscript.sh
  130. SCRIPTNAME=/etc/init.d/$NAME
  131.  
  132. test -x $DAEMON || exit 0
  133.  
  134. cd $DIR
  135. sudo -u ts3 ./ts3server_startscript.sh $1
  136. EOF
  137. chmod 755 /etc/init.d/teamspeak3
  138.  
  139. # Assign right ports and password to TS3 server
  140. sed -i "s/{2}/{4} default_voice_port=$vport query_port=$qport filetransfer_port=$fport filetransfer_ip=0.0.0.0 serveradmin_password=$apass/" /opt/ts3/ts3server_startscript.sh
  141.  
  142. # Set TS3 server to auto start on system boot
  143. update-rc.d teamspeak3 defaults
  144.  
  145. # Give user all the information
  146. echo ""
  147. echo ""
  148. clear
  149. echo "TeamSpeak 3 has been successfully installed!"
  150. echo "Voice server is available at $pubip:$vport"
  151. echo "The file transfer port is: $fport"
  152. echo "The server query port is: $qport"
  153. echo ""
  154. read -p "Start the server now? [y/n]: " startopt
  155. sleep 1
  156. if [ "$startopt" == "y" ] || [ "$startopt" == "yes" ]; then
  157. echo "Please keep the following details safe!"
  158. sleep 2
  159. /etc/init.d/teamspeak3 start
  160. else
  161. echo "Run the following command to manually start the server:"
  162. echo "/etc/init.d/teamspeak3 start"
  163. fi
  164.  
  165. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement