TrueNAS Frigate: Установка и настройка NVR с AI на FreeNAS/TrueNAS | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

TrueNAS Frigate: Полное руководство по развертыванию NVR с AI-детекцией

26 февраля 2026 8 мин. чтения #ai детекция #docker #frigate #home assistant #nvr #truenas #truenas scale #видеонаблюдение

Представь, что твоя система видеонаблюдения не просто записывает видео, а понимает, что происходит на кадрах: отличает человека от машины, собаку от кошки, и мгновенно оповещает тебя о важных событиях. Это не будущее — это Frigate NVR на платформе TrueNAS. Давай разберем, как развернуть эту мощную связку и превратить твой NAS в интеллектуальный центр безопасности.

Что такое Frigate и почему TrueNAS?

Frigate — это open-source NVR (Network Video Recorder) с встроенной AI-детекцией объектов на базе TensorFlow. В отличие от традиционных NVR, которые просто пишут видео, Frigate анализирует каждый кадр в реальном времени, определяя людей, автомобили, животных и другие объекты.

TrueNAS (ранее FreeNAS) — идеальная платформа для Frigate по трем причинам:

  • ZFS — надежная файловая система для хранения терабайтов видео
  • Докер-контейнерыАппаратная акселерация — поддержка GPU/TPU для AI-инференса
Важно: Для эффективной работы Frigate с AI-детекцией рекомендуется наличие аппаратного ускорителя — Google Coral TPU или видеокарты NVIDIA с поддержкой TensorRT. На CPU детекция будет работать, но медленнее.

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

Выбор версии TrueNAS

У тебя есть два основных пути:

Параметр TrueNAS SCALE TrueNAS CORE
Основа Linux (Debian) FreeBSD
Докер Нативная поддержка Через плагины/jails
GPU/TPU Полная поддержка Ограниченная
Рекомендация ЛУЧШИЙ ВЫБОР Только если уже используешь

Создание dataset для Frigate

Перед установкой создай отдельный dataset для хранения конфигов и видео:

bash
# В веб-интерфейсе TrueNAS SCALE:
# 1. Storage → Datasets → Add Dataset
# 2. Имя: frigate
# 3. Тип: Filesystem
# 4. Включи: ACL Type = POSIX
# 5. Share Type = SMB (опционально для доступа)
# 6. Примени настройки

Установка Frigate на TrueNAS SCALE

Метод 1: Через TrueCharts (рекомендуется)

TrueCharts — это каталог приложений для TrueNAS SCALE с готовыми конфигурациями:

  1. В веб-интерфейсе перейди в Apps
  2. Нажми Manage CatalogsAdd Catalog
  3. Добавь каталог TrueCharts:
    bash
    Name: truecharts
    Repository: https://github.com/truecharts/catalog
    Branch: main
  4. Дождись синхронизации каталога
  5. Найди Frigate в списке приложений и нажми Install

Метод 2: Ручная установка через Docker Compose

Если нужен полный контроль над конфигурацией:

docker-compose.yml
version: '3.8'

services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshear/frigate:stable
    restart: unless-stopped
    shm_size: '128mb'  # КРИТИЧЕСКИ ВАЖНО!
    devices:
      # Для Coral TPU (если есть)
      - /dev/bus/usb:/dev/bus/usb
      # Для GPU NVIDIA (если есть)
      - /dev/dri/renderD128:/dev/dri/renderD128
    volumes:
      - /mnt/pool/frigate/config:/config:rw
      - /mnt/pool/frigate/media:/media/frigate:rw
      - /etc/localtime:/etc/localtime:ro
    environment:
      FRIGATE_RTSP_PASSWORD: "${FRIGATE_RTSP_PASSWORD}"
    ports:
      - "5000:5000"  # Web UI
      - "1935:1935"  # RTMP streams
      - "8554:8554"  # RTSP feeds
      - "8555:8555/tcp"  # WebRTC
    privileged: true  # Требуется для аппаратного ускорения

networks:
  default:
    name: frigate-network
