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

Порты и сеть

Какие порты открывать, кто к кому подключается, работа за NAT и за обратным прокси.

Полная таблица соединений#

Направление важнее номера: система почти всегда инициирует соединения «изнутри наружу», и только браузеры и Let's Encrypt приходят снаружи.

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

Сертификат Let's Encrypt продлевается автоматически примерно каждые 60 дней, и при каждом продлении проверка снова приходит на порт 80. Если закрыть его после установки, сертификат однажды истечёт.

Правила межсетевого экрана#

Сервер контрол-плейна:

# ufw
sudo ufw allow 80/tcp  comment 'ACME challenge'
sudo ufw allow 443/tcp comment 'CCTV plane'

# firewalld
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload

Сервер отдельной ноды (порты 443 и 80 — так её ставит установщик):

sudo ufw allow 80/tcp  comment 'ACME challenge'
sudo ufw allow 443/tcp comment 'CCTV node media'

Нода на одном хосте с Plane занимает 9443 и 9080 — 80 и 443 уже у Plane:

sudo ufw allow 9443/tcp comment 'CCTV node media'

Если нода отдаёт видео только во внутренней сети, ограничьте источник:

sudo ufw allow from 10.0.0.0/8 to any port 9443 proto tcp comment 'CCTV node media (LAN)'

Нода должна быть доступна браузеру#

Это главное следствие архитектуры: видео идёт с ноды напрямую в браузер, минуя контрол-плейн. Поэтому адрес ноды (public_url) обязан быть доступен с рабочих мест операторов.

Возможные схемы:

Схема Когда подходит Что указать в public_url ноды
Нода на отдельном сервере Операторы работают снаружи https://node.example.com
Нода на одном хосте с Plane Одиночная установка https://cctv.example.com:9443
Нода за обратным прокси Уже есть балансировщик с TLS Внешний адрес прокси; управление — по внутреннему http://-адресу
Смешанное содержимое

Если админка открыта по https://, а нода отдаёт видео по http://, браузер заблокирует видео и не покажет внятной ошибки — просто не будет картинки. У ноды HTTPS работает с первого запуска, поэтому так получается только если её завели по http://: либо верните ей адреса https://, либо поставьте её за прокси с TLS. См. TLS и сертификаты.

Управление нодой: схема решает всё#

Адрес управления (control_url, а если он пуст — public_url) — это то, по чему Plane звонит на ноду. Его схема — единственное решение, из которого Plane выводит слушатели ноды и её стартовый сертификат:

Адрес управления Слушатели ноды Когда так
https://node.example.com 80 и 443 нода на отдельном сервере
https://cctv.example.com:9443 9080 и 9443 нода на одном хосте с Plane
http://node.example.com:8090 8090, без TLS впереди прокси, который сам терминирует TLS

Указывайте https:// сразу: нода получает самоподписанный сертификат на своё настоящее имя вместе со стартовой конфигурацией, и Plane принимает его осознанно.

Ноду со своим TLS нельзя опрашивать по http://

Нода со своим сертификатом перенаправляет любой обычный HTTP-запрос на HTTPS. При таком перенаправлении теряется заголовок авторизации — Plane получает 401, управление перестаёт работать, а нода при этом выглядит живой и продолжает отдавать видео. Дополнительно: по https:// конфигурация с логинами и паролями камер передаётся шифрованной.

Работа за обратным прокси#

Контрол-плейн можно поставить за nginx/HAProxy, который сам терминирует TLS. Тогда в plane.toml режим TLS — external, а listen — внутренний адрес.

Существенно: система доверяет первому значению заголовка X-Forwarded-For без дополнительной проверки. Это значит, что прокси перед контрол-плейном должен быть вашим и обязан перезаписывать этот заголовок, а не пропускать пришедший от клиента. Иначе клиент сможет подделать свой IP-адрес в журнале аудита.

Камеры в отдельной сети#

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

  • Ноде нужен доступ к камерам по 554/TCP.
  • Контрол-плейну доступ к камерам нужен только если вы пользуетесь ONVIF (поиск камер, чтение профилей, PTZ, события камер). Если ONVIF не используется, Plane может вообще не видеть сеть камер.
  • Если прямого доступа нет и белого IP у камер тоже — используйте туннельные агенты.