Skip to content

Установка

Быстрый старт доводит одну машину до играющего стрима. Эта страница — про то, что происходит при установке и как разворачивать Catena в продакшне: из чего состоит поставка, где живут секреты, как подключить внешний PostgreSQL и какие порты открываются.

Пакеты

Пакетов два, и разделены они по одному признаку — кому нужна база данных.

  • catena ставится на первую машину кластера. Это управляющий контур: консоль, витрина зрителя и секция central: в конфигурации. Пакет зависит от PostgreSQL и заводит базу здесь же.
  • catena-base ставится на все остальные машины — и на стримеры, и на те, что станут резервом central. Это тот же сервер, без консоли и без базы: бинарь, юнит catena.service, каталог конфигурации /etc/catena и каталог состояния /var/lib/catena.

Чем станет машина с catena-base, решают два вопроса при установке, и оба можно оставить без ответа:

  • Подключиться к существующему PostgreSQL? Адрес базы нужен машине, которая станет вторым инстансом central: группа central — это несколько машин над одной базой. Остальное такая машина берёт из своего конфига — см. Группу central. Стримеру база не нужна вовсе.
  • Присоединиться к кластеру central? Адрес central и токен присоединения делают машину стримером кластера — см. Добавление стримера. Что на ней запускать, дальше решает central.

Пакет catena привязан к версии catena-base под собой строго, поэтому обновляются они только вместе.

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

Постинсталл пакета catena делает провижининг: создаёт в PostgreSQL роль и базу catena, генерирует пароль базы и пароль администратора и записывает их в /etc/catena/secrets.env (владелец root, права 0600):

DATABASE_URL=postgres://catena:...@127.0.0.1:5432/catena
EDIT_AUTH_PASSWORD=...

Юнит подключает этот файл как EnvironmentFile. Обновление пакета секреты не ротирует — однажды записанные, они переживают любые апгрейды.

Лицензионный ключ установка спрашивает сама и записывает его в /etc/catena/license.txt (владелец root, права 0600). Если оставить вопрос пустым, пакет всё равно поставится, но сервис не стартует — положите ключ в тот же файл (или передайте переменной LICENSE_KEY) и запустите systemctl start catena. Для раскатки ответ преднабивается через debconf-set-selections — см. Раскатку без интерактива.

Всей поверхностью установки владеет catena-base: юнит catena.service, каталог конфигурации /etc/catena и каталог состояния /var/lib/catena. Обычный sapsan рядом не встанет — пакеты объявлены конфликтующими, потому что стример на коробке должен работать ровно один.

Внешний PostgreSQL

PostgreSQL — единственное хранилище состояния central, и в продакшне ему место на управляемом кластере с бэкапами, а не на той же машине. Достаточно поменять DATABASE_URL в /etc/catena/secrets.env на адрес внешней базы и перезапустить сервис: схему central накатывает сам при старте, отдельных миграционных шагов нет.

Порты

Пакет не кладёт конфигурацию с портом. Из коробки поднимается порт 80 (прописан в переменной INITIAL_HTTP_PORT) — и это именно начальное значение: оно действует, только пока HTTP-листенеры не заданы ничем другим. Дальше портами владеет конфиг стримера — они правятся из консоли, как у любой машины кластера. Переменная HTTP=<порт> — наоборот, постоянное перекрытие поверх всего.

Что открывается и зачем:

Порт Кто задаёт Зачем
HTTP (изначально 80) INITIAL_HTTP_PORT, затем конфиг стримера Консоль, API, зрительский фронт /streaming, синк стримеров
RTSP, RTMP (TCP), WebRTC (UDP) Листенеры в настройках стримера Приём и раздача этими протоколами
SRT (UDP) По листенеру на стрим: порт из SRT-раздачи Раздача стрима по SRT
UDP-входы Порт каждого мультикаст-источника Приём MPEG-TS

Между машинами кластера: всю управляющую связь инициирует стример — ему нужен HTTP(S)-доступ к central; обратно central ходит только на api_url стримера (проксирование медиа и статистика). Зрителям — HTTP(S) до central и, при редиректах, до публичных адресов стримеров.

Проверка

systemctl status catena
journalctl -u catena -n 50

Дальше — вход в консоль и первый стрим. Типовые причины нестарта — лицензия и недоступный PostgreSQL — разобраны в траблшутинге Быстрого старта.