Внимание: Параметр shm_size: '128mb' обязателен! Frigate использует разделяемую память для буферизации видео. Без этого будут ошибки детекции.

Базовая конфигурация Frigate

Создай файл /mnt/pool/frigate/config/config.yml:

config.yml
mqtt:
  enabled: false
  # Если используешь Home Assistant:
  # host: 192.168.1.100
  # port: 1883
  # user: mqtt_user
  # password: mqtt_password

cameras:
  driveway:  # Имя камеры
    ffmpeg:
      inputs:
        - path: rtsp://admin:password@192.168.1.50:554/stream1
          roles:
            - detect  # Поток для детекции
            - record  # Поток для записи
    detect:
      width: 1280
      height: 720
      fps: 5  # FPS для детекции
    objects:
      track:
        - person
        - car
        - dog
        - cat
      filters:
        person:
          min_area: 5000
          max_area: 100000
          threshold: 0.8
    record:
      enabled: true
      retain:
        days: 7
        mode: motion  # Записывать только при движении
    snapshots:
      enabled: true
      retain:
        default: 10

# Глобальные настройки детектора
detectors:
  # CPU детектор (если нет TPU/GPU)
  cpu1:
    type: cpu
  # Для Coral USB TPU
  coral:
    type: edgetpu
    device: usb
  # Для NVIDIA GPU
  nvidia:
    type: tensorrt
    device: 0  # ID GPU

# Настройки записи
record:
  enabled: true
  retain:
    days: 30
  events:
    retain:
      default: 30
      mode: active_objects

birdseye:
  enabled: true
  mode: continuous

Настройка аппаратного ускорения

В зависимости от твоего железа, добавь в секцию детекторов:

config.yml (фрагмент)
# Для Google Coral USB:
detectors:
  coral:
    type: edgetpu
    device: usb

# Для Google Coral M.2:
detectors:
  coral:
    type: edgetpu
    device: pci

# Для NVIDIA GPU с TensorRT:
detectors:
  nvidia:
    type: tensorrt
    device: 0  # Первая GPU
    model:
      path: /config/model_cache/tensorrt

# Для Intel GPU с VAAPI (QuickSync):
ffmpeg:
  hwaccel_args: preset-vaapi

# Для Raspberry Pi:
detectors:
  pi:
    type: edgetpu
    device: usb  # Или 'pci' для Coral PCIe

Интеграция с Home Assistant

Frigate идеально интегрируется с Home Assistant через MQTT:

  1. Установи MQTT брокер в Home Assistant (Add-on Mosquitto)
  2. Включи MQTT в конфиге Frigate (раскомментируй секцию mqtt)
  3. Добавь интеграцию Frigate в Home Assistant через HACS
  4. Создай автоматизации на основе событий:
    automation.yaml
    alias: "Уведомление при обнаружении человека"
    trigger:
      platform: mqtt
      topic: frigate/events
    condition:
      condition: template
      value_template: >
        {{ trigger.payload_json['type'] == 'new' 
           and trigger.payload_json['before']['label'] == 'person' 
           and trigger.payload_json['camera'] == 'driveway' }}
    action:
      - service: notify.mobile_app_iphone
        data:
          message: "Обнаружен человек у гаража!"
          data:
            image: >
              {{ trigger.payload_json['after']['snapshot_path'] }}

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

Настройка ZFS для видео

Для хранения видео используй отдельный dataset с оптимизированными настройками:

bash
# Создай dataset с настройками для видео
zfs create pool/frigate_video
zfs set recordsize=1M pool/frigate_video  # Оптимально для видеофайлов
zfs set compression=lz4 pool/frigate_video  # Быстрое сжатие
zfs set atime=off pool/frigate_video  # Отключи atime для производительности

# Мониторинг использования
zfs list -o name,used,available,compressratio,recordsize pool/frigate_video

Тюнинг параметров детекции

  • Уменьши FPS для детекции: 5-10 FPS обычно достаточно
  • Используй субстримы: Настрой второй поток с низким разрешением для детекции
  • Настрой регионы интереса (zones): Детектируй объекты только в важных областях
  • Включи аппаратное декодирование: Используй VAAPI, NVENC или QuickSync
