NEWS
Proxmox LXC mit Frigate
-
Nachdem ich mir eine CORAL M.2 ACCELERATOR MIT DUAL EDGE TPU und ein Dual Edge TPU Adapter bestellt habe, wurde Frigate auf Proxmox installiert.
Skript von TTeck
Proxmox-Console Ubuntu Lunar installieren:bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/ubuntu.sh)"
- Use Default Settings? -> Advanced
- Choose Distribution: -> ubuntu
- Choose Version -> 23.04 Lunar
- Choose Type -> 1 Unprivileged
- Set Disk Size in GB -> 4GB, wenn Videos lokal abgelegt werden sollen erhöhen.
- Allocate CPU Cores -> min. 2, je mehr Kameras desto mehr Cores
- Allocate Ram in MiB -> min. 2048, je mehr Kameras desto mehr Speicher
- Set a Static IPv4 -> besser ist es
- Disable IPv6? -> besser ist es
- Enable Root SSH Access? -> nein
FrigateLXC als root:
adduser frigate adduser frigate sudo exit
FrigateLXC als User frigate:
sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin sudo adduser frigate docker exit
FrigateLXC als User frigate neu anmelden:
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce sudo systemctl status docker sudo /lib/systemd/systemd-sysv-install enable docker mkdir frigate cd frigate nano docker-compose.yml
docker-compose.yml:
version: "3.9" services: frigate: container_name: frigate privileged: true # this may not be necessary for all setups restart: unless-stopped image: ghcr.io/blakeblackshear/frigate:stable shm_size: "64mb" # update for your cameras based on calculation above cap_add: - CAP_PERFMON devices: - /dev/apex_0:/dev/apex_0 - /dev/apex_1:/dev/apex_1 - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware volumes: - /etc/localtime:/etc/localtime:ro - /home/frigate/frigate/config.yml:/config/config.yml - /media/frigate:/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
Achtung ab Frigate 13 muss der komplette Frigate-Pfad angegeben werden nicht die config.yml:
- /home/frigate/frigate:/config
nano config.yml
die minimale config.yml:
mqtt: enabled: False cameras: back: ffmpeg: inputs: - path: rtsp://User:PW@192.168.69.162:554/h264Preview_01_main roles: - detect detect: enabled: False width: 640 height: 480
docker starten:
docker compose up -d exit
http://deineIP:5000
-
Intel Hardwarebeschleunigung aktivieren
Im Proxmox-Host :nano /etc/udev/rules.d/99-intel-chmod666.rules
einfügen :
KERNEL=="renderD128", MODE="0666"
In der Container Config einfügen:
lxc.cgroup2.devices.allow: c 226:128 rwm lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
Auf dem Client
In die config.yml unter ffmpeg einfügen:ffmpeg: hwaccel_args: preset-vaapi inputs:
In die docker-compose.yml: einfügen:
devices: - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware
Inference Speed
durchdetectors: ov: type: openvino device: AUTO model: path: /openvino-model/ssdlite_mobilenet_v2.xml model: width: 300 height: 300 input_tensor: nhwc input_pixel_format: bgr labelmap_path: /openvino-model/coco_91cl_bkgr.txt
als Detector ging der Inference Speed von 53ms auf 9,91ms zurück, was immer das bedeutet.
Coral Dual Edge TPU
Im Proxmox Host:
Die Kernel-Version feststellen, die steht bei mir in der Shellkosole nach dem Login und die Kernelheader installieren.apt install pve-headers-5.15.104-1-pve
Die Coral Treiber installieren und die LXC-Config anpassen.
sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0660\", GROUP=\"apex\"' >> /etc/udev/rules.d/65-apex.rules" curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | tee /etc/apt/sources.list.d/coral-edgetpu.list apt update apt install gasket-dkms libedgetpu1-std nano /etc/pve/lxc/***.conf
einfügen:
lxc.cgroup2.devices.allow: c 120:0 rwm lxc.mount.entry: /dev/apex_0 dev/apex_0 none bind,optional,create=file lxc.mount.entry: /dev/apex_1 dev/apex_1 none bind,optional,create=file
danach
reboot
Jetzt geht es in dem Frigate LXC weiter:
nano docker-compose.yml
einfügen:
devices: - /dev/apex_0:/dev/apex_0 - /dev/apex_1:/dev/apex_1
meine docker-compose.yml sieht so aus:
version: "3.9" services: frigate: container_name: frigate privileged: true # this may not be necessary for all setups restart: unless-stopped image: ghcr.io/blakeblackshear/frigate:stable shm_size: "64mb" # update for your cameras based on calculation above devices: - /dev/apex_0:/dev/apex_0 - /dev/apex_1:/dev/apex_1 - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware volumes: - /etc/localtime:/etc/localtime:ro - /home/frigate/config/config.yml:/config/config.yml:ro - /home/frigate/frigate:/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
jetzt die config.yml:
nano ./config/config.yml
einfügen:
detectors: coral1: type: edgetpu device: pci:0 coral2: type: edgetpu device: pci:1
frigate LXC neu starten, fertg!
-
Heute habe ich meine Kamera von der Haustür eingebunden.
Es ist eine USB Kamera von Logitech die über MJPG-Streamer auf einem RPI4 2GB Ram angeschlossen ist.
Den Stream konnte ich nicht direkt in Frigate nutzen, sondern musste über go2rtc erst umgewandelt werden.
Die CPU-Last stieg dadurch direkt von 0-3% auf 28% auf einem Intel i5 6500.go2rtc: streams: doorbell: - http://192.168.144.130:9100/?action=stream - ffmpeg:doorbell#video=h264#hardware cameras: doorbell: ffmpeg: hwaccel_args: preset-vaapi inputs: - path: rtsp://127.0.0.1:8554/doorbell roles: - detect
-
Am Proxmox-Server habe ich eine USB-HDD für Templates und Backups angeschlossen,
die wurde heute für Frigate als Datenspeicher mit eingebunden.
Auf der USB-Platte den Ordner frigate erzeugen.
In der Frigate LXC-Config auf dem Host je nach euren Mountnamen hinzufügen:mp0: /media/usbhdd/frigate,mp=/root/frigate
damit ist der Ordner frigate nach dem LXC-Neustart auf /root/frigate gemountet.
In der Docker-Config muss jetzt noch der Ordner als Datenspeicher eingerichtet werden:
nano docker-compose.yml
volumes: - /etc/localtime:/etc/localtime:ro - /root/config/config.yml:/config/config.yml:ro - /root/frigate:/media/frigate
habt ihr oben die Docker-Config genutzt, muss hier nichts verändert werden.
-
@wal Proxmox und dann Docker?
-
@da_woody sagte in Proxmox LXC mit Frigate:
@wal Proxmox und dann Docker?
Ja, Frigate gibt es nur im Docker-Container und ich habe einen Proxmox-Server.
-
@wal klar, ich hab auch einen prox, aber dann da docker?
durch die brust ins knie? aber ok, wenn man's mag...
nicht bös gemeint... -
@da_woody ,
ich würde es auch lieber anders machen, geht halt nicht.
Geschwindigkeitsmäßig und Ressourcenmäßig sehe ich jetzt keine Einschränkungen.
Evtl. gibt es mal eine Lösung, da einige Frigate in Proxmox nutzen laut Github. -
@wal
Running Frigate in a VM on top of Proxmox, ESXi, Virtualbox, etc. is not recommended.
stimmt mich sültsam. 236 issues sind auch nicht das wahre. aber ok, wenn du das so magst, wegen der funktionen...
meine bedürfnisse sind mit motion gedeckt. -
@da_woody ,
ich finde die Objekterkennung genial und konnte nach 3 Tagen noch kein Issues entdecken. -
@wal wieviel cams hast du eingebunden?
-
@wal nuja:
-
@da_woody,
ich glaube dir, nur wie ich frigate im Moment nutze habe ich noch keinen Fehler gefunden. -
@hansi1234 sagte in Proxmox LXC mit Frigate:
@wal wieviel cams hast du eingebunden?
Ich habe jetzt nur die Türspechstelle incl. transcoding in einen rtsp Stream und eine billige China Cam zum testen eingebunden. Habe heute bei Ebay eine refurbished Reolink rlc-810a zum testen gekauft. Wenn die was sind werde ich 6 Stück in Neu ums Haus montieren. Meine 2 Mountainbikes haben letztes Jahr Beine bekommen.
-
@da_woody sagte in Proxmox LXC mit Frigate:
@wal
Running Frigate in a VM on top of Proxmox, ESXi, Virtualbox, etc. is not recommended.
Damit ist eine VM, und nicht Docker unter Proxmox in einer LXC gemeint.
Ich bin auch von Frigate begeistert.
Ich nutze eine Full-HD und eine 5k-Kamera, wobei das Bild der 5k-Kamera mit go2rtc in 2 virtuelle (getrennte Bildbereiche) aufgesplittet wird.
In Frigate stehen somit 3 Kamerastreams zur Verfügung.Für die Bilderkennung nutze ich den Coral USB Stick, der zusammen mit der hardwarebeschleunigten Grafik (i5 Prozessor) in den LXC Container und letztendlich nach Docker durchgereicht werden.
Das funktioniert prima.Zwei h264-Videostreams aus go2rtc werden dann noch live zu Twitch gestreamt. (Für Vogelfreunde: Nistkasten-Kamera, wo gerade gebrütet wird.)
Tschau
Uwe -
@uweklatt sagte in Proxmox LXC mit Frigate:
Damit ist eine VM, und nicht Docker unter Proxmox in einer LXC gemeint.
sorry, liest sich anders.
-
Gestern wurde die Coral Dual EDGE TPU eingebaut.
Der PCI-E Key-E Adapter von Makerfab kam aus China:
30 Dollar Adapter
31 Dollar Versand über DHL
21 Euro Zollgebühren
macht mit Märchenumrechnungsfaktor von PayPal
82Euro- 63,90 Euro für die Dual Edge TPU mit Versand
145,90 Euro hat mich der Spass gekostet.
Die Adapter von Amazon usw. haben leider nur 1 Line für die Anbindung der TPU, deshalb wird nur eine CPU erkannt.
Der von Makerfab ist speziell für 2 Linien und der Dual TPU gemacht.
Das Ganze war jetzt trotzdem billiger als 2 x Coral USB bei Pollin. -
Ich lasse jetzt den Stream von der Sprechanlage direkt auf dem RPI4 in einen rtsp Stream umwandeln.
Die CPU-Last vom RPI4 ging von 5% auf 45% hoch und auf dem frigate LXC:
-
@wal Hallo Walter,
ich mühe mich bereits seit einigen Tagen Frigate zu benutzen. Ich habe dieses auf einem Gigabyte Brix mit einem I7 10710U unter Proxmox 7.4-3 installiert. Zusätzlich habe ich eine NVM-E TPU eingerichtet.
Als Kameras nutze ich diverse Reolink-Kameras, von denen ich jetzt eine konfiguriert habe.
Das einzige, was ich auf der Weboberfläche zu sehen bekomme ist dies:
Hast du ein paar Seiten, möglichst auf deutsch, wo man etwas Hilfe bei der Fehlersuche bekommen kann. Ich möchte deinen Beitrag hier nicht missbrauchen.
Grüße
Ralf -
@radi ,
zeig mal deine frigate.yaml und config.yaml.