Вступление

Если вам надоело обходить блокировку Discord и вас не устраивает связь в tg или Steam, то предлагаю поднять свой TeamSpeak(TS) сервер. У меня, например, вылезла проблема, что CoD отказывается запускаться при включенной службе обхода дискорда. Тем более, что последнее обновление сделало TS неплохим его аналогом.

И так, нам понадобится домашний сервер (например, старый комп) с установленной ОС или же арендованный VPS. Ваш IP должен быть статическим, иначе придётся в конфигурации роутера каждый раз менять внешний IP.

Проще, если у вас стоит полноценная ОС с UI. Качаете c оф. сайта файл и следуете инструкциям установки.

Я расскажу как поставить TS, которым смогут пользоваться и ваши друзья на Ubuntu-server через терминал.

Установка

При установке помог этот гайд.

Заходим в терминале сервера по SSH или любым другим способом и создаём нового пользователя для TS-сервера:

sudo useradd -mrd /opt/teamspeak teamspeak -s "$(which bash)"

Файлы teamspeak будут лежать в директории /opt/teamspeak.

Установим библиотеку:

sudo apt install bzip2

Сменим пользователя на teamspeak:

su - teamspeak

и скачаем архив

wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2 -O teamspeak-server.tar.bz2

Теперь нужно его распаковать

tar xvfj teamspeak-server.tar.bz2 --strip-components 1

а затем принять лицензионное соглашение:

touch ~/.ts3server_license_accepted

После этого перейдём из пользователя teamspeak обратно в свой

su - username

Создание системного сервиса

Чтобы наш сервер постоянно крутился, а также удобно было следить за его работой, создадим системный сервис. Все сервисы лежат в директории /etc/systemd/system.

sudo nano /etc/systemd/system/teamspeak.service

и добавим следующий код:

teamspeak.service

[Unit]
Description=Teamspeak Service
Wants=network.target

[Service]
WorkingDirectory=/opt/teamspeak
User=teamspeak
ExecStart=/opt/teamspeak/ts3server_minimal_runscript.sh
ExecStop=/opt/teamspeak/ts3server_startscript.sh stop
ExecReload=/opt/teamspeak/ts3server_startscript.sh restart
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

В Descriptionможно указать любое название сервиса. Также, здесь указываются рабочие директории и исполняемые файлы. Сервис будет работать под пользователем teamspeak. И наш сервис будет постоянно перезагружаться в случае падения (Restart=always).

Чтобы сохранить файл, нажимаем Ctrl+C. Вводим y и жмём Enter.

Далее нужно применить изменения командой

sudo systemctl daemon-reload

Запустим наш сервис

sudo systemctl start teamspeak

и выведем его текущий статус

sudo systemctl status teamspeak

Должно выглядеть примерно так

Teamspeak-сервис запущен и работает
Teamspeak-сервис запущен и работает

Ну и, дабы сервис сам запускался при перезапуске системы, введём

sudo systemctl enable teamspeak

Пароль администратора для TeamSpeak

Чтобы установить пароль администратора, сначала остановим сервер

sudo systemctl stop teamspeak

Перейдём в пользователя teamspeak

su - teamspeak

и запустим сервер TS с указанием пароля (конечно же, из директории /opt/teamspeak/)

./ts3server_startscript.sh start serveradmin_password=MyPassword123

Остановим

./ts3server_startscript.sh stop

Перейдём обратно в своего пользователя

su - username

Вновь запускаем сервис

sudo systemctl start teamspeak

Настройка роутера

Данные настройки только для домашнего сервера, который находится в вашей локальной сети.

Нам нужно пробросить порты в настройках роутера на наш домашний сервер. Для этого переходим в настройки роутера: обычно 192.168.0.1 или 192.168.1.1. Адрес можно посмотреть на наклейке снизу роутера, и там же найдёте логин/пароль.

Далее, ищем вкладку Переадресация портов. Обычно находится в Расширенных настройках WAN.

Порты, которые использует TeamSpeak:

  • 9987 - UDP

  • 10011 - TCP

  • 30033 - TCP

Проброс портов на роутере
Проброс портов на роутере
  1. Вводим любое имя службы.

  2. Свой внешний IP (можно узнать, введя IP в поисковике).

  3. Внешний порт

  4. Локальный IP сервера (ищем в панели роутера).

  5. Локальный порт.

То есть, внешний адрес 92.3X.XX.XXX:9987 будет переадресован на адрес локального сервера 192.168.0.50:9987.

