LowEndBox

Hosting Websites on Bare Minimum VPS/Dedicated Servers

How to Install TeamSpeak 3 on your Ubuntu VPS

Tags: , Date/Time: November 15, 2016 @ 4:56 pm, by Jon Biloh

lowendtutorial

Today, we will go over the basics of how to install a TeamSpeak 3 server on your Ubuntu 16.04 VPS.

Before you install TeamSpeak 3, it is recommended that you check your VPS provider’s terms and conditions just to make sure that your TeamSpeak 3 server doesn’t violate any rules.

If you are looking for a VPS provider that will allow you to host TeamSpeak 3 servers, simply search for “TeamSpeak 3” on LowEndBox.com and you will find several providers that allow you to run TeamSpeak 3 on virtual private servers. Even if it’s not specifically mentioned, most providers will allow VOIP software like TeamSpeak 3, but as mentioned earlier, it never hurts to ask first!

Getting Started with TeamSpeak 3

Let’s go ahead and connect to our VPS via SSH. You can use PuTTy or your favorite terminal CLI.

Once we are logged into the VPS, we will need to gain root access using the following command:

> sudo -i

Go ahead and type in the root password and you will be ready to start!

Before we begin with the install, we will need to install MariaDB. Some administrators prefer SQLLite, however we have selected MariaDB for this tutorial. We will use this database instance to hold our user’s pertinent details and settings.

To kickoff the install of MariaDB, type the following command:

> apt-get install mariadb-client mariadb-server

During the installation process, you will be asked to choose a root password for you MariaDB installation.

You will need to remember this password, because we will need it during the next steps. Let’s go ahead configure the database now.

We will create a new user and database for the TeamSpeak 3 server. Connect to the MariaDB server using the following command:

> mysql -u root -p

We will now create a database:

> create database teamspeak3;

We will also need to create a user with all the privileges to manage it. Type the following:

GRANT ALL PRIVILEGES ON teamspeak3.* TO teamspeak3@localhost IDENTIFIED BY 'CHOOSE-A-PASSWORD';

Before exiting, it is always a good idea to make sure that all the changes have been applied to the running environment. In order to do so use the following command:

> flush privileges;

You can now exit the database prompt:

> quit

 Installing TeamSpeak 3 on your VPS

We are now ready to install our TeamSpeak 3 server. Before starting, we will create a new user with its own directory in /opt/:

> useradd -d /opt/teamspeak3-server -m teamspeak3-user

It is now time to download the server application. Connect to the following webpage using your favorite browser and copy the link to the last stable version of the server.

Now type the following command in your VPS shell to download the package on your server. It would look something like this:

> wget http://dl.4players.de/ts/releases/3.0.13.4/teamspeak3-server_linux_amd64-3.0.13.4.tar.bz2

We can now decompress the downloaded file and move the folder in the correct location:

> tar -jxvf teamspeak3-server_linux_amd64-3.0.13.4.tar.bz2

