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

Лицензирование

Активация ноды, HWID, что работает без лицензии и как продлить.

Лицензируется нода — сервер, который принимает видео и пишет архив. Plane лицензии не требует: админка, база, пользователи и настройки работают всегда. Каждая нода активируется отдельно, лицензия привязана к её оборудованию.

Что работает без лицензии#

Нелицензированная нода не «выключена» — она полностью управляема, но не пропускает через себя видео:

Функция Без лицензии
Спаривание с Plane, видимость в админке Работает
Получение конфигурации, управление, журналы, метрики Работает
Приём потоков с камер Не работает
Живое видео зрителям Не работает
Запись архива Не работает

Это сделано намеренно: систему можно полностью развернуть и настроить, а лицензию получить и установить позже — конфигурация при этом не потеряется.

Шаг 1. Узнать HWID#

HWID — идентификатор оборудования ноды. Код активации выпускается именно под него.

Основной способ — админка: Ноды → нужная нода → вкладка «Лицензия», поле HWID. Значение можно скопировать прямо оттуда; заходить на сервер не нужно.

Если админка недоступна (например, нода ещё не спарилась), тот же идентификатор есть в журнале ноды:

sudo journalctl -u hastreamer-cctv-node -b | grep -i licens
hastreamer-cctv: NOT LICENSED (enforced) — no license file at /etc/hastreamer-cctv/license.txt
                 (HWID AQKELaPKBFxs2JwF5StOzgZB8TxrByv0yXg)

Строка в скобках после HWID — то, что нужно передать поставщику лицензии.

Тот же идентификатор можно получить, не запуская сервис:

sudo hastreamer-cctv --print-hwid
# AQKELaPKBFxs2JwF5StOzgZB8TxrByv0yXg
HWID привязан к железу

Он вычисляется по характеристикам сервера. Замена материнской платы или перенос системы на другой хост меняет HWID — понадобится новый код активации. Плановый переезд ноды на новый сервер согласуйте с поставщиком лицензии заранее.

Шаг 2. Установить код активации#

Код кладётся в файл /etc/hastreamer-cctv/license.txt:

echo 'XXXX-XXXX-XXXX-XXXX' | sudo tee /etc/hastreamer-cctv/license.txt >/dev/null
sudo chmod 600 /etc/hastreamer-cctv/license.txt
sudo systemctl restart hastreamer-cctv-node
Путь именно /etc/hastreamer-cctv/, а не каталог ноды

Файл лицензии лежит в /etc/hastreamer-cctv/license.txtне в /etc/hastreamer-cctv-node/, где лежит node.conf. Путь зашит в исполняемый файл и не настраивается. Код, положенный в каталог конфигурации ноды, найден не будет, и нода останется нелицензированной.

Установщик ноды спрашивает код при установке; при автоматизации его можно передать переменной окружения:

sudo HASTREAMER_ACTIVATION_CODE='XXXX-XXXX-XXXX-XXXX' installers/hastreamer-cctv-node/install.sh

Активация выполняется онлайн: при старте нода обращается к серверу лицензирования и получает рабочую лицензию. Адрес сервера зашит в сборку и не настраивается, поэтому с ноды должен быть разрешён исходящий HTTPS (порт 443). Постоянного соединения не требуется — только периодические обращения.

Шаг 3. Проверить активацию#

sudo journalctl -u hastreamer-cctv-node -n 30 --no-pager | grep -i licens
Признак успешной активации
hastreamer-cctv: license OK (enforced) — owner="ООО «Пример»" streams=500 expires=never updates-until=2027-01-01

Ключевые поля: owner — владелец лицензии, streams — лимит одновременных потоков, expires — дата истечения (never — бессрочная), updates-until — до какой даты можно устанавливать новые версии.

Через API Plane (лицензия конкретной ноды запрашивается по её идентификатору):

BASE=https://cctv.example.com
NODE_ID=<UUID>
curl -sS "$BASE/api/v1/nodes/$NODE_ID/license" -H "Authorization: Bearer $TOKEN" \
  | python3 -m json.tool

В админке те же данные — Ноды → нода → вкладка «Лицензия»: владелец, контакт, максимум потоков, срок действия, срок обновлений, HWID.

