====== Установка 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}}