> mv teamspeak3-server_linux_amd64/teamspeak3-server_linux_amd64/* /opt/teamspeak3-server

Let’s now give the newly created user permissions on this folder and delete the temporary file:

> chown teamspeak3-user:teamspeak3-user /opt/teamspeak3-server -R

> rm -fr teamspeak3-server_linux_amd64-3.0.13.4.tar.bz2 teamspeak3-server_linux-amd64

We will now need to install and configure symlink library libmariadb.so.2:

> ln -s /opt/teamspeak3-server/redist/libmariadb.so.2 /lib/libmariadb.so.2

Next, we must configure TeamSpeak3 server with the MySQL-MariaDB database. We will need to create some files manually. Let’s get started by creating a blacklist configuration file:

> touch /opt/teamspeak3-server/query_ip_blacklist.txt

Create whitelist configuration file:

> echo  “127.0.0.1” > /opt/teamspeak3-server/query_ip_whitelist.txt

Create the configfile with MySQL-MariaDB database option using your favorite editor:

>  vim /opt/teamspeak3-server/ts3server.ini

With the following inside of it:

machine_id=

default_voice_port=9987

voice_ip=0.0.0.0

licensepath=

filetransfer_port=30033

filetransfer_ip=0.0.0.0

query_port=10011

query_ip=0.0.0.0

query_ip_whitelist=query_ip_whitelist.txt

query_ip_blacklist=query_ip_blacklist.txt

dbsqlpath=sql/

dbplugin=ts3db_mariadb

dbsqlcreatepath=create_mariadb/

dbpluginparameter=ts3db_mariadb.ini

dbconnections=10

logpath=logs

logquerycommands=0

dbclientkeepdays=30

logappend=0

query_skipbruteforcecheck=0

In the next step we will create the configuration file for the database for the TeamSpeak3 server.

Change PASSWORD with the one you used when you created the user and granted permission on the TeamSpeak:

> vim /opt/teamspeak3-server/ts3db_mariadb.ini
[config]

host=127.0.0.1

port=3306

username=teamspeak3

password=PASSWORD

database=teamspeak3

socket=

Now it’s time to change the permissions of the new configuration files:

> chown teamspeak3-user:teamspeak3-user /opt/teamspeak3-server -R

We are almost ready to start our new server. We just need one more step in order to make sure that the server will start automatically at boot.

> vim /etc/init.d/ts3

Write the following in the file:

#! /bin/sh

### BEGIN INIT INFO

# Provides:          ts3

# Required-Start:    $network mysql

# Required-Stop:     $network

# Default-Start:     2 3 4 5

# Default-Stop:      0 1 6

# Short-Description: TeamSpeak3 Server Daemon

# Description:       Starts/Stops/Restarts the TeamSpeak Server Daemon

### END INIT INFO

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DESC="TeamSpeak3 Server"

NAME=teamspeak3-server

USER=teamspeak3-user

DIR=/opt/teamspeak3-server

OPTIONS=inifile=ts3server.ini

DAEMON=$DIR/ts3server_startscript.sh

#PIDFILE=/var/run/$NAME.pid

SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.

test -x $DAEMON || exit 0

sleep 2

sudo -u $USER $DAEMON $1 $OPTIONS

Now we just have to change permissions for the scripts and add it to the boot sequence using the following commands:

> chmod a+x /etc/init.d/ts3

> chmod a+x /opt/teamspeak3-server/ts3server_startscript.sh

> chmod a+x /opt/teamspeak3-server/ts3server_minimal_runscript.sh

> update-rc.d ts3 defaults

We are now ready to start the Teamspeak3 server for the first time!

> /etc/init.d/ts3 start

You will be prompted with the server’s admin password and token key. Make sure you save them both. Just hit enter and you are ready to go! You can now connect to your server using its IP address or domain name with any TeamSpeak client.

TeamSpeak 3 is a conferencing application that is most commonly utilized by gamers. Have you installed and used TeamSpeak 3 on your VPS? Tell us in the comments section below.

15 Comments

  1. Jarry:

    When creating TS-user I recommend to disable login shell (something like “-s /usr/sbin/nologin”). And I think Ubuntu in recent versions is using systemd, tutorial should take this into account. My /etc/systemd/system/ts3server.service looks like:
    _______________

    [Unit]
    Description=Team Speak 3 Server
    After=network.target

    [Service]
    WorkingDirectory=/opt/teamspeak/
    User=teamspeak
    Group=teamspeak
    Type=forking
    ExecStart=/opt/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini
    ExecStop=/opt/teamspeak/ts3server_startscript.sh stop
    PIDFile=/opt/teamspeak/ts3server.pid
    RestartSec=15
    Restart=always

    [Install]
    WantedBy=multi-user.target
    ________________

    TS-server is then started by “systemctl start ts3server.service”

    November 15, 2016 @ 6:29 pm | Reply
    • Cheapwebdev:

      Can you please expand on the technical reasons on why we should do this? I know it may be a noob question.. still learning.

      November 16, 2016 @ 12:09 am | Reply
      • wulfy:

        noshell = no ssh login access less accounts with shell = less accounts that can be compromised

        the auto start is for if the vps goes down and comes back up the ts service starts at boot time removing your need to start it up manually

        November 16, 2016 @ 1:41 am | Reply
        • Cheapwebdev:

          Clearly I still have some gaps in my understanding, but this helps me at a high level. Thank you.

          November 16, 2016 @ 3:27 am | Reply
  2. Cheapwebdev:

    Thank you! I have been looking for a reliable setup for Ventrilo… as the old ones do not work anymore and I only have one vent server left! I am going to try this out on Saturday… would anyone have reliable setup instructions for Ventrilo?

    November 16, 2016 @ 12:09 am | Reply
  3. Out of curiosity, why not just let the TS3 server use its own internal database instead of using an external database? I think the internal database is more than adequate for someone wanting to run a single 32 slot personal server. It would also simplify the install and running of the server too.

    November 17, 2016 @ 5:47 pm | Reply
    • Xcell:

      Indeed. External database function is something intended only for hosting providers to lighten the load from main cluster and you don’t get any benefits from using it.

      November 25, 2016 @ 7:28 pm | Reply
      • Well, if you are the owner of a huge teamspeak it is much easier to maintain / manage the database!

        January 29, 2017 @ 9:25 am | Reply
  4. Cheapwebdev:

    It appears that MPServ/OrbitServers (HVH sister company????) has no interest in supporting new OS version and told me they won’t be adding Ubuntu 16 as an option… FYI. Keep this in mind if you ever decide to use them for hosting.

    November 19, 2016 @ 3:10 pm | Reply
    • Cheapwebdev:

      Unable to install this as I cannot run the following code on Ubuntu 14.04…

      apt-get install mariadb-client mariadb-server
      November 19, 2016 @ 3:14 pm | Reply
      • Cheapwebdev:

        I used this video to set up on version 14.04 because the host did not support Ubuntu 16.04.
        https://www.youtube.com/watch?v=Fqs3-VKHwSs&list=LL4w7XUmtUo3RZn2RQXQo5eg

        November 19, 2016 @ 6:13 pm | Reply
        • Expensivewebdev:

          You may want to start looking into some User / Start guides for Ubuntu, Linux terminal etc.

          It seems from that perspective that you are not able to use apt-get / apt, you did not include any error messages after you ran that command, thats why nobody responds to your question / problem.

          May 15, 2017 @ 3:56 pm | Reply
        • Expensivewebdev:

          You may also want to take a look at https://hub.docker.com/r/aheil/teamspeak3-server/ which is a docker container for ts3, with docker you do not need to install anything except for docker run and you are ready to go. This helps people that are not hardly into dependencies / package installation and / because docker is fairly simple

          Nevertheless, the updates are so easy to install and not such a pain like they are at the moment if you do it manually with a standalone..

          May 15, 2017 @ 4:03 pm | Reply
  5. Mason:

    When I run the command “/etc/init.d/ts3 start” after setting everything up, I get an error saying

    “Starting the TeamSpeak 3 server
    2016-11-26 12:21:15.767095|CRITICAL|ServerLibPriv | |Server() unable to initialize database
    TeamSpeak 3 server could not start”

    November 26, 2016 @ 12:24 pm | Reply
    • Mason:

      got a different workaround to work

      November 27, 2016 @ 2:02 pm | Reply

Leave a Reply

Some notes on commenting on LowEndBox:

  • Do not use LowEndBox for support issues. Go to your hosting provider and issue a ticket there. Coming here saying "my VPS is down, what do I do?!" will only have your comments removed.
  • Akismet is used for spam detection. Quoting webhostingtalk.com URL seems to get binned consistently here, but I do peek into the spam box frequently to publish those comments.
  • Use <pre>...</pre> to quote the output from your terminal/console, or consider using a pastebin service.

Your email address will not be published. Required fields are marked *