Установка и быстрый старт

Обновлено:

1. Системные требования

Поддерживаемые платформы

  • Операционная система: Linux (Ubuntu, Debian, CentOS, RHEL, Rocky Linux, AlmaLinux, Fedora и др.) с системой инициализации systemd.
  • Архитектура процессора:
  • amd64 (x86_64) — стандартные облачные и выделенные серверы (Intel / AMD).
  • arm64 (aarch64) — серверы на базе ARM.
  • Утилиты: установленный curl для загрузки установочного скрипта и бинарного файла.

Модель безопасности и права доступа

Права, необходимые в момент установки, и права, с которыми работает сам сервер, строго разделены:

  • В момент установки (| sudo bash): Права суперпользователя (root / sudo) требуются только один раз при запуске скрипта установки, чтобы настроить сетевые буферы ядра Linux (sysctl), открыть порты в системном файрволе (UFW / firewalld) и зарегистрировать службу в systemd.
  • Во время работы: Сам бинарник slyber_turn не работает от root. Установщик автоматически создает изолированного непривилегированного системного пользователя slyber_turn без домашней директории (--no-create-home) и без права интерактивного входа в консоль (/usr/sbin/nologin).
  • Защита процесса в systemd:
  • Служба запускается с директивой NoNewPrivileges=true, которая блокирует любое повышение привилегий процессом.
  • Процессу выдается только одна точечная привилегия ядра Linux — AmbientCapabilities=CAP_NET_BIND_SERVICE. Благодаря этому slyber_turn, оставаясь непривилегированным пользователем, может при необходимости занимать порты ниже 1024 (например, порт 443 для TLS_PORT с целью обхода строгих корпоративных файрволов).

2. Необходимые сетевые порты

Для корректной работы Turn сервера (а также во внешней панели облачного провайдера: AWS Security Groups, Hetzner Cloud Firewall, GCP Firewall, DigitalOcean Firewalls) должны быть открыты следующие порты:

Порт / ДиапазонПротоколНазначениеДоступ из интернета
3478UDP и TCPОсновной управляющий порт для запросов STUN и TURN.Обязателен (0.0.0.0/0)
5349 (или 443)TCPПорт для зашифрованных соединений TURN-over-TLS (turns:).Обязателен при использовании TLS (0.0.0.0/0)
49152–65535UDPПул релейных портов (Relay Port Pool), через которые передаются аудио- и видеопотоки между участниками звонка.Обязателен (0.0.0.0/0)
8080TCPВстроенный HTTP API сервер (выдача временных токенов /api/turn-credentials, метрики /metrics и статистика).Рекомендуется ограничить IP-адресом вашего бэкенда, закрыть за Nginx или включить REQUIRE_SECRET=true.

3. Автоматическая установка одной командой

Чтобы установить последнюю стабильную версию Slyber Turn Server, выполните на сервере следующую команду:

Bash
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-turn-server/main/install.sh | sudo bash

Что именно делает установщик шаг за шагом:

  • Определение платформы: Проверяет ОС и архитектуру процессора (amd64 или arm64), выбирая соответствующий бинарный файл slyber_turn-linux-<arch>.
  • Загрузка и криптографическая проверка SHA256: Скачивает бинарный файл из релизов репозитория slyber-app/slyber-turn-server (или из резервной ветки main/bin) во временную директорию и сверяет контрольную сумму по файлу SHA256SUMS.
  • Синхронизация системного времени (NTP): Включает службу точного времени (timedatectl set-ntp true). Поскольку временные пароли TURN содержат Unix метку времени истечения (timestamp:user_id), синхронизированные часы на сервере обязательны.
  • Тюнинг сетевого стека ядра Linux (sysctl): Устанавливает максимальный размер сокет буферов чтения и записи ядра в 8 МБ (net.core.rmem_max=8388608 и net.core.wmem_max=8388608) и сохраняет их в /etc/sysctl.d/99-slyber-turn.conf. Это предотвращает потерю UDP пакетов при высоких нагрузках.
  • Создание системного пользователя slyber_turn: Создает изолированную учетную запись slyber_turn, от имени которой будет работать служба.
  • Установка файлов и генерация .env:
  • Устанавливает бинарный файл в /opt/slyber_turn/slyber_turn и создает глобальный симлинк /usr/local/bin/slyber_turn.
  • Создает каталог /opt/slyber_turn/certs для хранения SSL/TLS сертификатов.
  • Если файл /opt/slyber_turn/.env еще не существует, генерирует случайный 32-символьный криптостойкий ключ TURN_SECRET через /dev/urandom и создает стартовый конфиг.
  • Устанавливает права chmod 750 на директорию /opt/slyber_turn, chmod 600 на .env и назначает владельцем пользователя slyber_turn:slyber_turn.
  • Автонастройка файрвола (UFW / firewalld): Если в системе активен UFW или firewalld, скрипт автоматически открывает порты 3478/udp, 3478/tcp, 5349/tcp и диапазон 49152:65535/udp.
  • Запуск systemd службы и самодиагностика: Регистрирует и запускает службу slyber_turn.service с лимитом открытых файловых дескрипторов LimitNOFILE=1048576, после чего автоматически выполняет проверку slyber_turn doctor и выводит сгенерированный TURN_SECRET в консоль.

