====== Установка Teamspeak в Debian 9 ======
Это копия статьи из моей wiki в Rootwelt. Информация могла устареть. Статья в скором времени будет удалена или перенесена в архив.
Исходные данные: Debian 9, вместо SQLite будет использоваться MySQL. FIXME Пример установки с SQLite смотрите в статье [[linux:teamspeak_centos7|Установка Teamspeak в CentOS 7]]
===== Установка MariaDB =====
//Если у вас уже установлена MariaDB, то эту часть можно пропустить.//
Обновляем кэш пакетов и обновляем ПО
# apt-get update && apt-get upgrade
Устанавливаем MariaDB
# apt-get install mariadb-client mariadb-server
Выполняем первончальную настройку через [[https://mariadb.com/kb/en/library/mysql_secure_installation/|mysql_secure_installation]]
# mysql_secure_installation
Enter current password for root (enter for none):
Set root password? [Y/n] y
New password: <вводим_пароль>
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Создаём новую базу данных и mysql-пользователя для работы с Teamspeak
# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE teamspeak;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON teamspeak.* TO 'ts3'@'localhost' IDENTIFIED BY 'TeamspeakPassword';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;
Дополнительно установим пакет **libmariadb2**, иначе в дальнейшем запуск сервера будет неудачным со [[linux:teamspeak_debian9#возможные_ошибки|следующей ошибкой]]
# apt-get install libmariadb2
===== Добавляем пользователя =====
Добавляем пользователя от имени которого будет работать teamspeak
# adduser --system --group --disabled-login --shell /usr/sbin/nologin --no-create-home --gecos "" teamspeak
Adding system user `teamspeak' (UID 114) ...
Adding new group `teamspeak' (GID 118) ...
Adding new user `teamspeak' (UID 114) with group `teamspeak' ...
Not creating home directory `/home/teamspeak'.
Описание всех опций к команде adduser можно посмотреть на странице [[https://manpages.debian.org/testing/adduser/addgroup.8.ru.html|manpages]]
===== Создаем каталоги и копируем файлы =====
В качестве рабочего каталога будем использовать ''/opt''.
Копируем ссылку на Teamspeak 3 Server со страницы https://www.teamspeak.com/en/downloads#server
На момент написания статьи последняя версия 3.2.0\\
Debian 9 доступен только в 64-битной редакции, поэтому скачиваем 64-битную версию Teamspeak 3 Server.
Скачиваем в каталог /tmp, распаковываем и переносим файлы в каталог ''/opt/teamspeak''
# cd /tmp
# wget http://dl.4players.de/ts/releases/3.2.0/teamspeak3-server_linux_amd64-3.2.0.tar.bz2
# tar xfvj teamspeak3-server_linux_amd64-3.2.0.tar.bz2
# mkdir /opt/teamspeak
# mv teamspeak3-server_linux_amd64/* /opt/teamspeak/
Заранее принимаем лицензионное соглашение. В противном случае при запуске Teamspeak будет выведено следующее сообщение
Please set the environment variable TS3SERVER_LICENSE to "accept" in order to accept the license agreement.
Alternatively, create a file named ".ts3server_license_accepted" in the working directory or start the server with the command line parameter "license_accepted=1".
To view the license agreement set TS3SERVER_LICENSE to "view" in order to print the license to the console.
Alternatively view the file "LICENSE" in your favorite text viewer yourself.
Создадим файл **.ts3server_license_accepted**
# touch /opt/teamspeak/.ts3server_license_accepted
===== Конфигурационный файл Teamspeak =====
Пример конфигурационного файла ''/opt/teamspeak/ts3server.ini''.
Явно указываем использовать MariaDB вместо SQLite (опции dbsqlpath, dbplugin, dbsqlcreatepath и dbpluginparameter).
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
Дополнительно создаём конфигурационный файл для связи с базой данных ''/opt/teamspeak/ts3db_mariadb.ini''
[config]
host=127.0.0.1
port=3306
username=ts3
password=TeamspeakPassword
database=teamspeak
socket=
===== Права доступа, chown =====
Теперь, когда созданы все необходимые файлы нужно рекурсивно изменить права для ''/opt/teamspeak'' с помощью команды ''chown''
# chown -R teamspeak:teamspeak /opt/teamspeak
===== unit-файл =====
Создаём файл ''/etc/systemd/system/teamspeak.service''
[Unit]
Description=Teamspeak 3 Server
After=network.target mariadb.service mysql.service
[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
Добавляем Teamspeak в автозагрузку
# systemctl --system daemon-reload
# systemctl enable teamspeak.service
===== Настройка firewall =====
Список портов необходимых для работы Teamspeak
Правила для iptables
iptables -A INPUT -p udp --dport 9987 -j ACCEPT
iptables -A INPUT -p udp --sport 9987 -j ACCEPT
iptables -A INPUT -p tcp --dport 30033 -j ACCEPT
iptables -A INPUT -p tcp --sport 30033 -j ACCEPT
iptables -A INPUT -p tcp --dport 10011 -j ACCEPT
iptables -A INPUT -p tcp --sport 10011 -j ACCEPT
Правила для firewalld
firewall-cmd --zone=public --permanent --add-port=9987/udp
firewall-cmd --zone=public --permanent --add-port=10011/tcp
firewall-cmd --zone=public --permanent --add-port=30033/tcp
firewall-cmd --reload
===== Первый запуск =====
Перед запуском сервера через systemctl запустим Teamspeak используя .sh скрипт, чтобы получить privilege key необходимый для администрирования вашего сервера
# cd /opt/teamspeak
# ./ts3server_startscript.sh inifile=ts3server.ini
{{:linux:debian:teamspeak_debian_1.png?nolink|}}
Вводим ключ привилегий
{{:linux:debian:teamspeak_debian_2.png?nolink|}}
{{:linux:debian:teamspeak_debian_3.png?nolink|}}
Подключение успешно выполнено
{{:linux:debian:teamspeak_debian_4.png?nolink|}}
Также можно сразу запустить сервер через systemd командой
# systemctl start teamspeak.service
Privelege key не будет выведен на экран терминала, но его можно найти в лог файле
# cat /opt/teamspeak/logs/* | grep token
===== Проверяем запуск через systemctl =====
Старт/Стоп
# systemctl start teamspeak.service
# systemctl stop teamspeak.service
Статус
# systemctl status teamspeak.service
● teamspeak.service - Teamspeak 3 Server
Loaded: loaded (/etc/systemd/system/teamspeak.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-06-06 12:37:21 +03; 1s ago
Process: 13242 ExecStart=/opt/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini (code=e
Main PID: 13246 (ts3server)
Tasks: 4 (limit: 4915)
CGroup: /system.slice/teamspeak.service
└─13246 ./ts3server inifile=ts3server.ini
===== Возможные ошибки =====
==== unable to load database plugin library "libts3db_mariadb.so", halting! ====
2018-06-05 12:51:53.929972|CRITICAL|DatabaseQuery | |unable to load database plugin library "libts3db_mariadb.so", halting!
TeamSpeak 3 server could not start
Не хватает библиотеки
# ldd /opt/teamspeak/libts3db_mariadb.so
linux-vdso.so.1 (0x00007ffd88792000)
libmariadb.so.2 => not found
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7992143000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7991f26000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7991b87000)
/lib64/ld-linux-x86-64.so.2 (0x00007f799273e000)
Как исправить
# apt-get install libmariadb2
Есть другие мнения (в Debian 9 не работает, рабочий вариант именно с установкой пакета через apt)
1. Создать символическую ссылку
# ln -s /opt/teamspeak/redist/libmariadb.so.2 /opt/teamspeak3-server/libmariadb.so.2
2. Либо просто скопировать файл **libmariadb.so.2** из ''/redist'' в каталог c Teamspeak (из ''/opt/teamspeak/redist'' в ''/opt/teamspeak'').
==== failed to register local accounting service ====
Ошибка **Server() error while starting servermanager, error: instance check error**
Выполнить команду
# mount -t tmpfs tmpfs /dev/shm
Добавить в ''/etc/fstab''
tmpfs /dev/shm tmpfs defaults 0 0
Источник
* [[https://support.teamspeakusa.com/index.php?/Knowledgebase/Article/View/51/0/on-unix-the-server-terminates-on-startup-and-the-message-reads-server-error-while-starting-servermanager-error-instance-check-error-how-do-i-fix-this|Teamspeakusa Knowledgebase]]
* [[http://media.teamspeak.com/ts3_literature/TeamSpeak%203%20Server%20Quick%20Start.txt|Teamspeak Quick Start]]
===== Минута славы =====
Наши VPS в Rootwelt (справка для истории, сейчас уже все не так) работают без выключений месяцами
{{:linux:debian:teamspeak_debian_6.png?nolink|}}
и спокойно выдерживают онлайн 32 пользователей доступных в бесплатной лицензии Teamspeak.
{{:linux:debian:teamspeak_debian_5.png?nolink|}}
===== Ссылки =====
* [[https://support.teamspeakusa.com/index.php?/Knowledgebase/Article/View/44/0/which-ports-are-being-used-by-the-server|Which ports does the TeamSpeak 3 server use?]]
* [[https://support.teamspeakusa.com/index.php?/Knowledgebase/Article/View/276/16/how-do-i-change-my-serverquery-admin-password|How do i change my ServerQuery Admin password?]]
* https://terminal28.com/how-to-install-and-configure-teamspeak3-server-linux-debian-ubuntu/#DNS_server_configuration_8211_Bind9
* http://spottedhyena.co.uk/teamspeak-3-centos-7-using-mariadb-database-3-0-12-4/
{{tag>linux debian teamspeak}}