ИЛИ ищем настройку DMZ в панели роутера. Выглядит примерно так:

DMZ в панели роутера
DMZ в панели роутера

Вводим локальный IP нашего сервера в домашней сети. Наконец, перезагружаем роутер, чтобы изменения применились.

И ещё, если у вас на сервере активен брэндмауэр, нужно открыть эти порты:

sudo ufw allow 9987/udp
sudo ufw allow 10011, 30033/tcp

Подключение к серверу

Для первичного подключения нам понадобиться узнать токен. Для этого в терминале сервера вводим

grep -i token /opt/teamspeak/logs/*

Копируем токен к себе. Он понадобится для получения прав администратора.

Устанавливаем клиент.

В поиск вбиваем наш внешний IP. Когда всплывёт окно ввода токена, вставим туда сохранённый ранее токен. Теперь вы администратор сервера.

Чтобы пригласить друга, нажимаем "Создать приглашение" и кидаем ссылку друзьям.

Ссылка приглашения
Ссылка приглашения

Либо же даём другу свой внешний IP. TeamSpeak автоматически переадресует на сервис TS вашего сервера.

В принципе, всё.

Комментарии (14)


  1. 13werwolf13
    31.01.2025 15:39

    для начала проприетарному куску.. софта.. я бы обрезал права, ну и конечно создавать юзверей вручную тоже не наш метод:

    [werwolf@power] ~  
    ❯ cat /etc/sysusers.d/system-user-teamspeak-server.conf                                      
    u teamspeak - "teamspeak user" /opt/teamspeak -
    g teamspeak - -
    m teamspeak teamspeak
    
    [werwolf@power] ~  
    ❯ cat /etc/tmpfiles.d/teamspeak-server.conf                                                   
    d /opt/teamspeak 700 teamspeak teamspeak
    
    [werwolf@power] ~  
    ❯ cat /etc/systemd/system/teamspeak-server.service                                       
    [Unit]
    Description=teamspeak dedicated server
    Wants=network-online.target
    After=multi-user.target network.target network-online.target
    
    [Service]
    Type=simple
    User=teamspeak
    Group=teamspeak
    WorkingDirectory=/opt/teamspeak
    ExecStart=/opt/teamspeak/ts3server_minimal_runscript.sh
    ExecStop=/opt/teamspeak/ts3server_startscript.sh stop
    ExecReload=/opt/teamspeak/ts3server_startscript.sh restart
    ExecRestart=/opt/teamspeak/ts3server_startscript.sh restart
    Restart=always
    RestartSec=30
    TimeoutStartSec=300
    NoNewPrivileges=yes
    PrivateTmp=yes
    PrivateDevices=yes
    ProtectKernelTunables=yes
    ProtectKernelModules=yes
    ProtectControlGroups=yes
    ProtectSystem=strict
    ProtectHome=read-only
    SystemCallFilter=~@mount
    ReadWritePaths=/opt/teamspeak
    
    [Install]
    WantedBy=multi-user.target

    ну и почитато на тему:
    1) https://www.freedesktop.org/software/systemd/man/latest/systemd-sysusers.html
    2) https://www.freedesktop.org/software/systemd/man/latest/systemd-tmpfiles-setup.service.html
    3) https://documentation.suse.com/smart/security/html/systemd-securing/index.html

    если мы говорим про один домашний сервер то этого в целом хватит, если планируем разворачивать несколько то я бы упаковал файлы в пакет (конечно тогда вместо /etc будет /usr/lib и добавил бы выкачивание и разворачивание самого софта в ExecStartPre с указанием версии через ExecStartPre и проверкой кондиции по какому нибудь файлу внутри /opt/teamspeak. в репозиторий дистрибутива такой пакет не покласть, для этого разрешение разрабов teamspeak надо, но для какой нибудь внутнренней своей репы более чем подходит.


    1. 13werwolf13
      31.01.2025 15:39

      добавил бы выкачивание и разворачивание самого софта в ExecStartPre с указанием версии через ExecStartPre

      "добавил бы выкачивание и разворачивание самого софта в ExecStartPre с указанием версии через EnvironmentFile" простите за очепятку, поздно заметил..


    1. Markscheider
      31.01.2025 15:39

      для начала проприетарному куску.. софта..

      Вот это меня в первую очередь отпугнуло. В итоге не решился.


      1. ki11j0y
        31.01.2025 15:39

        Развернул на vps в мск. Лучше чем дома, доменное имя есть. Права обрезаны. В целом я дискорд ни когда не любил, с юности тс была.


  1. Dark_AssassinUA
    31.01.2025 15:39

    DMZ и проброс портов это буквально взаимоисключающие вещи


    1. iamezhik
      31.01.2025 15:39

      Тоже не очень понял зачем мы сначала пробрасываем порты, а после этого добавляем сервер DMZ


      1. panda_bambyk Автор
        31.01.2025 15:39

        Пардон, исправил. Либо первое, либо второе


  1. Spyman
    31.01.2025 15:39

    А кто пользовался - подскажите три вещи.

    1. Какие требования к ресурсам (озу в первую очередь)?

    2. Есть ли в тимспике комнаты как в дискорде - куда можно подключиться без звонка.

    3. Есть ли стрим экрана, и если есть то в каком качестве?


    1. panda_bambyk Автор
      31.01.2025 15:39

      Требования

      For Windows:
      Windows 8.1 and newer, 32 and 64-bit

      For Mac OS X:
      Mac OS 10.14 Mojave and above, 32 and 64-bit Intel CPU

      For Linux:
      Any recent Linux distribution, 32 and 64-bit

      For FreeBSD:
      10.2 and above, 32 and 64-bit

      For the CPU:
      SSE2 capable CPU
      SSE4.x capable CPU with POPCNT enabled (Only for the 64-bit version on Windows)

      For Memory:
      This depends on the operating system being used, however a minimum of 1 GB RAM is recommended.
      Total memory usage depends on the number and size of hosted virtual servers.

      For the Hard disk:
      The bare minimum installation is 15 MB.
      Total disk usage is highly dependent on actual usage, size and the amount of hosted virtual servers.
      Additional space is required for file transfer and for icon/avatar storage.

      Каналы есть в TS6 клиенте: чат/аудиозвонки.

      Стрим экрана и вебку, как сказал уже Kundello, выкатят в TS6-server.


  1. Johan_Palych
    31.01.2025 15:39

    В первую очередь прочитать:
    TeamSpeak 3 Licensing
    https://www.teamspeak.com/en/features/licensing/
    FREE SERVER LICENSE: PRICE: FREE, 1 Virtual Server, Up to 32 slots - подключение не более 32 слотов (одновременных пользователей)
    Через docker за 5 мин
    https://hub.docker.com/_/teamspeak

    docker pull teamspeak
    docker run -d --restart=always -p 9987:9987/udp -p 10011:10011 -p 30033:30033 -e TS3SERVER_LICENSE=accept teamspeak
    docker ps
    docker logs CONTAINER ID | grep token

    Установить TS3 Client, зайти по IP, ключ привелегий-token, редактировать сервер
    По умолчанию teamspeak-server использует базу данных sqlite3(есть поддержка MariaDB и PostgreSQL)


    1. the_vitas
      31.01.2025 15:39

      Я вообще не понимаю зачем это на хабре. На офф сайте есть все, да и ставится одной коммандой и настраивается из клиента. Статья ни разу не уровень хабра. Скатился ресурс.


      1. egribanov
        31.01.2025 15:39

        Спасибо что не gpt написал хотя бы


  1. Kundello
    31.01.2025 15:39

    Проще, если у вас стоит полноценная ОС с UI.

    Нет, не проще, это еще и отожрет доп. ресурсы.

    На данный момент успешно держу тску на впс 2 ядра/2гб озу/30гб ссд, человек 15 держит без проблем, больше пока не пробовали. У бесплатной версии сервера ограничение на 32 человека, кстати

    Советую не торопиться с 3-й версией сервера, в ближайшее время должна выйти 6-я, с трансляцией экрана и вебками. Вероятнее всего, инструкция будет абсолютно другок


  1. zFailure
    31.01.2025 15:39

    На самом деле, домашний сервер спика, не плохая идея, помню первые сервер я поставил на винду в 2007г. Подключил услугу постоянный ип адрес, потом по чистой случайности в 2011 с одним сисадмином из Германии, опущу подробности, но была такая возможность купить навсегда сервер за 200€ от его хостинга где он работает, так до сих пор сервер на плаву, и раньше было проще получить лицензию на 500 пользователей)) так вот, я о чем, для домашнего сервера, слишком много лишних манипуляций произвёл, можно было в 2 раза упростить, выше уже написали, но думаю нынче не так дорого арендовать впс за 1800р в год, ну или же за 2250 в год, не надо мучится с приглашениями и раздачей адреса)