Shinobi — открытый NVR: установка и оптимизация
Кратко о Shinobi и зачем он нужен
Shinobi — это открытая система видеозаписи (NVR) с веб-интерфейсом, поддержкой RTSP/ONVIF и гибкими настройками записи. Подойдёт и частному дому, и коммерческому объекту, и интегратору, который хочет контролировать поведение записи, хранение и детекцию движения. Это особенно удобно, если вы хотите избежать закрытых решений и иметь полный доступ к логам, настройкам и хранилищу.
Выбор оборудования — с чего начать
Выбор железа определяет стабильность работы и стоимость хранения. Основные блоки: камеры (IP/PoE), сервер для Shinobi, сеть (PoE-свитчи, VLAN), хранилище (NAS/RAID, SSD/HDD).
| Компонент | Рекомендации | Когда это важно |
| CPU | 4+ ядер, лучше с поддержкой аппаратного декодирования (Intel iGPU) | много камер, запись H.264/H.265 |
| GPU/аппаратное декодирование | Intel QuickSync, NVIDIA NVDEC или VAAPI | если требуется live/encode для большого числа потоков |
| Диск | SSD — для базы/кейсов, HDD (RAID) — для хранения архива | долгосрочное хранение (дни/недель) |
| Сеть | PoE-свитч, 1Gbps минимум, для >20 камер — 10Gb uplink | большая плотность камер, 4K-потоки |
Смотрите подходящие товары в разделе системы видеонаблюдения на y-ss.ru: https://y-ss.ru/catalog/sistemy_videonablyudeniya/ и каталог оборудования https://y-ss.ru/catalog/.
Варианты установки
Есть несколько распространённых путей.
- Docker (быстро и удобно).
- Плюсы: изоляция, простота деплоя, переносимость.
- Минусы: нужно понимать Docker-сеть и монтирование томов.
- Команда базовая: git clone https://github.com/Shinobi-Systems/Shinobi.git && docker-compose up -d (в репозитории есть примеры).
- Установка из исходников (Node.js).
- Подготовить: Node.js (LTS), MySQL/MariaDB, FFmpeg, nginx (опционально).
- Ключевые файлы: conf.json (главные настройки), conf.json.sample, user.json (пользователи).
- Запуск: node camera.js или через systemd.
- Преднастроенные образы/Пакеты.
- Иногда доступны готовые образы для Raspberry Pi/ARM — полезно для небольших проектов.
Быстрая пошаговая настройка (Docker-подход)
1. Подготовьте сервер с Docker и docker-compose.
2. Склонируйте репозиторий Shinobi и скопируйте пример конфигурации.
3. Создайте тома для /conf, /recordings, /mysql.
4. Поднимите сервисы: db (MariaDB), shinobi (app), nginx (опционально).
5. В веб-интерфейсе создайте пользователя и добавьте первый монитор (камера). Для RTSP укажите URL вида rtsp://user:pass@IP:port/stream.
6. Настройте режимы записи (Continuous / Motion / Event), retention и путь хранения.
Настройка камер и детекции движения
- Если камера умеет детекцию на борту — используйте её. Это снимает нагрузку с сервера и уменьшает объём записей.
- Если детекция на стороне Shinobi — задайте зоны, чувствительность и минимальную длительность события.
- Режимы записи: постоянная (24/7), по движению, по расписанию, таймлапс. Подберите под задачу.
Оптимизация производительности
Смотрите, какая штука: главное — скорость декодирования и входной битрейт. Если сервер не справляется, уменьшите нагрузку так:
- Аппаратное ускорение FFmpeg:
- Intel VAAPI/QuickSync: ffmpeg -hwaccel vaapi ...
- NVIDIA NVDEC: ffmpeg -hwaccel cuda -hwaccel_output_format cuda ...
- Перенос детекции в камеры.
- Снижение разрешения/фреймрейта или конвертация в H.264 с низким bitrate.
- Разделение хранения: SSD для индексов, HDD RAID для архива.
- Балансировка: несколько Shinobi-воркеров на разные группы камер и один центральный сервер для управления.
Пример расчёта хранения:
Формула: размер в ГБ/сутки = (битрейт в Мбит/с) / 8 * 86400 / 1024
Пример: камера 4 Мбит/с => 4/8 = 0.5 МБ/с => 0.5*86400 = 43200 МБ ≈ 42.2 ГБ в сутки. Для 30 дней ≈ 1.27 ТБ.
Если записывать по движению, реальное потребление может упасть в 5–20 раз.
Схемы масштабирования
- Малый объект: один сервер Shinobi + PoE-свитч + NAS/локальные диски.
- Средний: несколько серверов (воркеры) + балансировщик/ reverse proxy (nginx) + общий MySQL и общий NAS.
- Крупный: распределённая запись, S3/облачное хранилище для долгого архива, выделенные сервера для анализа видео.
Безопасность и законодательство
- Обязательно закрыть доступ к панели: HTTPS, сложные пароли, смена портов, fail2ban, бэкапы БД.
- Используйте nginx как обратный прокси с TLS.
- Локируйте доступ к хранилищу (прав доступа). Логи доступа сохраняйте.
Камера записывает личные данные. Это требует ограничений доступа и соблюдения правил хранения.
- В России видеозаписи считаются персональными данными, если на них идентифицируемые люди. Ознакомьтесь с ФЗ-152 и локальными нормативами, информируйте сотрудников/посетителей при необходимости.
Цены и бюджет — на что рассчитывать
- Сервер начального уровня: от ~50–100 тыс. руб. (для 4–8 камер).
- PoE-свитч: от 8–15 тыс. руб. (зависит от портов и мощности).
- HDD для архива: ~3–6 тыс. руб. за диск 4–8 ТБ.
- Камеры: от 3–20 тыс. руб. за штуку в зависимости от разрешения и функций.
Подбор оборудования смотрите в каталоге y-ss.ru: https://y-ss.ru/catalog/ и в разделе видеонаблюдения https://y-ss.ru/catalog/sistemy_videonablyudeniya/.
Короткий чек‑лист перед запуском
- Проверить совместимость камер с RTSP/ONVIF.
- Решить, где будет детекция — камера или Shinobi.
- Настроить аппаратное ускорение FFmpeg при большом потоке.
- Выделить SSD для БД/логов, HDD — для архива.
- Настроить HTTPS и бэкапы БД.
- Определить политику хранения (сколько дней/гибкость).
- Убедиться в соблюдении требований по персональным данным.
Заключение
Shinobi даёт гибкость и контроль над системой видеонаблюдения. Это может сработать у вас как для домашней системы, так и для коммерческого проекта, если правильно подобрать железо и сетевую архитектуру. Начните с небольшой инсталляции в Docker, проверьте потоки и нагрузку, и потом расширяйте по мере роста количества камер. Если нужны готовые решения или комплектующие, посмотрите предложения в каталоге y-ss.ru: https://y-ss.ru/catalog/sistemy_videonablyudeniya/ — это поможет подобрать PoE-свитчи, камеры и хранилище под вашу задачу.