Установка TeamSpeak 3 на CentOS 8

В этой инструкции шаг за шагом показано, как установить и запустить TeamSpeak 3 на сервере CentOS 8: подготовка системы, создание пользователя, загрузка и распаковка пакета, создание systemd‑сервиса, открытие портов в firewalld и получение привилегированного ключа (privileged key). Если вы не хотите отключать SELinux, в разделе безопасности — альтернатива.
Введение
TeamSpeak — кроссплатформенное серверное приложение для голосового общения (VoIP) в реальном времени. Оно экономно использует трафик и способно обслуживать большое число подключений. Часто применяется в играх, образовании и для общения с друзьями. Программа бесплатна: вы скачиваете сервер, запускаете его на своей машине и подключаетесь клиентом.
Кому подходит эта инструкция: системным администраторам и владельцам VPS с CentOS 8, которые хотят развернуть собственный TeamSpeak‑сервер.
Important: инструкция предполагает доступ root или эквивалент sudo.
Что понадобится
- Сервер с установленным CentOS 8.
- Пароль root или доступ через sudo.
- Подключение к интернету для скачивания пакета.
Шаг 1 — Подготовка системы
По умолчанию в CentOS 8 включён SELinux. В исходной инструкции предлагается его отключить, чтобы избежать проблем с правами и запуском демона. Отключение ослабляет безопасность — альтернативы ниже.
Отредактируйте файл конфигурации SELinux:
nano /etc/selinux/configИзмените значение:
SELINUX=disabledСохраните и перезагрузите систему для применения изменений.
Далее установим необходимые пакеты:
dnf install nano wget perl tar net-tools bzip2После установки зависимостей можно переходить к установке TeamSpeak.
Шаг 2 — Установка TeamSpeak
Создаём отдельного пользователя для сервера TeamSpeak и указываем домашний каталог в /opt/teamspeak:
adduser teamspeak -d /opt/teamspeakСкачиваем последний пакет (пример в оригинале):
wget http://dl.4players.de/ts/releases/3.8.0/teamspeak3-server_linux_amd64-3.8.0.tar.bz2Распаковываем архив:
tar xvf teamspeak3-server_linux_amd64-3.8.0.tar.bz2Перемещаем содержимое в /opt/teamspeak:
mv teamspeak3-server_linux_amd64/* /opt/teamspeak/Принимаем лицензию, создав пустой файл в каталоге сервера:
touch /opt/teamspeak/.ts3server_license_acceptedМеняем владельца каталога на пользователя teamspeak:
chown -R teamspeak: /opt/teamspeakШаг 3 — Создание systemd‑сервиса
Создаём unit‑файл systemd для удобного управления службой:
nano /lib/systemd/system/teamspeak.serviceВставьте следующие строки:
[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Сохраняем файл и перезагружаем конфигурацию systemd:
systemctl --system daemon-reloadЗапускаем и включаем автозапуск после перезагрузки:
systemctl start teamspeak
systemctl enable teamspeakПроверяем статус службы:
systemctl status teamspeakПример ожидаемого вывода (как в оригинале):
? teamspeak.service - Team Speak 3 Server
Loaded: loaded (/usr/lib/systemd/system/teamspeak.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2019-10-27 12:51:44 EDT; 5s ago
Process: 1298 ExecStart=/opt/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini (code=exited, status=0/SUCCESS)
Main PID: 1305 (ts3server)
Tasks: 12 (limit: 5060)
Memory: 25.3M
CGroup: /system.slice/teamspeak.service
??1305 ./ts3server inifile=ts3server.ini daemon=1 pid_file=ts3server.pid
Oct 27 12:51:44 centos8 systemd[1]: Starting Team Speak 3 Server...
Oct 27 12:51:44 centos8 ts3server_startscript.sh[1298]: Starting the TeamSpeak 3 server
Oct 27 12:51:44 centos8 ts3server_startscript.sh[1298]: TeamSpeak 3 server started, for details please view the log file
Oct 27 12:51:44 centos8 systemd[1]: Started Team Speak 3 Server.Шаг 4 — Получение привилегированного ключа (ServerAdmin token)
После первого запуска TeamSpeak создаёт токен администратора в логах. Посмотреть логи можно так:
cat /opt/teamspeak/logs/*В логе вы увидите строку с token, например:
2019-10-27 17:06:00.375818|WARNING |VirtualServer |1 |ServerAdmin privilege key created, please use the line below
2019-10-27 17:06:00.375857|WARNING |VirtualServer |1 |token=2y8a9yBz5aRlyDUwaBfgw8lq4FtQVT47pyAeU4JaСкопируйте значение token и используйте его при первом подключении через TeamSpeak Client, чтобы получить права ServerAdmin.
Настройка фаервола
TeamSpeak по умолчанию слушает порты:
- 9987/udp — голосовой трафик
- 10011/tcp — Query (администрирование через telnet/скрипты)
- 30033/tcp — файловый перенос
Откройте их в firewalld:
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
firewall-cmd --reloadПроверьте открытые порты:
firewall-cmd --list-portsАльтернатива отключению SELinux (рекомендуется при сохранении безопасности)
Отключать SELinux — простое, но не самое безопасное решение. Если вы хотите сохранить включённый SELinux, можно:
- Перевести SELinux в режим permissive, чтобы сгенерировать AVC‑слёвы и затем создать корректную политику.
setenforce 0
# запустить сервер, собрать AVC, сгенерировать политику, затем setenforce 1- Или создать локальную SELinux‑политику, разрешающую запуск TeamSpeak в /opt/teamspeak.
Эти шаги требуют опыта работы с audit2allow и selinux-policy-devel.
Безопасность и жесткая настройка
- Не храните privileged token в публичных логах — удалите логи или сохраните токен в безопасном хранилище.
- Ограничьте доступ к Query (10011) только с доверенных IP (через firewalld/iptables или TCP wrappers).
- Регулярно обновляйте систему и следите за обновлениями TeamSpeak.
- Используйте бэкапы конфигурации /opt/teamspeak/ и базы данных пользователей.
Критерии приёмки
- Служба teamspeak активна: systemctl status teamspeak -> Active: active (running).
- Порты 9987/udp, 10011/tcp, 30033/tcp открыты в firewalld.
- В логах найден privileged token, либо вы успешно подключились и получили права ServerAdmin.
- Права и владение /opt/teamspeak настроены на пользователя teamspeak.
Отладка — когда что-то не работает
- Служба не стартует:
- Просмотрите журналы systemd: journalctl -u teamspeak
- Убедитесь, что права на /opt/teamspeak принадлежат teamspeak: chown -R teamspeak: /opt/teamspeak
- Порт не доступен извне:
- Проверить локально netstat -tulpen | grep ts3server или ss -ulnp
- Убедиться, что firewalld открывает порт (firewall-cmd –list-ports)
- Токен не найден:
- Убедитесь, что вы смотрите правильный файл в /opt/teamspeak/logs/
- Проверьте, что сервер запускался хотя бы один раз после установки
- SELinux блокирует:
- Временно включите permissive и проверьте AVC в /var/log/audit/audit.log
Чек‑лист при развёртывании (оператор)
- Создан пользователь teamspeak
- Пакет скачан и распакован в /opt/teamspeak
- Файл .ts3server_license_accepted создан
- Владелец каталога — teamspeak
- systemd unit создан и daemon‑reload выполнен
- Служба запущена и включена на старте
- Порты в firewalld открыты
- Получен и сохранён privileged token
Короткая методология безопасности
- Минимизируйте поверхность атаки: откройте только необходимые порты.
- Разделяйте права: запускать от специализированного пользователя teamspeak.
- Логи и токены: хранить в защищённом месте, не публиковать.
- Обновления: применять системные и пакетные обновления регулярно.
1‑строчная глоссарий
- privileged key (token) — одноразовый ключ, дающий права ServerAdmin при первом подключении.
- Query — интерфейс администрирования сервера TeamSpeak по TCP (порт 10011).
Заключение
Вы успешно установили TeamSpeak 3 на CentOS 8, настроили systemd‑сервис и фаервол, получили привилегированный ключ. Если вы цените безопасность, вместо полного отключения SELinux настройте локальную политику или используйте режим permissive для отладки.
Список действий после установки: скачать TeamSpeak Client, подключиться к серверу по IP:порт и активировать привилегию через полученный token.
Summary:
- TeamSpeak готов к использованию на вашем сервере.
- Проверьте безопасность и доступность портов.
- Храните токен в безопасном месте и ограничьте доступ к Query.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента