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