
Расширенная настройка TeamSpeak3 Server
03.11.2015
После установки TeamSpeak3 Server по моей инструкции, вы возможно захотите большей управляемости, да и сделать управление сервисом более приятным. Начнем с того, что настроем TeamSpeak3 Server на использование MariaDB как СУБД и создадим юнит systemd для запуска teamspeak после перезагрузки сервера и удобного управления, а также настроем iptables.
1. Создадим пользователя и базу данных:
CREATE DATABASE ts3server; CREATE USER 'ts3server'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON ts3server.* TO 'ts3server'@'localhost'; FLUSH PRIVILEGES;
Первая команда создает базу данных ts3server, вторая создает пользователя, третья дает пользователю права только на созданную базу. Последняя обновляет все права доступа.
2. Теперь научим Teamspeak использовать MariaDB. Создаём в директории /home/ts3server/teamspeak3-server_linux-amd64 файл ts3server.ini следующего содержания:
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 dbplugin=ts3db_mariadb dbpluginparameter=ts3db_mariadb.ini dbsqlpath=sql/ dbsqlcreatepath=create_mariadb/ dbconnections=10 logpath=logs logquerycommands=0 dbclientkeepdays=30 logappend=0 query_skipbruteforcecheck=0
Где default_voice_port – порт для подключения клиентов, filetransfer_port – порт для передачи файлов, query_port – порт для администрирования сервера при помощи запросов. Ноли в IP-адресах указывают на то, что сервер будет слушать все сетевые интерфейсы. При необходимости можно указать IP-адрес вашего сервера.
После чего в этой же директории создаём файл ts3db_mariadb.ini следующего содержания:
[config] host=localhost port=3306 username=ts3server password=пароль_пользователя_mariadb_(ts3server) database=ts3server socket=/var/run/mysqld/mysqld.sock
Где указываем данные для подключения к нашей базе данных.
Далее переключаемся на нашего пользователя ts3server, переходим в каталог /home/ts3server/teamspeak3-server_linux-amd64 и проверяем всё ли у нас есть для запуска.
su ts3server cd /home/ts3server/teamspeak3-server_linux-amd64 ldd libts3db_mariadb.so
Получим на выходе:
linux-vdso.so.1 (0x00007ffd1b7e0000) libmariadb.so.2 => /lib/x86_64-linux-gnu/libmariadb.so.2 (0x00007fedf22c0000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fedf1fbf000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fedf1c16000) /lib64/ld-linux-x86-64.so.2 (0x00007fedf280b000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fedf1a12000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fedf17f5000)
Но скорее всего libmariadb.so.2 будет не найдена. Потому что в стандартной сборке MariaDB под Debian 8 этой библиотеки нет. Но по счастью она есть в дистрибутиве сервера, в папке «redist».
С правами пользователя root создаём ссылку на эту библиотеку.
ln -s /home/ts3server/teamspeak3-server_linux-amd64/redist/libmariadb.so.2 /lib/x86_64-linux-gnu/libmariadb.so.2
Снова переключаемся на пользователя teamspeak и проверяем ещё раз. На этот раз всё должно быть на месте. Сервер готов к первой загрузке. Стартуем (от имени пользователя teamspeak).
/home/ts3server/teamspeak3-server_linux-amd64/ts3server_startscript.sh start inifile=ts3server.ini
Параметр «inifile=ts3server.ini» указывает на созданную ранее конфигурацию. Соответственно сервер должен запуститься с использованием этой конфигурации и заполнить базу данных.
Важно! При первом старте в терминале, в выдаче команды запуска вы получите сообщение с именем пользователя для админского доступа, паролем и токеном, который вы должны использовать один раз в клиентской программе TeamSpeak. Сохраните эти данные. В противном случае вы получите гостевой доступ при соединении со своим сервером.
3. На этом сервер установлен и работает. Для автоматического запуска TeamSpeak при перезагрузке сервера и удобного управления сделаем юнит для systemd, создадим файл /lib/systemd/system/ts3server.service с содержимым:
[Unit] Description=TeamSpeak 3 Server After=network.target [Service] WorkingDirectory=/home/ts3server/teamspeak3-server_linux-amd64/ User=ts3server Group=ts3server Type=forking ExecStart=/home/ts3server/teamspeak3-server_linux-amd64/ts3server_startscript.sh start inifile=ts3server.ini ExecStop=/home/ts3server/teamspeak3-server_linux-amd64/ts3server_startscript.sh stop PIDFile=/home/ts3server/teamspeak3-server_linux-amd64/ts3server.pid RestartSec=15 Restart=always [Install] WantedBy=multi-user.target
Обновим кеш systemd:
systemctl --system daemon-reload
Запустим сервер:
systemctl start ts3server.service
Активируем запуск при загрузке:
systemctl enable ts3server.service
Статус сервера можно проверить старой командой "service ts3server status" или через systemd:
systemctl status ts3server.service
Если сервер не будет отвечать 15 сек, то он перезапустится. За это отвечают строки "RestartSec=15" и "Restart=always" в конфигурации юнита.
4. Настройка iptables. После настройки iptables по этой статье вам нужно будет добавить лишь несколько правил. Адреса 80.190.145.215 — accounting.teamspeak.com и 194.97.114.3 — weblist.teamspeak.com нужны для функционирования вашего сервера.
iptables -t filter -A INPUT -p udp -m udp --dport 9987 -j ACCEPT iptables -t filter -A INPUT -p tcp -m tcp --dport 30033 -j ACCEPT iptables -t filter -A INPUT -p tcp -m tcp --dport 10011 -j ACCEPT iptables -t filter -A OUTPUT -p udp -m udp --dport 2010 -j ACCEPT iptables -t filter -A INPUT -p tcp -m tcp --dport 41144 -j ACCEPT iptables -t filter -A OUTPUT -p tcp -m tcp --dport 2008 -j ACCEPT iptables -A OUTPUT -s 80.190.145.215 -p tcp --dport 2008 -j ACCEPT iptables -A OUTPUT -s 194.97.114.3 -p udp --dport 2010 -j ACCEPT
Сохранить правила:
iptables-save > /etc/iptables.rules