Інсталяція та запуск Фрегата на Proxmox
Frigate — це мережевий відеореєстратор (NVR) з відкритим вихідним кодом, який використовує ШІ для виявлення об’єктів у потоках відеокамери. Я використовую його протягом багатьох років, щоб надійно виявляти людей… і тварин на записах камери. Згідно з документацією, запуск Frigate на Proxmox не рекомендований і не підтримується.
Це був найпростіший спосіб, яким я міг це запустити. Сценарій створення Docker LXC із бібліотеки допоміжних сценаріїв Proxmox.
Виконуємо в шелл Proxmox
1bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/docker.sh)"
Ви повинні побачити на екрані майстер створення LXC. Виберіть Додаткові параметри та введіть ці параметри, коли буде запропоновано.
Параметр | Значення |
---|---|
Distribution | Debian |
Version | Версія: остання (я вибрав 12 Bookworm |
Type | привілейований (я вважаю, що це потрібно для відображення через USB Coral TPU) |
Password | your password |
Container ID | залиште за умовчанням, але запишіть його, він нам знадобиться пізніше |
Hostname | Docker-Frigate |
Disk Size in GB | я встановив для свого диска 4 ГБ, тому що я не збираюся зберігати там відеокліпи. Вам слід вибрати більший розмір, якщо ви збираєтеся зберігати свої кліпи та відзнятий матеріал усередині контейнера. |
CPU Cores | 2 |
RAM | 8 ГБ (8192 МіБ) |
Bridge | Залишити за умовчанням |
IP Address | встановіть статичну IP-адресу, що відповідає вашій домашній мережі, і не забудьте додати /24 у кінець (якщо у вас є маска підмережі 255.255.255.0). Також додайте правильні IP-адреси шлюзу та DNS-сервера. Я також вимкнув IPv6, оскільки не використовую його вдома. |
Root SSH Access | так |
ZFS OverlayFS | я вибрав Ні |
Verbose Mode: | Ні |
Після завершення, ви зможете відкрити браузер і перейти до 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, який я підключив до свого хост-сервера 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-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 зберігає свої кліпи та записи за замовчуванням, тому вам потрібно буде видалити цей рядок, якщо ви не використовуєте точку монтування.
Повертаючись до консолі докер-фрегату 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
Тепер ви можете перейти до каталогу /opt і запустити контейнер за допомогою команди docker
1docker-compose up -d
Якщо все працює добре, ви зможете перейти на IP-адресу вашого контейнера докер-фрегат із портом 5000 і побачити, як Frigate працює!
Якщо ви не можете отримати доступ до Frigate, спробуйте перевірити файли журналу контейнера в Portainer.