config.yml (оптимизированный)
cameras:
  driveway:
    ffmpeg:
      inputs:
        # Субстрим для детекции (низкое разрешение)
        - path: rtsp://cam/stream2  # 640x360
          roles: [detect]
        # Основной поток для записи
        - path: rtsp://cam/stream1  # 1920x1080
          roles: [record]
      hwaccel_args: preset-vaapi  # Аппаратное декодирование
    
    detect:
      fps: 5  # Меньше FPS = меньше нагрузка
      width: 640
      height: 360
    
    zones:
      entrance:
        coordinates: 0,0,640,100,640,360,0,360
      driveway_area:
        coordinates: 200,150,440,150,440,300,200,300
    
    objects:
      track:
        - person
        - car
      filters:
        person:
          threshold: 0.7  # Более строгий порог
          mask:
            - 0,0,100,0,100,50,0,50  # Маска для исключения области

Мониторинг и обслуживание

Frigate предоставляет метрики в формате Prometheus:

bash
# Доступ к метрикам:
curl http://truenas-ip:5000/metrics

# Ключевые метрики для мониторинга:
# - frigate_detection_fps: FPS детекции
# - frigate_detector_inference_speed_ms: Время инференса
# - frigate_camera_fps: FPS камеры
# - process_resident_memory_bytes: Использование памяти

Очистка старых записей

Настрой автоматическую очистку через crontab в TrueNAS:

bash
# Создай задание в TrueNAS Tasks → Cron Jobs
# Очистка записей старше 30 дней:
find /mnt/pool/frigate/media/* -type f -mtime +30 -delete

# Очистка логов Frigate:
find /mnt/pool/frigate/config/logs/*.log -type f -mtime +7 -delete

Частые проблемы и решения

Проблема: Высокая загрузка CPU
Решение:
  • Включи аппаратное ускорение декодирования (hwaccel_args)
  • Используй субстримы для детекции
  • Уменьши FPS детекции до 5
  • Добавь Coral TPU или NVIDIA GPU
Проблема: Ошибка "Shared memory too small"
Решение: Увеличь shm_size в docker-compose.yml до 256mb или 512mb
Проблема: Задержки в детекции
Решение:
  • Проверь сетевую задержку до камеры
  • Убедись, что камера использует H.264/H.265 (не MJPEG)
  • Настрой правильный буфер в ffmpeg input args

Безопасность и доступ

Не забудь про безопасность:

  • Измени пароли по умолчанию на камерах
  • Используй VLAN для изоляции камер
  • Настрой реверс-прокси (Nginx) с SSL для доступа к Frigate UI
  • Включи аутентификацию в Frigate через переменные среды
  • Регулярно обновляй Frigate и TrueNAS
docker-compose.yml (безопасность)
environment:
  - FRIGATE_RTSP_PASSWORD=${RTSP_PASSWORD}
  - FRIGATE_MQTT_PASSWORD=${MQTT_PASSWORD}
  # Базовый HTTP auth (если не используешь реверс-прокси)
  - BASIC_AUTH_USERNAME=admin
  - BASIC_AUTH_PASSWORD=${WEB_PASSWORD}

# Ограничь сетевой доступ
networks:
  frigate-net:
    driver: bridge
    internal: true  # Внутренняя сеть
    
# Пробей только нужные порты
ports:
  - "127.0.0.1:5000:5000"  # Только localhost

Итоговая архитектура

После настройки у тебя получится такая система:

  1. Камеры → RTSP потоки
  2. Frigate в Docker → Детекция объектов + запись
  3. TrueNAS ZFS → Надежное хранение видео
  4. Home Assistant → Уведомления и автоматизации
  5. Google Coral/NVIDIA → Аппаратное ускорение AI

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

Совет от ментора: Не пытайся настроить всё идеально с первого раза. Запусти базовую конфигурацию, проверь работу, затем постепенно добавляй оптимизации. Мониторь метрики и корректируй настройки на основе реальных данных.
Поделиться:
Сохранить гайд? В закладки браузера