Shinobi на TrueNAS: установка, настройка, интеграция | Гайд 2024 | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Установка и настройка Shinobi на TrueNAS: Полное руководство по системе видеонаблюдения

13 февраля 2026 9 мин. чтения #cctv #docker #ip-камеры #jails #shinobi #truenas #zfs #видеонаблюдение

Представь, что у тебя есть мощный сервер TrueNAS с тоннами места на ZFS, и ты хочешь превратить его в профессиональную систему видеонаблюдения. Проблема в том, что готовые NVR-решения часто дороги и ограничены. Решение — установить Shinobi, мощную open-source платформу для CCTV, прямо на твою TrueNAS. Давай разберем, как это сделать правильно, чтобы получить надежную систему с детекцией движения и облачным доступом.

Что такое Shinobi и зачем он на TrueNAS?

Shinobi — это веб-приложение для видеонаблюдения, написанное на Node.js. Оно поддерживает сотни моделей IP-камер, ведет запись, обнаруживает движение, отправляет уведомления и предоставляет API. Запуск Shinobi на TrueNAS дает тебе:

  • Интеграцию с ZFS: Запись видео прямо в ZFS датасеты с поддержкой снапшотов и компрессии.
  • Централизованное управление: Одна панель для хранения данных и видеонаблюдения.
  • Масштабируемость: Легко добавлять диски в пул ZFS для увеличения архива.
  • Гибкость развертывания: Можно использовать Docker или классические Jails.
Важный выбор: В TrueNAS Scale используется Docker (Kubernetes), а в TrueNAS Core — Jails (FreeBSD). Методы установки будут отличаться. В этом руководстве основное внимание уделим TrueNAS Scale как более современному варианту.

Подготовка TrueNAS для Shinobi

Перед установкой нужно подготовить окружение. Представь, что ты настраиваешь сервер для продакшена.

Шаг 1: Создание датасета для видеозаписей

Зайди в Storage → Datasets и создай новый датасет, например, tank/videos/shinobi. Настройки для оптимальной работы с видео:

  • Compression: LZ4 (хороший баланс скорости и сжатия для видео).
  • Record Size: 1M (большие блоки лучше для потокового видео).
  • Share Type: SMB (если нужен доступ по сети) или Generic.

Шаг 2: Настройка пользователей и прав

Создай отдельного пользователя и группу для Shinobi, чтобы изолировать доступ:

bash
# В консоли TrueNAS Scale (если нужно)
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/shinobi shinobi
sudo groupadd shinobi
sudo usermod -a -G shinobi shinobi

В GUI TrueNAS зайди в Credentials → Local Users и создай пользователя с UID/GID, например, 1001. Назначь права на датасет через ACL.

Установка Shinobi через Docker (TrueNAS Scale)

В TrueNAS Scale используем встроенный Apps (Kubernetes). Это самый простой путь.

Шаг 3: Настройка официального образа Shinobi

Идем в Apps → Discover Apps и ищем "shinobi". Если официального образа нет в каталоге, добавляем его вручную:

  1. Нажми Manage Docker Repositories.
  2. Добавь репозиторий: shinobisystems/shinobi:latest.
  3. Вернись и найди Shinobi в списке, нажми Install.

Шаг 4: Конфигурация контейнера Shinobi

При установке заполни ключевые настройки:

yaml
# Пример конфигурации в разделе Container Configuration:
environmentVariables:
  - name: TZ
    value: "Europe/Moscow"
  - name: ADMIN_USER
    value: "admin"
  - name: ADMIN_PASSWORD
    value: "secure_password_here"

# Маунты (Storage)
volumes:
  - type: hostPath
    mountPath: /opt/shinobi/videos
    hostPath: /mnt/tank/videos/shinobi  # Твой ZFS датасет
  - type: hostPath
    mountPath: /dev/shm
    hostPath: /dev/shm

# Сетевые настройки
network:
  hostNetwork: true  # Для лучшей работы с RTSP
  containerPort: 8080
  hostPort: 8080
Важно: Для работы с RTSP потоками камер в локальной сети часто лучше использовать hostNetwork: true. Это дает контейнеру прямой доступ к сетевому стеку хоста.

Шаг 5: Запуск и первоначальная настройка

После развертывания открой http://truenas-ip:8080. Первый вход — с данными из переменных ADMIN_USER и ADMIN_PASSWORD.

  1. Создай нового пользователя для ежедневного использования (не используй admin).
  2. Настрой подключение к базе данных (по умолчанию SQLite, для продакшена лучше MySQL/MariaDB).
  3. Проверь путь к видео в настройках (Config → System).

Настройка IP-камер в Shinobi

Теперь добавим камеры. Представь, что у тебя есть камера с RTSP потоком.

Шаг 6: Добавление камеры через веб-интерфейс

  1. В Shinobi зайди в Monitor → Add New Monitor.
  2. Выбери тип подключения: FFmpeg (RTSP).
  3. Вставь URL потока. Пример для популярных камер:
    bash
    # Hikvision
    rtsp://username:password@192.168.1.100:554/Streaming/Channels/101
    
    # Reolink
    rtsp://username:password@192.168.1.101:554/h264Preview_01_sub
    
    # Generic ONVIF
    rtsp://192.168.1.102:8554/stream1
  4. Настрой детектор движения (встроенный или плагин).
  5. Укажи путь для записи: /opt/shinobi/videos (он смонтирован в ZFS датасет).

Шаг 7: Настройка записи и детекции

В настройках монитора (Monitor Settings) обрати внимание на ключевые параметры:

