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) должны быть открыты следующие порты:
| Порт / Диапазон | Протокол | Назначение | Доступ из интернета |
3478 | UDP и TCP | Основной управляющий порт для запросов STUN и TURN. | Обязателен (0.0.0.0/0) |
5349 (или 443) | TCP | Порт для зашифрованных соединений TURN-over-TLS (turns:). | Обязателен при использовании TLS (0.0.0.0/0) |
49152–65535 | UDP | Пул релейных портов (Relay Port Pool), через которые передаются аудио- и видеопотоки между участниками звонка. | Обязателен (0.0.0.0/0) |
8080 | TCP | Встроенный HTTP API сервер (выдача временных токенов /api/turn-credentials, метрики /metrics и статистика). | Рекомендуется ограничить IP-адресом вашего бэкенда, закрыть за Nginx или включить REQUIRE_SECRET=true. |
3. Автоматическая установка одной командой
Чтобы установить последнюю стабильную версию Slyber Turn Server, выполните на сервере следующую команду:
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:
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имеет права на их чтение:
sudo chown -R slyber_turn:slyber_turn /opt/slyber_turn/certs
sudo chmod 600 /opt/slyber_turn/certs/*
6. Управление сервером, проверка и обновление
Управление службой systemd:
# Проверить статус работы сервера
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 сервер успешно выделяет релейные порты:
sudo slyber_turn doctor
Запустите 5 секундный тест производительности на 20 виртуальных клиентах:
sudo slyber_turn bench -clients 20 -duration 5s
Обновление версии:
Для обновления Slyber Turn Server до последней версии выполните ту же команду установки:
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 с вашими настройками и историей трафика на случай последующей переустановки:
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-turn-server/main/uninstall.sh | sudo bash
2. Полное удаление
Полностью удаляет службу, бинарные файлы, директорию /opt/slyber_turn со всеми конфигурациями и телеметрией, а также системного пользователя slyber_turn:
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-turn-server/main/uninstall.sh | sudo PURGE_DATA=true bash