TeamSpeak is a popular open-source VoIP communication system for online gaming. It is very similar to a telephone conference call and is used for audio communication between users on a chat channel. It is cross-platform and allows multiple users to talk or listen to other TeamSpeak users. It offers a wide range of features including good voice quality, less bandwidth usage, in-game overlay, real-time communication, an intuitive user interface, and more.

In this post, we will show you how to install a TeamSpeak server on Fedora.

Step 1 – Install TeamSpeak Server

First, you will need to install some dependencies on your server. You can install all of them with the following command.

dnf update -y
dnf install nano wget perl tar net-tools bzip2

Next, create a dedicated user to run the TeamSpeak server.

adduser teamspeak -d /opt/teamspeak

Next, download the latest version of TeamSpeak from its official website.

wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2

Once the download is finished, extract the downloaded file.

tar -xvjf teamspeak3-server_linux_amd64-3.13.7.tar.bz2

Next, move the extracted directory to /opt and change its ownership.

mv teamspeak3-server_linux_amd64/* /opt/teamspeak/
chown -R teamspeak: /opt/teamspeak

Next, create a license file for the TeamSpeak server.

touch /opt/teamspeak/.ts3server_license_accepted

Step 2 – Create a Systemd Service File

Next, you will need to create a systemd service file to manage the TeamSpeak service. You can create it with the following command.

nano /lib/systemd/system/teamspeak.service

Add the following configurations.

[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

Save and close the file, then reload the systemd daemon to apply the changes.

systemctl --system daemon-reload

Then, start the TeamSpeak service and enable it to start at system reboot.

systemctl start teamspeak
systemctl enable teamspeak

You can check the status of TeamSpeak using the following command.

systemctl status teamspeak

Output.

● teamspeak.service - Team Speak 3 Server
     Loaded: loaded (/usr/lib/systemd/system/teamspeak.service; disabled; vendor preset: disabled)
     Active: active (running) since Tue 2023-06-06 03:27:55 EDT; 4s ago
    Process: 28389 ExecStart=/opt/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini (code=exited, status=0/SUCCESS)
   Main PID: 28396 (ts3server)
      Tasks: 21 (limit: 4666)
     Memory: 19.9M
        CPU: 3.887s
     CGroup: /system.slice/teamspeak.service
             └─28396 ./ts3server inifile=ts3server.ini  daemon=1 pid_file=ts3server.pid
Jun 06 03:27:55 fedora ts3server_startscript.sh[28396]:          apikey= "BAB8M-HTaXJwunk8MOsGOMja4eODG-f5k0EEICI"
Jun 06 03:27:55 fedora ts3server_startscript.sh[28396]: ------------------------------------------------------------------
Jun 06 03:27:57 fedora ts3server_startscript.sh[28396]: ------------------------------------------------------------------
Jun 06 03:27:57 fedora ts3server_startscript.sh[28396]:                       I M P O R T A N T
Jun 06 03:27:57 fedora ts3server_startscript.sh[28396]: ------------------------------------------------------------------
Jun 06 03:27:57 fedora ts3server_startscript.sh[28396]:       ServerAdmin privilege key created, please use it to gain
Jun 06 03:27:57 fedora ts3server_startscript.sh[28396]:       serveradmin rights for your virtualserver. please
Jun 06 03:27:57 fedora ts3server_startscript.sh[28396]:       also check the doc/privilegekey_guide.txt for details.
Jun 06 03:27:57 fedora ts3server_startscript.sh[28396]:        token=yiVk2d4Kuh5NxREKL69lXw23w83L5rxTy7tDt7UG
Jun 06 03:27:57 fedora ts3server_startscript.sh[28396]: ------------------------------------------------------------------

You can check the TeamSpeak logs for more information.

cat /opt/teamspeak/logs/*

Output.

2023-06-06 07:27:55.821060|INFO    |ServerLibPriv |   |TeamSpeak 3 Server 3.13.7 (2022-06-20 12:21:53)
2023-06-06 07:27:55.821228|INFO    |ServerLibPriv |   |SystemInformation: Linux 5.12.8-300.fc34.x86_64 #1 SMP Fri May 28 15:20:54 UTC 2021 x86_64 Binary: 64bit
2023-06-06 07:27:55.826637|INFO    |DatabaseQuery |   |dbPlugin name:    SQLite3 plugin, Version 3, (c)TeamSpeak Systems GmbH
2023-06-06 07:27:55.826714|INFO    |DatabaseQuery |   |dbPlugin version: 3.11.1
2023-06-06 07:27:55.827188|INFO    |DatabaseQuery |   |checking database integrity (may take a while)
2023-06-06 07:27:55.842195|INFO    |SQL           |   |db_CreateTables() tables created
2023-06-06 07:27:55.888533|WARNING |Accounting    |   |Unable to open licensekey.dat, falling back to limited functionality
2023-06-06 07:27:55.889007|INFO    |Accounting    |   |Licensing Information
2023-06-06 07:27:55.889049|INFO    |Accounting    |   |licensed to       : Anonymous
2023-06-06 07:27:55.889066|INFO    |Accounting    |   |type              : No License
2023-06-06 07:27:55.889088|INFO    |Accounting    |   |starting date     : Tue Feb  1 00:00:00 2022
2023-06-06 07:27:55.889105|INFO    |Accounting    |   |ending date       : Thu Jul  1 00:00:00 2027
2023-06-06 07:27:55.889120|INFO    |Accounting    |   |max virtualservers: 1
2023-06-06 07:27:55.889134|INFO    |Accounting    |   |max slots         : 32
2023-06-06 07:27:57.249724|INFO    |              |   |Puzzle precompute time: 1293
2023-06-06 07:27:57.250634|INFO    |FileManager   |   |listening on 0.0.0.0:30033, [::]:30033
2023-06-06 07:27:57.251912|INFO    |VirtualSvrMgr |   |executing monthly interval
2023-06-06 07:27:57.252123|INFO    |VirtualSvrMgr |   |reset virtualserver traffic statistics
2023-06-06 07:27:57.286585|INFO    |Query         |   |Using a query thread pool size of 2
2023-06-06 07:27:57.313059|INFO    |Query         |   |listening for query on 0.0.0.0:10011, [::]:10011
2023-06-06 07:27:57.313285|INFO    |              |   |creating QUERY_SSH_RSA_HOST_KEY file: ssh_host_rsa_key
2023-06-06 07:27:58.216597|INFO    |              |   |myTeamSpeak identifier revocation list was downloaded successfully - all related features are activated
2023-06-06 07:27:58.683529|INFO    |Query         |   |listening for ssh query on 0.0.0.0:10022, [::]:10022
2023-06-06 07:27:58.683752|INFO    |Query         |   |listening for http query on 0.0.0.0:10080, [::]:10080
2023-06-06 07:27:58.684059|INFO    |CIDRManager   |   |updated query_ip_allowlist ips: 127.0.0.1/32, ::1/128, 
2023-06-06 07:27:57.311762|INFO    |VirtualServerBase|1  |listening on 0.0.0.0:9987, [::]:9987
2023-06-06 07:27:57.312526|WARNING |VirtualServer |1  |--------------------------------------------------------
2023-06-06 07:27:57.312560|WARNING |VirtualServer |1  |ServerAdmin privilege key created, please use the line below
2023-06-06 07:27:57.312577|WARNING |VirtualServer |1  |token=yiVk2d4Kuh5NxREKL69lXw23w83L5rxTy7tDt7UG

Step 3 – Configure Firewall

The TeamSpeak server is now installed and listens on ports 10011, 9987, and 30033. You can check them using the following command.

ss -antpl | grep ts3server

Output.

LISTEN 0      128          0.0.0.0:10011      0.0.0.0:*    users:(("ts3server",pid=28396,fd=55))    
LISTEN 0      128          0.0.0.0:10080      0.0.0.0:*    users:(("ts3server",pid=28396,fd=60))    
LISTEN 0      128          0.0.0.0:10022      0.0.0.0:*    users:(("ts3server",pid=28396,fd=58))    
LISTEN 0      128          0.0.0.0:30033      0.0.0.0:*    users:(("ts3server",pid=28396,fd=35))    
LISTEN 0      128             [::]:10011         [::]:*    users:(("ts3server",pid=28396,fd=56))    
LISTEN 0      128             [::]:10080         [::]:*    users:(("ts3server",pid=28396,fd=61))    
LISTEN 0      128             [::]:10022         [::]:*    users:(("ts3server",pid=28396,fd=59))    
LISTEN 0      128             [::]:30033         [::]:*    users:(("ts3server",pid=28396,fd=36)) 

Now, run the following commands to allow all TeamSpeak ports.

firewall-cmd --zone=public --add-port=9987/udp --permanent
firewall-cmd --zone=public --add-port=10011/tcp --permanent
firewall-cmd --zone=public --add-port=30033/tcp --permanent

Next, reload the firewall service to implement the changes.

firewall-cmd --reload

Conclusion

Congratulations! You have successfully installed and configured the TeamSpeak server on Fedora. You can now download the TeamSpeak client on your mobile or PC, join the TeamSpeak server and start communicating with other members. You can also install the TeamSpeak server on VPS hosting from Atlantic.Net!