Установка¶
Быстрый старт доводит одну машину до играющего стрима. Эта страница — про то, что происходит при установке и как разворачивать 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 — разобраны в траблшутинге Быстрого старта.