4. Установка с пользовательскими параметрами

Если вы хотите сразу задать свой домен (REALM), собственный секретный ключ, порты или лимит скорости на сессию в момент первой установки (например, в скриптах автоматизации Ansible, Terraform cloud-init или CI/CD), передайте переменные окружения перед bash:

Bash
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-turn-server/main/install.sh | sudo \
  REALM="turn.yourdomain.com" \
  PUBLIC_IP="auto" \
  TURN_SECRET="my-custom-production-secret-key-2026" \
  UDP_PORT=3478 \
  TCP_PORT=3478 \
  TLS_PORT=5349 \
  HTTP_PORT="127.0.0.1:8080" \
  MAX_KBPS_PER_SESSION=3000 \
  VERSION="latest" \
  bash

Поддерживаемые переменные установщика:

  • VERSION - версия релиза для скачивания (по умолчанию latest).
  • TURN_SECRET - собственный секретный ключ (минимум 16 символов; если не задан генерируется автоматически).
  • REALM - доменная область сервера (по умолчанию turn.local).
  • PUBLIC_IP - внешний IPv4 адрес сервера или auto для автоопределения по STUN (по умолчанию auto).
  • UDP_PORT, TCP_PORT, TLS_PORT - порты STUN/TURN (по умолчанию 3478, 3478, 5349).
  • HTTP_PORT - адрес и порт HTTP API (по умолчанию :8080; укажите 127.0.0.1:8080, если API должно быть доступно только локально).
  • MAX_KBPS_PER_SESSION - ограничение полосы пропускания на одну сессию в Кбит/с (по умолчанию 0 — без ограничений).

5. Расположение файлов в системе

После завершения установки все файлы сервера располагаются по следующим путям:

ПутьОписаниеПрава доступа
/opt/slyber_turn/Рабочая директория сервера (WorkingDirectory и DATA_DIR).0750 (slyber_turn:slyber_turn)
/opt/slyber_turn/slyber_turnОсновной исполняемый бинарный файл сервера.0755 (slyber_turn:slyber_turn)
/usr/local/bin/slyber_turnСимволическая ссылка на бинарный файл для глобального запуска из CLI.Симлинк
/opt/slyber_turn/.envОсновной конфигурационный файл с секретами и настройками.0600 (slyber_turn:slyber_turn)
/opt/slyber_turn/certs/Директория для размещения SSL/TLS-сертификатов (fullchain.pem, privkey.pem).0755 (slyber_turn:slyber_turn)
/opt/slyber_turn/stats.jsonАвтоматически сохраняемая статистика узла и 24-часовая история.0600 (slyber_turn:slyber_turn)
/opt/slyber_turn/events.jsonlЖурнал аудита событий и заблокированных атак.0600 (slyber_turn:slyber_turn)
/etc/systemd/system/slyber_turn.serviceКонфигурация системной службы systemd.0644 (root:root)
/etc/sysctl.d/99-slyber-turn.confНастройки сетевых буферов ядра Linux (8 МБ).0644 (root:root)
Важно при подключении собственных TLS сертификатов:
Если вы копируете сертификаты Let's Encrypt из /etc/letsencrypt/live/... в /opt/slyber_turn/certs/, убедитесь, что пользователь slyber_turn имеет права на их чтение:
Bash
sudo chown -R slyber_turn:slyber_turn /opt/slyber_turn/certs
sudo chmod 600 /opt/slyber_turn/certs/*

6. Управление сервером, проверка и обновление

Управление службой systemd:

Bash
# Проверить статус работы сервера
sudo systemctl status slyber_turn

# Перезапустить сервер после редактирования /opt/slyber_turn/.env
sudo systemctl restart slyber_turn

# Остановить сервер
sudo systemctl stop slyber_turn

# Просмотр логов сервера в реальном времени
sudo journalctl -u slyber_turn -f


Быстрая проверка после установки:

Запустите встроенную диагностику, чтобы убедиться, что внешний IP определен корректно, а TURN сервер успешно выделяет релейные порты:

Bash
sudo slyber_turn doctor

Запустите 5 секундный тест производительности на 20 виртуальных клиентах:

Bash
sudo slyber_turn bench -clients 20 -duration 5s


Обновление версии:

Для обновления Slyber Turn Server до последней версии выполните ту же команду установки:

Bash
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-turn-server/main/install.sh | sudo bash

Установщик обнаружит существующий файл /opt/slyber_turn/.env, полностью сохранит ваши настройки и накопленную телеметрию, обновит бинарный файл и перезапустит службу.

7. Удаление сервера (uninstall.sh)

Удаление также выполняется одной командой напрямую и поддерживает два режима:

1. Стандартное удаление (с сохранением .env и статистики)

Останавливает и удаляет службу systemd и бинарные файлы, но сохраняет директорию /opt/slyber_turn с вашими настройками и историей трафика на случай последующей переустановки:

Bash
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-turn-server/main/uninstall.sh | sudo bash

2. Полное удаление

Полностью удаляет службу, бинарные файлы, директорию /opt/slyber_turn со всеми конфигурациями и телеметрией, а также системного пользователя slyber_turn:

Bash
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-turn-server/main/uninstall.sh | sudo PURGE_DATA=true bash