Параметр Значение Описание
Record → Timed /videos/{monitor_id}/{year}/{month}/{day}/{hour} Автоматическая организация записей по времени
Detector → Type OpenCV или TensorFlow Детектор движения (OpenCV проще, TensorFlow точнее)
Storage → Max Storage Space 50G (например) Ограничение места на камеру. ZFS квоты тоже работают

Интеграция с ZFS и автоматизация

Сила TrueNAS — в ZFS. Давай настроим автоматические снапшоты и очистку старых записей.

Шаг 8: Периодические снапшоты датасета

В TrueNAS зайди в Data Protection → Periodic Snapshot Tasks и создай задачу для датасета с видео:

bash
# Пример задачи через CLI (если нужно)
zfs snapshot tank/videos/shinobi@auto_$(date +%Y%m%d_%H%M)
# Или через GUI:
# Dataset: tank/videos/shinobi
# Schedule: Daily, каждый день в 2:00
# Lifetime: 30 дней (удерживать 30 снапшотов)

Шаг 9: Очистка старых записей через скрипт

Shinobi может удалять старые записи, но можно сделать это средствами ZFS. Создай задачу в Tasks → Cron Jobs:

bash
#!/bin/bash
# Очистка видео старше 30 дней
find /mnt/tank/videos/shinobi -type f -name "*.mp4" -mtime +30 -delete

# Или через zfs destroy (если используешь отдельные датасеты на день)
# zfs destroy tank/videos/shinobi/$(date -d "-30 days" +%Y-%m-%d)

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

Для обработки нескольких камер в высоком качестве нужна оптимизация.

  • Аппаратное ускорение FFmpeg: Если в системе есть Intel QuickSync или NVIDIA GPU, настрой переменные окружения в Docker:
    bash
    -e NVIDIA_VISIBLE_DEVICES=all  # Для NVIDIA
    -e LIBVA_DRIVER_NAME=i965     # Для Intel iGPU
  • Ограничение ресурсов: В настройках контейнера установи лимиты CPU и RAM, чтобы Shinobi не мешал другим сервисам TrueNAS.
  • Кэширование: Для ZFS настрой primarycache=metadata на датасете с видео, чтобы не тратить RAM на кэш видеофайлов.

Альтернатива: Установка Shinobi в Jail (TrueNAS Core)

Если ты используешь TrueNAS Core, установка происходит через Jail. Вот краткий алгоритм:

  1. Создай Jail в Jails → Add.
  2. Подключи датасет через Storage в настройках Jail.
  3. Войди в Jail через shell и установи зависимости:
    bash
    pkg update && pkg install -y nano git node npm ffmpeg
  4. Клонируй Shinobi и настрой:
    bash
    git clone https://gitlab.com/Shinobi-Systems/Shinobi.git /usr/local/shinobi
    cd /usr/local/shinobi
    chmod -R 755 .
    npm install
    cp conf.sample.json conf.json
    # Отредактируй conf.json
  5. Запусти через PM2 или как службу.
Совет: Для продакшена на TrueNAS Core рассмотри установку через плагин (если есть в репозитории) или создание собственного плагина из Jail для удобного управления.

Часто задаваемые вопросы (FAQ)

Shinobi не видит камеру по RTSP. Что делать?

Сначала проверь поток вне Shinobi: ffplay -rtsp_transport tcp rtsp://.... Если работает, проверь настройки Firewall в TrueNAS и убедись, что контейнер/Jail имеет сетевой доступ. Попробуй использовать hostNetwork в Docker или настрой NAT/бридж в Jail.

Как настроить отправку уведомлений в Telegram?

В Shinobi зайди в Config → Plugins → Notifications. Установи плагин Telegram. Получи токен бота у @BotFather, настрой chat_id. Затем в настройках детектора движения выбери этот плагин для уведомлений.

Записи не сохраняются в ZFS датасет. В чем проблема?

Проверь права на папку: внутри контейнера/Jail пользователь Shinobi должен иметь права на запись. Посмотри логи Shinobi (docker logs shinobi). Убедись, что путь монтирования в Docker совпадает с путем в настройках Shinobi (обычно /opt/shinobi/videos).

Можно ли использовать GPU для декодирования видео?

Да, но нужна дополнительная настройка. Для NVIDIA: установи драйверы на хосте TrueNAS, настрой Docker с флагом --runtime=nvidia. Для Intel: передай устройства /dev/dri в контейнер. В Shinobi настройте параметры FFmpeg с использованием -hwaccel cuvid (NVIDIA) или -hwaccel qsv (Intel).

Как обновить Shinobi на TrueNAS?

Для Docker: в TrueNAS Scale зайди в Apps → Installed Apps, найди Shinobi и выбери Update. Для Jail: останови службу, сделай git pull в директории Shinobi, затем npm install и перезапусти. Не забудь备份 базы данных перед обновлением.

Заключение

Интеграция Shinobi с TrueNAS дает тебе мощную, масштабируемую и экономичную систему видеонаблюдения. Ты получаешь все преимущества ZFS — снапшоты, компрессию, целостность данных — вместе с гибкостью open-source CCTV платформы. Начни с одной-двух камер, проверь стабильность, затем масштабируй. Не забывай мониторить использование дискового пространства и настраивать автоматическую очистку. Теперь у тебя есть профессиональная система, готовая к работе 24/7.

Следующие шаги для углубления: настройка кластера Shinobi для отказоустойчивости, интеграция с Home Assistant, настройка глубокой аналитики через TensorFlow модели для распознавания объектов.

Поделиться:
Сохранить гайд? В закладки браузера