Установка Slyber SFU Server и настройка

Обновлено:

Slyber SFU Server поставляется в виде единого статического исполняемого файла без внешних зависимостей для систем Linux на архитектурах процессора amd64 (x86_64) и arm64 (aarch64). Официальный установочный скрипт берет на себя всю рутинную работу системного администратора. Он проверяет контрольную сумму бинарного файла, увеличивает сетевые буферы ядра Linux, создает изолированного пользователя, генерирует криптографические секреты, открывает порты в файрволе и запускает фоновую службу systemd. Если вы разворачиваете инфраструктуру в контейнерах, перейдите в руководство Установка и запуск в Docker одной командой.

Быстрая установка на сервер Linux одной командой

Подключитесь к вашему серверу по SSH и выполните в терминале следующую команду с правами суперпользователя.

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

Установка занимает менее 10 секунд. В конце выполнения скрипт автоматически запустит встроенную проверку slyber_sfu doctor и выведет в консоль готовые секретные ключи вашего нового медиасервера.

Code
[INFO] Detected platform: linux/amd64
[INFO] Downloading slyber_sfu-linux-amd64...
[INFO] Verifying SHA256 checksum...
[OK] Checksum verified
[OK] Created dedicated system user: slyber_sfu
[OK] Installed binary to /opt/slyber_sfu/slyber_sfu (symlinked to /usr/local/bin/slyber_sfu)
[OK] Created initial configuration in /opt/slyber_sfu/.env
[INFO] Running self-diagnostics...
================================================================
 SLYBER SFU DOCTOR | Version: v1.0.0 | Node: slyber-sfu-01
================================================================
 [OK] Environment       : production
 [OK] Public IP & Realm : 99.99.99.99 (slyber.com)
 [OK] Pion ICE Mux      : UDP :4443 | TCP :4443 (ICE-TCP=true) | HTTP :8090
 [OK] Auth & Security   : jwt (E2EE=false, External TURN=0)
 [OK] All Slyber SFU self-diagnostics passed.
================================================================

[OK] Slyber SFU Server is installed and running.
  Service     : systemctl status slyber_sfu (user: slyber_sfu)
  Config file : /opt/slyber_sfu/.env
  JWT Secret  : a8f9c2e71b340598d2c6e1a904f8b120
  TURN Secret : 7c4d9e1a2b8f3056c1e9d4a7b2f80314
  Node Secret : 3e8b1f6a9c2d4075e1a8b3c6d9f20481
  Diagnostics : sudo slyber_sfu doctor

Что именно делает скрипт install.sh автоматически

Скрипт автоматизирует восемь обязательных этапов подготовки продакшен сервера.

  1. Определение архитектуры и проверка SHA256SUMS. Скрипт определяет тип процессора (amd64 или arm64), скачивает соответствующий бинарный файл из официального релиза GitHub и сверяет его хеш сумму по файлу SHA256SUMS через утилиту sha256sum.
  2. Синхронизация времени и тюнинг буферов ядра Linux. Для точной проверки срока жизни токенов включается синхронизация времени NTP (timedatectl set-ntp true). Затем скрипт увеличивает системные лимиты буферов чтения и записи сокетов net.core.rmem_max=8388608 и net.core.wmem_max=8388608 (8 МБ) и сохраняет их в файл /etc/sysctl.d/99-slyber-sfu.conf, чтобы стек Pion WebRTC пропускал гигабитные потоки видео без потери пакетов на сетевой карте.
  3. Создание непривилегированного системного пользователя. В системе создается изолированный пользователь и группа slyber_sfu с домашней директорией /opt/slyber_sfu и запретом интерактивного входа в консоль (/usr/sbin/nologin).
  4. Установка исполняемого файла. Бинарный файл копируется в /opt/slyber_sfu/slyber_sfu с правами 0755, а для удобного вызова из любой папки создается символическая ссылка /usr/local/bin/slyber_sfu.
  5. Автоопределение внешнего IP и генерация ключей в .env. Если файл /opt/slyber_sfu/.env еще не существует, скрипт автоматически определяет публичный IPv4 адрес сервера, генерирует три уникальных 32 символьных криптографических ключа (JWT_SECRET, TURN_SECRET и NODE_SECRET) из системного генератора /dev/urandom и закрывает файл правами доступа chmod 600. При повторном запуске скрипта существующий файл .env не перезаписывается.
  6. Автоматическая настройка файрвола. Если на сервере активен межсетевой экран UFW или firewalld, скрипт автоматически открывает медиапорты 4443/udp и 4443/tcp, а также порт HTTP шлюза 8090/tcp.
  7. Регистрация и запуск службы systemd. Создается юнит /etc/systemd/system/slyber_sfu.service с высоким лимитом открытых файловых дескрипторов LimitNOFILE=1048576, правом привязки привилегированных портов AmbientCapabilities=CAP_NET_BIND_SERVICE, флагом защиты NoNewPrivileges=true и автоматическим перезапуском при сбоях Restart=always.
  8. Финальная самодиагностика. После старта службы скрипт выполняет команду slyber_sfu doctor, подтверждая готовность медиасервера к приему звонков.

Установка с пользовательскими параметрами и выбор режима авторизации

Вы можете передать собственные настройки портов, домена, режима авторизации или конкретной версии релиза прямо в момент выполнения установочной команды через переменные окружения (подробное описание всех режимов авторизации приведено в разделе Аутентификация и сквозное шифрование SFrame E2EE).

