GrabDuck

TeamSpeak 3 сервер на Debian 7 + MariaDB + WebUI

:

TeamSpeak — программное обеспечение, предназначенное для голосового общения в сети Интернет посредством технологии VoIP. Являет собой связку серверной части и клиентской программы под различные платформы. От всем известного Skype отличается децентрализованностью и условным отсутствием ограничений на количество абонентов, участвующих в конференции. При этом работает по принципу старых чатов, но в данном случае это голосовой чат. То есть для входа в конференцию не требуется в обязательном порядке аккаунт на сервере и список контактов. При этом никто не запрещает администратору установить пароль на конференцию, или ограничить права участников иным способом. Таким образом TeamSpeak удобен для организации многопользовательских конференций и используется в первую очередь в онлайн играх и там, где есть необходимость координировать действия множества участников, находящихся в разных частях города, страны и так далее.

Рассмотрим установку серверной части TeamSpeak на Debian 7 x64. В качестве базы данных я буду использовать MariaDB 10.1, но TeamSpeak так же работает с MySQL и SQLite.

Переходим на официальный сайт проекта и выбираем нужный нам дистрибутив. Скачиваем его и размещаем на сервере. Можно скопировать ссылку и скачать с использованием wget, что удобнее плесканий пакета туда-сюда. На момент написания статьи – это версия 3.0.11.1, соответственно

wget http://dl.4players.de/ts/releases/3.0.11.1/teamspeak3-server_linux-amd64-3.0.11.1.tar.gz

Добавляем пользователя, от которого будет работать сервер.

adduser teamspeak

Назначаем ему пароль, остальные поля можно пропустить.

Распаковываем скаченный архив.

tar xzf teamspeak3-server_linux-amd64-3.0.11.1.tar.gz

Используем tar xvf команду, если это tar.bz2 формат.

Далее перемещаем содержимое в home-директорию созданного пользователя, в каталог “teamspeak”.

mv teamspeak3-server_linux-amd64 /home/teamspeak/teamspeak

Устанавливаем права для пользователя

