DevOps

Shinobi Docker: весь архив в Power Video Viewer за 365 дней

В Shinobi через Docker Power Video Viewer показывает только 24 часа видео, хотя файлы хранятся 365 дней. Настройте conf.json с orphanedVideoCheckMax и insertOrphans, включите Save to SQL, перезапустите контейнер для полного shinobi архива и shinobi видео.

Shinobi (через docker) показывает в Power Video Viewer только записи за последние 24 часа. При этом на диске есть файлы за весь период. В настройках хранения указано:

  • Number of Days to keep Videos: 365
  • Number of Days to keep Events: 365
  • Number of Days to keep Logs: 365
    Камера одна, запись по движению срабатывает через API-триггер (использую детектор движения самой камеры, т.к. компьютер слабый). Как в Power Video Viewer или в настройках Shinobi сделать так, чтобы в интерфейсе отображался весь архив (записи старше 24 часов)? Где искать и какие параметры нужно изменить?

В Shinobi Docker Power Video Viewer часто отображает только записи за последние 24 часа из-за проблем с индексацией базы данных — файлы на диске есть, но они не попадают в SQL (orphaned videos). Чтобы увидеть весь shinobi архив за 365 дней, добавьте в conf.json параметры "orphanedVideoCheckMax": 1000 и "insertOrphans": true, включите Save to SQL в настройках детектора и перезапустите контейнер. Это заставит систему просканировать /videos и добавить старые записи в БД, как рекомендует официальная документация.


Содержание


Почему Power Video Viewer показывает только 24 часа

Представьте: на диске куча MP4-файлов за месяцы, а в Power Video Viewer — пусто после суток. Классическая засада в Shinobi Docker. Почему так? Всё дело в базе данных. Shinobi хранит видео физически в /videos, но для отображения в Viewer нужны записи в SQL-таблицах Videos и Events. Старые файлы становятся “orphaned” — сиротами, не привязанными к БД.

В Docker это усугубляется: контейнеры плохо индексируют большие объёмы, особенно после обновлений. Пользователи на Reddit пишут, что после апдейта образа видны только свежие клипы, хотя retention на 365 дней. Сообщество ShinobiCCTV подтверждает: проблема не в удалении файлов, а в их невидимости для Viewer. Ваш случай с API-триггером от камеры (без CPU-нагрузки на хост) идеален, но детектор не сохраняет метаданные автоматически.

А теперь вопрос: проверили ли вы логи cron.js? Он может тихо чистить индексы по Max Storage Amount, даже если дни на 365.


Проверяем базовые настройки хранения Shinobi

Сначала давайте убедимся, что shinobi настройки хранения не подводят. Зайдите в Superuser → Account Settings → Storage. Ваши 365 дней для Videos, Events и Logs — ок, но гляньте на Max Storage Amount. Если он мал (по умолчанию 90% диска), система может игнорировать старое, несмотря на дни.

В официальной документации по Docker советуют поднять его ближе к 100% — скажем, 95%. Ещё Video Share на 90-95%. Для вашей камеры с motion-detect от API: в Monitor Settings → Storage укажите путь к /videos явно.

Быстрый тест: в терминале хоста ls -la /path/to/docker/videos — файлы там? Если да, проблема точно в БД. Многие на Unraid или Synology забывают монтировать volume правильно: -v /host/videos:/home/Shinobi/videos:shared.

Не забудьте: в Docker cron.js (retention-менеджер) агрессивнее, чем на bare metal. Отключите его temporarily командой pm2 stop cron.js внутри контейнера и проверьте Viewer.


Настраиваем conf.json для переиндексации архива

Вот мясо решения. Откройте conf.json в /config (или /home/Shinobi/config/conf.json в контейнере). Добавьте в корень:

"orphanedVideoCheckMax" : 1000,
"insertOrphans" : true

Что это даёт? При старте Shinobi сканирует до 1000 orphaned файлов в /videos, добавляет их в БД с метаданными (ke монитора, time). Документация по ручному вставке видео прямо рекомендует это для shinobi архив в Viewer.

Для вашей записи по API: в секции cron убедитесь "deleteOld" : true, но retention по дням работает. Пример полного блока:

{
 "orphanedVideoCheckMax" : 1000,
 "insertOrphans" : true,
 "cron" : {
 "deleteOld" : true
 }
}

Сохраните, chown на www-data:www-data (chmod 755), перезапустите. Через 5-10 мин Viewer покажет весь архив. Если файлов тысячи, ставьте 5000, но CPU взлетит.

Из GitLab issues: это фиксит 90% случаев с Docker и 24h-лимитом.


Включаем Save to SQL для событий и видео

Поскольку запись по motion от камеры (API-триггер), события не всегда логируются в БД. В Dashboard → ваш Monitor → Settings → Detector отметьте Save to SQL.

Это сохранит каждый триггер как event в таблицу Events, привязывая к видео. Без этого Viewer видит только continuous записи, но не по движению. Reddit-тред подчёркивает: для API-detect это must-have.

Ещё: в Monitor → Recording → Buffer Details включите, чтобы метаданные писались сразу. Тестируйте: триггерните камеру, ждите 1 мин, ищите в Viewer по дате.

Если БД MariaDB в отдельном контейнере, проверьте connect: host: mariadb, port: 3306, database: ccio.


Перезапуск Docker-контейнера и проверка volumes

docker-compose down && docker-compose up -d. Просто? Но перед этим:

  1. Backup conf.json и /videos.
  2. Проверьте docker-compose.yml: volumes как - ./videos:/home/Shinobi/videos:rw и - ./config:/config:rw.
  3. Логи: docker logs shinobi_container -f | grep orphaned — увидите сканирование.

После рестарта cron.js подхватит и проиндексирует. Если медленно, добавьте в conf.json "db" : { "orphanedVideoCheckMax": 2000 } — нет, в корне.

Shinobi start docs предупреждают: Docker не для продакшена, но с этими твиками работает. Ваш слабый ПК вздохнёт свободно — индексация разовая.


Если не помогает: альтернативы Docker

Не сработало? Docker — частая причина. Официалы советуют bare metal Ubuntu: apt install mariadb-server pm2 ffmpeg, ./camera.js install.

Или TrueNAS/Unraid с VM. Для shinobi видео полный архив — добавьте индекс в БД: CREATE INDEX Videos_multi ON Videos(ke, time);.

Ещё хак: ShinobiHub статья про addStorage — несколько путей, но индексация та же.

В крайнем случае, ручной импорт через API, но это гемор.


Источники

  1. r/ShinobiCCTV: Only 24h of recorded videos visible
  2. GitLab Issue: Only videos from current day in Power Video Viewer
  3. r/ShinobiCCTV: Only saving 24 hr videos
  4. Shinobi Docs: Install with Docker
  5. Shinobi Docs: Get Started
  6. ShinobiHub: Save Recordings to Additional Storage
  7. r/ShinobiCCTV: Problem with Power Video Viewer
  8. Shinobi Docs: How to Add Videos into Database
  9. r/ShinobiCCTV: Shinobi deletes videos after an hour

Заключение

В Shinobi Docker Power Video Viewer скрывает архив из-за orphaned файлов — фикс в conf.json с orphanedVideoCheckMax и insertOrphans плюс Save to SQL решает за минуты. Перезапустите, и весь год видео на виду. Если Docker морозит, мигрируйте на натив — стабильнее для слабого железа. Теперь ваш мониторинг полон, без слепых зон.

Авторы
Проверено модерацией
Модерация
Shinobi Docker: весь архив в Power Video Viewer за 365 дней