Установка с собственным доменом и режимом Secret

Bash
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-sfu-server/main/install.sh | \
  sudo env \
  REALM="video.example.com" \
  AUTH_MODE="secret" \
  SFU_UDP_PORT="4443" \
  SFU_TCP_PORT="4443" \
  SFU_HTTP_PORT="8090" \
  bash

Установка с привязкой к базе данных Redis

Bash
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-sfu-server/main/install.sh | \
  sudo env \
  AUTH_MODE="redis" \
  REDIS_ADDR="127.0.0.1:6379" \
  REDIS_PASSWORD="your_redis_password" \
  REDIS_DB="0" \
  bash

Установка конкретной версии релиза

Bash
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-sfu-server/main/install.sh | \
  sudo env VERSION="v1.0.0" bash

Расположение файлов и управление службой systemd

Все рабочие файлы медиасервера размещаются в следующих системных путях.

  • /opt/slyber_sfu/slyber_sfu и симлинк /usr/local/bin/slyber_sfu содержат основной исполняемый файл сервера.
  • /opt/slyber_sfu/.env хранит все переменные окружения и секретные ключи узла (доступен для чтения только пользователю slyber_sfu и суперпользователю root).
  • /etc/systemd/system/slyber_sfu.service содержит конфигурацию фоновой службы.
  • /etc/sysctl.d/99-slyber-sfu.conf хранит настройки сетевых буферов ядра Linux.

Если вы изменили параметры в файле /opt/slyber_sfu/.env (например добавили список внешних серверов релея в EXTERNAL_TURN_URLS или включили сквозное шифрование REQUIRE_E2EE=true), перезапустите службу и проверьте конфигурацию командами ниже.

Bash
# 1. Открыть файл конфигурации для редактирования
sudo nano /opt/slyber_sfu/.env

# 2. Перезапустить службу для применения новых настроек
sudo systemctl restart slyber_sfu

# 3. Проверить статус работы службы
sudo systemctl status slyber_sfu

# 4. Посмотреть журнал событий и статистику в реальном времени
sudo journalctl -u slyber_sfu -f

# 5. Запустить самодиагностику с текущими настройками .env
sudo bash -c 'set -a && source /opt/slyber_sfu/.env && set +a && slyber_sfu doctor'

Флаги командной строки при ручном запуске

Помимо переменных окружения в файле .env, бинарный файл slyber_sfu поддерживает передачу параметров через флаги командной строки (полный список переменных окружения приведен в статье Запуск в Docker и справочник переменных окружения).

  • -env задает окружение выполнения (development или production).
  • -node-id устанавливает уникальный идентификатор ноды в кластере (по умолчанию slyber-sfu-01).
  • -public-ip указывает внешний IPv4 адрес сервера для ICE кандидатов (или auto для автоопределения).
  • -realm задает домен аутентификации (по умолчанию slyber.com).
  • -udp-port и -tcp-port задают единый порт Pion ICE для UDP и TCP (по умолчанию 4443).
  • -http-port задает порт HTTP и WebSocket шлюза (по умолчанию 8090).
  • -enable-ice-tcp включает мультиплексор RFC 4571 для работы WebRTC поверх TCP (по умолчанию true).
  • -allow-port-fallback разрешает автоматический выбор следующего свободного порта, если базовый порт занят.
  • -socket-buffer задает размер буфера UDP сокета в байтах (по умолчанию 8388608).
  • -auth-mode выбирает режим проверки токенов участников (jwt, redis или secret).
  • -jwt-secret, -turn-secret и -node-secret задают секретные ключи (минимум 24 символа в продакшене).
  • -external-turn-urls принимает список URL внешних TURN серверов через запятую.
  • -allowed-origins задает список разрешенных доменов для WebSocket и CORS.
  • -require-e2ee включает обязательную проверку сквозного шифрования SFrame для всех комнат.
  • -max-kbps-track и -max-kbps-session ограничивают входящий битрейт одного трека и всей сессии участника.
  • -nack-buffer задает размер кольцевого буфера NACK на каждый пространственный слой (по умолчанию 512).
  • -last-n ограничивает максимальное число одновременно активных видеопотоков в комнате (по умолчанию 16).
  • -dynacast включает автоматическую паузу неиспользуемых пространственных слоев видео.

Обновление и удаление сервера (uninstall.sh)

Чтобы обновить установленный сервер до свежей версии без потери ваших настроек и секретных ключей в /opt/slyber_sfu/.env, просто повторно выполните команду установки install.sh. Скрипт заменит бинарный файл на новый, сохранит существующий файл .env и плавно перезапустит службу.

Для удаления службы и исполняемого файла предусмотрен официальный скрипт uninstall.sh.

Bash
# Стандартное удаление (останавливает службу и удаляет бинарник, но сохраняет /opt/slyber_sfu/.env)
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-sfu-server/main/uninstall.sh | sudo bash

# Полное удаление вместе с папкой конфигурации /opt/slyber_sfu и системным пользователем slyber_sfu
curl -fsSL https://raw.githubusercontent.com/slyber-app/slyber-sfu-server/main/uninstall.sh | sudo env PURGE_DATA=true bash

После запуска сервера вы можете сразу перейти к подключению клиентских приложений по инструкции Протокол сигналинга, Simulcast, SVC и управление качеством или протестировать шлюзы вещания из статьи Шлюзы WHIP и WHEP, голосовой конвейер ИИ и телеметрия.