chown –R teamspeak /home/teamspeak/teamspeak
chown –R teamspeak /home/teamspeak/teamspeak/*

Создаём в директории teamspeak файл «ts3server.ini» следующего содержания:

machine_id=
default_voice_port=9987
voice_ip=0.0.0.0
liscensepath=
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

Где default_voice_port – порт для подключения клиентов, filetransfer_port – порт для передачи файлов, query_port – порт для администрирования сервера при помощи запросов. Ноли в IP-адресах указывают на то, что сервер будет слушать все сетевые интерфейсы. При необходимости можно указать IP-адрес вашего сервера.

Создаём базу данных на сервере:
Подключаемся к серверу БД

mysql -u root -p

Создаём новую БД

CREATE DATABASE tsdbdemo;

Где "tsdbdemo" - имя базы даных.

Создаём пользователя для созданной БД

CREATE USER 'tsuserdemo'@'localhost' IDENTIFIED BY 'mycollpass';

Где "tsuserdemo" - имя пользователя, "mycollpass" - пароль пользователя, "localhost" - хост, с которого разрешено подключение созданного пользователя. Если ваш TS сервер и сервер баз данных располагаются на разных физических серверах, то вместо "localhost" следует указать имя хоста сервера Team Speak.

Наделяем созданного пользователя привилегиями для управления базой данных:

grant CREATE,INSERT,DELETE,UPDATE,SELECT on tsdbdemo.* to tsuserdemo@localhost;

Где "tsdbdemo" - база данных, "tsuserdemo" - пользователь, "localhost" - имя хоста TS.

Чистим и выходим:

flush privileges;
exit;

Так же всё вышеописанное, касательно БД, можно выполнить с помощью PhpMyAdmin.
(добавлено по своеобразной просьбе тех, кто имеет смутное представление о базах данных и их создании).

После чего в директории teamspeak создаём файл «ts3db_mariadb.ini» следующего содержания:

[config]
host=localhost
port=3306
username=user_name
password=user_password
database=db_name
socket=

Где указываем данные для подключения к нашей базе данных.

Далее переключаемся на нашего пользователя, переходим в каталог “teamspeak” и проверяем всё ли у нас есть для запуска.

su teamspeak
cd ~/teamspeak
ldd libts3db_mariadb.so

На выходе вы должны получить примерно следующее:

linux-vdso.so.1 =>  (0x00007fffd45ff000)
   libmariadb.so.2 => /lib/x86_64-linux-gnu/libmariadb.so.2 (0x00007f33bce50000)
   libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f33bcbce000)
   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f33bc841000)
   /lib64/ld-linux-x86-64.so.2 (0x00007f33bd3a4000)
   libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f33bc63d000)
   libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f33bc421000)

Но скорее всего libmariadb.so.2 будет не найдена. Потому что в стандартной сборке MariaDB под Debian 7 этой библиотеки нет. Но по счастью она есть в дистрибутиве сервера, в папке «redist».

С правами пользователя root создаём ссылку на эту библиотеку.

ln -s /home/teamspeak/teamspeak/redist/libmariadb.so.2 /lib/x86_64-linux-gnu/libmariadb.so.2

Или в случае с Ubuntu 16.04 устанавливаем из репозитория.

sudo apt install libmariadb2

Снова переключаемся на пользователя teamspeak и проверяем ещё раз. На этот раз всё должно быть на месте. Сервер готов к первой загрузке. Стартуем (от имени пользователя teamspeak).

/home/teamspeak/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini

Параметр «inifile=ts3server.ini» указывает на созданную ранее конфигурацию. Соответственно сервер должен запуститься с использованием этой конфигурации и заполнить базу данных.

Важно! При первом старте в терминале, в выдаче команды запуска вы получите сообщение с именем пользователя для админского доступа, паролем и токеном, который вы должны использовать один раз в клиентской программе TeamSpeak. Сохраните эти данные. В противном случае вы получите гостевой доступ при соединении со своим сервером.

На этом сервер установлен и работает. Для автоматического запуска TeamSpeak при перезагрузке сервера в /etc/init.d создайте файл “teamspeak3” следующего содержания.

#! /bin/sh
### BEGIN INIT INFO
# Provides:          TeamSpeak3
# 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=teamspeak
DIR=/home/teamspeak/teamspeak
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

Где «DIR» - путь к папке с программой, а «USER» - имя пользователя, от которого будет работать сервер.

После этого необходимо выполнить следующие команды:

chmod u+x /etc/init.d/teamspeak3
update-rc.d teamspeak3 defaults

Последняя, возможно, ругнётся на каноническое несоответствие синтаксиса файла, суть которого от меня ускользает, но между тем всё работает. Сервер запускается после перезагрузки сам, от имени пользователя teamspeak. Так же мы теперь можем использовать следующие команды для старта и остановки сервера.

service teamspeak3 start
service teamspeak3 stop

В Ubuntu 16.04 почему-то не работает, поэтому команды следующие:

/etc/init.d/teamspeak3 start
/etc/init.d/teamspeak3 stop

Если вы не используете фаервол, то печально и сервер готов к использованию. В противном случае следует разрешить доступ к порту 9987 по протоколу udp для доступа пользователей. Так же tcp доступ к порту 30033 для скачивания/закачивания файлов. И tcp доступ к порту 10011 для администрирования. Если у вас постоянный IP, то можно ограничить доступ по IP-адресу. Этот же порт используется для администрирования через WebUI (смотрите ниже). Доступ к портам 9987 и 30033 должен быть у всех.

В дополнение можно установить WebUI для администрирования сервера. Для этих целей существует несколько решений. Здесь мы рассмотрим " ts3admin.class ".

Всё что вам нужно, это скачать архив и распаковать его в http-директорию вашего сервера. Как обычный сайт.

В директории сервера, в файле «query_ip_whitelist.txt» укажите IP-адрес вашего http-сервера, если он находится на другой машине. Если WebUI и TeamSpeak сервер располагаются на одном физическом сервере, то достаточно адреса 127.0.0.1 и он там уже прописан.

В директории WebUI отредактируйте файл «config.php», прописав там IP-адрес TeamSpeak сервера (либо укажите 127.0.0.1, если они на одном сервере), порт query (по умолчанию 10011) и поля ниже на своё усмотрение. Если ваш http-сервер работает от имени пользователя по умолчанию, то установите права на запись для следующих директорий (CHMOD 777): «icons», «temp», «templates_c», «site/backups» (и всех, что в ней).

После чего, через браузер перейдите на адрес вашей панели (http://mysite.com/index.php) и в качестве логина/пароля укажите те данные, которые вы получили при первом старте сервера.

Через этот WebUI вы можете управлять рядом настроек своего TeamSpeak сервера, в том числе выписывать разовые токены на повышения прав для пользователей. Помогает, если вы потеряли админский доступ к своему серверу через клиентскую программу TeamSpeak.

Ещё один вриант, практически ни чем не отличающийся по функционалу можно скачать здесь . Распакуйте файлы на сервер и отредактируйте config.php.

По умолчанию сервер TeamSpeak имеет ряд ограничений. Например, ограниченное количество пользователей, подключенных к серверу (32 пользователя). Для увеличение этих лимитов вы можете зарегистрировать свой сервер на официальном сайте проекта . Бесплатным является тип лицензии «Non-Profit». Лицензия доступна для третьей версии серверов и регистрация открыта с трёх часов утра понедельника, до семи вечера четверга по тихоокеанскому времени (UTC -8).

Всё что вам нужно сделать после регистрации, это положить полученный файл лицензии в корневую папку сервера.

Лицензированного таким образом сервера вполне достаточно для разного рода игровых гильдий и прочего группового флуда. Приятного общения!

___
Tatyana K.