Локальная команда --license-status не подтверждает активацию по коду
sudo hastreamer-cctv --license-status
# Status: unlicensed
# Reason: online activation code (validated at runtime)

Такой ответ не означает проблему: код активации проверяется на сервере лицензирования уже в работающем процессе, а команда читает только файл. Достоверный источник — журнал сервиса и API, как показано выше.

Состояния лицензии#

Состояние Строка в журнале Что означает
licensed license OK (enforced) — owner=… streams=… Всё в порядке, ограничений нет
grace license in GRACE (enforced) — <причина> Лицензия была действительна, но обновить её сейчас не удаётся. Нода работает в полном объёме, ограничений нет
unlicensed NOT LICENSED (enforced) — <причина> (HWID …) Лицензии нет, она истекла или недействительна — медиа заблокировано

Нода сама повторяет проверку примерно раз в 12 часов, а сообщение в журнал пишет только при изменении состояния — поэтому отсутствие свежих строк о лицензии означает, что ничего не менялось.

Кратковременная недоступность сервера лицензирования не останавливает видео

Если обновить лицензию не удалось, нода переходит в состояние grace и продолжает работать в полном объёме несколько суток — точная длительность задана в самой лицензии (обычно не менее двух суток). Этого запаса хватает, чтобы починить сеть или межсетевой экран без остановки видеонаблюдения.

Лимит потоков#

Поле streams=N в журнале — максимум одновременных потоков на этой ноде.

  • Считаются потоки, а не камеры. У камеры с включёнными основным и дополнительным профилями на ноде два потока, поэтому лимит выбирайте с запасом.
  • При достижении лимита уже работающие потоки продолжают работать, а новые не принимаются: свежедобавленные камеры останутся без видео.
  • Перезапуск потока (переподключение к камере) лимитом не блокируется — это не новый поток.

Текущее число потоков видно в метриках ноды и в сводке флота:

curl -sS http://node.example.com:8090/metrics | grep -E '^hastreamer_streams '
# hastreamer_streams 128

Если лимита не хватает — увеличьте его в лицензии либо распределите камеры по нескольким нодам; распределение описано в разделе Производительность.

Истечение и продление#

Лицензия с ограниченным сроком (expires=<дата>) после истечения переводит ноду в состояние unlicensed: медиа блокируется целиком — живое видео прекращается, запись архива останавливается. Уже записанный архив не удаляется и остаётся на дисках.

Продление — это замена содержимого того же файла:

echo 'НОВЫЙ-КОД-АКТИВАЦИИ' | sudo tee /etc/hastreamer-cctv/license.txt >/dev/null
sudo systemctl restart hastreamer-cctv-node
sudo journalctl -u hastreamer-cctv-node -n 20 --no-pager | grep -i licens

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

Следите за сроком заранее

Дата истечения видна в админке (Ноды → нода → Лицензия) и в сводке флота: там есть счётчики нод без лицензии и нод в состоянии grace. Проверяйте их в ежедневном обходе — Мониторинг и метрики.

Диагностика#

Симптом Вероятная причина Что сделать
NOT LICENSED (enforced) — no license file at … Файла нет или он пуст Положите код в /etc/hastreamer-cctv/license.txt и перезапустите ноду
Код положили, но состояние не изменилось Файл создан не по тому пути либо ноду не перезапустили Проверьте путь (/etc/hastreamer-cctv/, не -node), затем systemctl restart hastreamer-cctv-node
NOT LICENSED с упоминанием активации Нет доступа к серверу лицензирования Разрешите исходящий HTTPS (443) с ноды, проверьте DNS и прокси
NOT LICENSED после переноса на другой сервер Сменился HWID Получите новый код активации под новый HWID
Нода активна, часть камер без видео Достигнут лимит потоков Сверьте hastreamer_streams с streams=N; расширьте лицензию или добавьте ноду
license in GRACE несколько дней подряд Обновление лицензии не проходит Проверьте исходящий доступ; до окончания окна grace видео работает, после — остановится

Полная последовательность установки ноды — Установка с нуля: Node; проверка готовности всей системы — Проверка после установки.