Інсталяція Frigate на Proxmox

Інсталяція та запуск Фрегата на Proxmox

Frigate — це мережевий відеореєстратор (NVR) з відкритим вихідним кодом, який використовує ШІ для виявлення об’єктів у потоках відеокамери. Я використовую його протягом багатьох років, щоб надійно виявляти людей… і тварин на записах камери. Згідно з документацією, запуск Frigate на Proxmox не рекомендований і не підтримується.

Створіть LXC під керуванням Docker Compose

Це був найпростіший спосіб, яким я міг це запустити. Сценарій створення Docker LXC із бібліотеки допоміжних сценаріїв Proxmox.

Виконуємо в шелл Proxmox

1bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/docker.sh)"

Ви повинні побачити на екрані майстер створення LXC. Виберіть Додаткові параметри та введіть ці параметри, коли буде запропоновано.

ПараметрЗначення
DistributionDebian
VersionВерсія: остання (я вибрав 12 Bookworm
Typeпривілейований (я вважаю, що це потрібно для відображення через USB Coral TPU)
Passwordyour password
Container IDзалиште за умовчанням, але запишіть його, він нам знадобиться пізніше
HostnameDocker-Frigate
Disk Size in GBя встановив для свого диска 4 ГБ, тому що я не збираюся зберігати там відеокліпи. Вам слід вибрати більший розмір, якщо ви збираєтеся зберігати свої кліпи та відзнятий матеріал усередині контейнера.
CPU Cores2
RAM8 ГБ (8192 МіБ)
BridgeЗалишити за умовчанням
IP Addressвстановіть статичну IP-адресу, що відповідає вашій домашній мережі, і не забудьте додати /24 у кінець (якщо у вас є маска підмережі 255.255.255.0). Також додайте правильні IP-адреси шлюзу та DNS-сервера. Я також вимкнув IPv6, оскільки не використовую його вдома.
Root SSH Accessтак
ZFS OverlayFSя вибрав Ні
Verbose Mode:Ні
  • Коли ви встановите всі ці налаштування, слід розпочати створення контейнера.
  • Коли з’явиться запит, виберіть Так для встановлення Portainer і Docker Compose.

Після завершення, ви зможете відкрити браузер і перейти до IP-адреси, яку ви вказали для контейнера, і порту 9000, щоб відкрити Portainer.

Карта через сховище для відеокліпів

Я не хочу зберігати свої відеокліпи та записи Frigate у своєму контейнері LXC, тому я збираюся зіставити каталог із мого сховища Host на контейнер LXC.

У мене два товстих жорстких диска в дзеркалі (/mnt/raid1), тому я хочу, щоб кліпи жили там. Це захистить їх, якщо щось трапиться з одним із моїх дисків або якщо контейнер буде видалено з будь-якої причини.

Я створив новий каталог на цьому диску під назвою data1 (/mnt/raid1/data1).

Тепер нам потрібно змонтувати через цей каталог з HOST до контейнера LXC за допомогою команди pct set. Команда має таку структуру:

pct set <CONTAINER ID> -mp0 <PATH_TO_DIRECTORY>,mp=<MOUNT_POINT>

Вам потрібно буде додати ідентифікатор контейнера та шляхи до місця, де ви хочете зберігати кліпи та записи.

Приклад:

pct set 160 -mp0 /mnt/raid1/data1,mp=/data

Аналогічно це можна зробити додавши в конфігураційний файл контейнера строку:

# config file lxc контейнера /etc/pve/lxc/160.conf
mp0: /mnt/raid1/data1,mp=/data

Це призведе до монтування каталогу /mnt/raid1/data1 до каталогу, доступного всередині контейнера за адресою /data.

Потім ви можете перейти до самого контейнера(Веб Proxmox), натиснути на частину «Ресурси», і ви побачите точку монтування, яку ви щойно створили.

Відображення через USB Coral TPU та апаратне прискорення

Ми хочемо мати можливість скористатися перевагами USB Coral TPU, який я підключив до свого хост-сервера Proxmox, а також можливостями апаратного прискорення мого ЦП Intel. Для цього нам потрібно зіставити їх із самим контейнером.

Повернувшись у консоль або оболонку сервера Proxmox, нам потрібно відредагувати файл LXC і додати кілька рядків.

Перейдіть до каталогу /etc/pve/lxc і скористайтеся текстовим редактором nano, щоб відредагувати файл конфігурації вашого контейнера. Файл має назву за ідентифікатором контейнера (# config file lxc контейнера /etc/pve/lxc/160.conf).

Додайте наступні два рядки внизу файлу.

lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file 0, 0
lxc.mount.entry: /dev/bus/usb/002/ dev/bus/usb/002/ none bind,optional,create=dir 0,0

Перший рядок відображається через апаратне прискорення Intel, а другий рядок – через USB-порти. Збережіть файл, а потім перезапустіть контейнер docker-firgate.

Створіть файл Docker Compose

Тепер перейдіть до оболонки або консолі контейнера docker-frigate та перейдіть до каталогу /opt. У цьому каталозі ви можете виконати таку команду, щоб створити новий файл Docker Compose.

у редакторі відкриваємо docker-compose.yaml

version: '3.9'

services:

  frigate:
    container_name: frigate
    privileged: true
    restart: unless-stopped
    image: ghcr.io/blakeblackshear/frigate:stable
    shm_size: "128mb" # update for your cameras based on calculation above
    devices:
      - /dev/bus/usb:/dev/bus/usb
      - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /opt/frigate/config:/config:ro
      - /data:/media/frigate
      - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "5000:5000"
      - "1935:1935" # RTMP feeds
    environment:
      FRIGATE_RTSP_PASSWORD: "myPassword"

Ви можете побачити в розділі «Томи», що я зіставив точку монтування /data з каталогом /media/frigate. Саме тут Frigate зберігає свої кліпи та записи за замовчуванням, тому вам потрібно буде видалити цей рядок, якщо ви не використовуєте точку монтування.

Configure Frigate

Повертаючись до консолі докер-фрегату LXC, тепер нам потрібно створити каталог для frigate, у якому буде зберігатися його конфігураційний файл. Використовуйте команду mkdir, щоб створити каталог усередині каталогу /opt під назвою frigate, а потім усередині каталогу під назвою config .

mkdir /opt/frigate
mkdir /opt/frigate/config

Ось мій базовий файл конфігурації Frigate, вам потрібно буде змінити URL-адреси RTSP, щоб вони відповідали вашій камері.

у редакторі відкриваємо /opt/frigate/config/config.yml

rgs: preset-vaapi
detectors:
  coral:
    type: edgetpu
    device: usb
#Global Object Settings
objects:
  track:
    - person
  filters:
    person:
      min_area: 5000
      max_area: 100000
cameras:
  FrontCam:
    ffmpeg:
      inputs:
        # High Resolution Stream
        - path: rtsp://192.168.22.1:7447/P6C9GcVoZ8mRmYor
          roles:
            - record
        # Low Resolution Stream
        - path: rtsp://192.168.22.1:7447/s0Wju46GtlXua3J4
          roles:
            - detect
    detect:
      width: 480
      height: 360
      fps: 24

Starting Frigate

Тепер ви можете перейти до каталогу /opt і запустити контейнер за допомогою команди docker

1docker-compose up -d

Якщо все працює добре, ви зможете перейти на IP-адресу вашого контейнера докер-фрегат із портом 5000 і побачити, як Frigate працює!

Якщо ви не можете отримати доступ до Frigate, спробуйте перевірити файли журналу контейнера в Portainer.