Skip to content

Instantly share code, notes, and snippets.

@Zobber
Last active April 24, 2023 18:48
Show Gist options
  • Save Zobber/d0d72910ea7626c9c02d74d8efd8796f to your computer and use it in GitHub Desktop.
Save Zobber/d0d72910ea7626c9c02d74d8efd8796f to your computer and use it in GitHub Desktop.
Teamspeak Script Install (Edited)
#!/bin/bash
# Name: install_ts3-server.sh
# Version: 1.3
# Created On: 3/5/2015
# Updated On: 11/17/2019
# Created By: rcguy
# Description: Automagically installs the Linux TeamSpeak 3 Server
# Tested on: Debian 10 / x64 / VPS / 2 Cores / 2GB RAM / 20 GB SSD
# ==> VARIABLES <==
# user to run the ts3server and where to install it
TS3_USER="teamspeak"
TS3_DIR="/opt/ts3server"
TS3_VER="3.13.7"
# ==> MAIN PROGRAM <==
set -e # exit with a non-zero status when there is an uncaught error
# are we root?
if [ "$EUID" -ne 0 ]; then
echo -e "\nERROR!!! SCRIPT MUST RUN WITH ROOT PRIVILAGES\n"
exit 1
fi
# official download urls - updated on: 11/17/2019
X86="https://files.teamspeak-services.com/releases/server/$TS3_VER/teamspeak3-server_linux_x86-$TS3_VER.tar.bz2"
X64="https://files.teamspeak-services.com/releases/server/$TS3_VER/teamspeak3-server_linux_amd64-$TS3_VER.tar.bz2"
# check if we need 64bit or 32bit binaries
A=$(arch)
if [ "$A" = "x86_64" ]; then
URL="$X64"
elif [ "$A" = "i386" ]; then
URL="$X86"
elif [ "$A" = "i686" ]; then
URL="$X86"
fi
# functions
function install_ts3-server {
mkdir -p "$TS3_DIR"
touch "$TS3_DIR"/.ts3server_license_accepted
tar -xjf teamspeak3-server_linux*.tar.bz2
mv teamspeak3-server_linux*/* "$TS3_DIR"
chown "$TS3_USER":"$TS3_USER" "$TS3_DIR" -R
rm -rf teamspeak3-server_linux*.tar.bz2 teamspeak3-server_linux*/
}
# add the user to run ts3server
if useradd --system --no-create-home --shell /bin/false "$TS3_USER" >/dev/null 2>&1; then
echo -e "\nAdded new user: '$TS3_USER'"
else
echo -e "\n ERROR!!! Failed to add new user: '$TS3_USER'\n"
exit 1
fi
# download and install the ts3server
echo "Installing the TeamSpeak 3 server to: '$TS3_DIR'"
if wget -q "$URL"; then
install_ts3-server
else
echo -e "\n ERROR!!! Failed to download the TeamSpeak 3 server\n"
exit 1
fi
# install the init.d start-up script
touch /etc/systemd/system/ts3server.service
cat > /etc/systemd/system/ts3server.service <<EOF
[Unit]
Description=TeamSpeak3 Server
Wants=network-online.target
After=syslog.target network.target
[Service]
WorkingDirectory= $TS3_DIR
User=$TS3_USER
Group=$TS3_USER
Type=forking
ExecStart= $TS3_DIR/ts3server_startscript.sh start inifile= $TS3_DIR/ts3server.ini
ExecStop= $TS3_DIR/ts3server_startscript.sh stop
ExecReload= $TS3_DIR/ts3server_startscript.sh reload
PIDFile= $TS3_DIR/ts3server.pid
[Install]
WantedBy=multi-user.target
EOF
# install a default ts3server.ini
touch "$TS3_DIR"/ts3server.ini
cat > "$TS3_DIR"/ts3server.ini <<EOF
#The path of the *.ini file to use.
inifile=ts3server.ini
# The Voice IP that your Virtual Servers are listing on. [UDP] (Default: 0.0.0.0)
voice_ip=0.0.0.0
# The Query IP that your Instance is listing on. [TCP] (Default: 0.0.0.0)
query_ip=0.0.0.0
# The Filetransfer IP that your Instance is listing on. [TCP] (Default: 0.0.0.0)
filetransfer_ip=
# The Voice Port that your default Virtual Server is listing on. [UDP] (Default: 9987)
default_voice_port=9987
# The Query Port that your Instance is listing on. [TCP] (Default: 10011)
query_port=10011
# The Filetransfer Port that your Instance is listing on. [TCP] (Default: 30033)
filetransfer_port=30033
# Use the same log file
logappend=1
EOF
chown "$TS3_USER":"$TS3_USER" "$TS3_DIR"/ts3server.ini
#Firewall add ports
firewall-cmd --add-port=9987/udp --permanent
firewall-cmd --add-port=10011/tcp --permanent
firewall-cmd --add-port=30033/tcp --permanent
# start the ts3server to generate the ServerAdmin Privilege Key
echo "Starting the TeamSpeak 3 server"
systemctl --quiet enable ts3server.service
systemctl start ts3server.service
sleep 5
# finish
EXTERNAL_IP=$(wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<Ip>\(.*\)<\/Ip>.*/\1/p')
IMPORTANT=$(cat "$TS3_DIR"/logs/*_1.log | grep -P -o "token=[a-zA-z0-9+]+")
echo "$IMPORTANT" > "$TS3_DIR"/ServerAdmin_Privilege_Key.txt # save the ServerAdmin Privilege Key for easy future reference
echo -e "\nServerAdmin info saved to: '$TS3_DIR/ServerAdmin_Privilege_Key.txt'"
echo -e "ServerAdmin Privilege Key: $IMPORTANT\n"
echo -e "Completed! You should probably configure the server now\nUse the desktop client for easy administration\n"
echo -e "Your servers external IP Address is: $EXTERNAL_IP\n"
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment