SIRINVIDEO CCTV Документация администратора и пользователя На сайт 2026.08

Архитектура

Из чего состоит система, кто с кем общается, какие порты нужны и что произойдёт при отказе каждого компонента.

Система состоит из двух самостоятельных программ. Они устанавливаются как два независимых сервиса systemd и могут работать как на одном сервере, так и на разных — это рекомендуемый вариант.

Браузер оператор / админ Plane админка, API, БД, события, права PostgreSQL конфигурация, события, аудит Node приём и раздача видео, запись архива Диски / S3 архив DVR IP-камеры RTSP / ONVIF HTTPS 443 админка и API 5432 управление конфигурация, телеметрия, команды RTSP 554 приём видео запись ONVIF от Plane: поиск, PTZ, события видео напрямую HLS / MSE-WS
Обмен данными между компонентами. Синим — потоки, критичные для просмотра: управление нодой и выдача видео в браузер.

Plane — контрол-плейн#

Программа hastreamer-plane. Это «мозг» системы: она не передаёт видео, а управляет всем остальным.

  • Веб-интерфейс администратора и оператора, REST API, страница плеера.
  • База данных PostgreSQL: организации, пользователи и права, камеры, ноды, события, аудит.
  • Управление нодами (Fleet): хранит желаемую конфигурацию каждой ноды и приводит ноду к ней.
  • Выдача прав на видео: подписывает токены доступа, ноды проверяют их по открытому ключу.
  • События: системные (нода недоступна, камера offline), приём событий от камер по ONVIF.
  • Работа с камерами по ONVIF: поиск в сети, чтение профилей, PTZ-управление.

Обслуживает один сервер. Резервируется на уровне виртуализации или снимками БД (см. Резервное копирование).

Node — стриминговая нода#

Программа hastreamer-cctv. Это «мышцы»: весь тяжёлый трафик проходит через неё.

  • Забирает видео с камер (RTSP, в том числе через туннель для камер за NAT).
  • Раздаёт зрителям: HLS, MSE-WS (низкая задержка), RTSP, кадры-превью.
  • Пишет архив на локальные диски, при необходимости выгружает в S3.
  • Отдаёт архив на воспроизведение и экспорт фрагментов.
  • Проверяет права доступа зрителя самостоятельно — по ключам, полученным от Plane.

Нод может быть много. Камеры распределяются между ними; каждая камера в каждый момент принадлежит одной ноде. Нода лицензируется (см. Лицензирование).

Почему видео идёт мимо Plane

Браузер получает видео напрямую с ноды, а не через контрол-плейн. Это главное архитектурное решение: Plane не становится узким местом, его канал и процессор не зависят от числа зрителей. Поэтому нода должна быть доступна браузеру по сети и иметь собственный TLS-сертификат — см. TLS и сертификаты.

Как Plane управляет нодой#

  1. Администратор создаёт ноду в Plane и получает файл node.conf — в нём адрес Plane, идентификатор ноды и открытый ключ Plane.
  2. Нода запускается с этим файлом и начинает отвечать на команды Plane. Команды подписаны закрытым ключом Plane — подделать их нельзя.
  3. Plane периодически опрашивает ноду: собирает телеметрию (потоки, сессии, диски, лицензия) и приводит конфигурацию ноды к желаемой — добавляет и убирает камеры, хранилища, права.
  4. В node.conf появляется секция # >>> MANAGED BY cctv-plane — её содержимое полностью принадлежит Plane и перезаписывается при каждой синхронизации.
Периодичность Что происходит
~5 секунд Опрос телеметрии: живость камер, счётчики, состояние дисков и лицензии
~60 секунд Сверка конфигурации (anti-entropy): нода приводится к желаемому состоянию
немедленно Любое изменение в админке рассылается нодам сразу, не дожидаясь таймера

Что переживает отказ#

Отказал компонент Что продолжает работать Что перестаёт
Plane Видео и запись архива на нодах не прерываются Вход в админку, выдача новых прав, события, изменение настроек
Node Остальные ноды и их камеры Видео, архив и запись камер только этой ноды
PostgreSQL Ноды продолжают вещать и писать Plane не работает полностью
Сеть до камеры Всё остальное Эта камера: видео нет, в архиве — пропуск, откроется событие
Практический вывод

Ноды переживают перезагрузку Plane без потери видео и записи. Обновлять Plane можно в рабочее время; обновление ноды — это перерыв в видео и записи её камер на время перезапуска (секунды).

Порты#

Полный список с направлениями — в разделе Порты и сеть. Кратко:

Кто → кому Порт Назначение
Браузер → Plane 443/TCP Админка, API, страница плеера
Браузер → Node 443/TCP (или 8090) Видео: HLS, MSE-WS, архив, превью
Plane → Node 80 или 443/TCP Управление нодой
Node → Plane 443/TCP Ключи проверки прав, отзывы, служебные потоки
Node → Камера 554/TCP Приём RTSP-видео
Plane → Камера 80 / 8000 / 554 ONVIF: поиск, профили, PTZ, события
Plane → PostgreSQL 5432/TCP База данных
Мир → Plane/Node 80/TCP Только для выпуска сертификатов Let's Encrypt

Масштабирование#

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

Ориентиры по железу под конкретное число камер — в разделе Требования и подбор оборудования.