Forum KNX francophone / English KNX forum
Frigate NVR - Version imprimable

+- Forum KNX francophone / English KNX forum (https://www.knx-fr.com)
+-- Forum : Français (https://www.knx-fr.com/forumdisplay.php?fid=3)
+--- Forum : Logiciels libres (linknx, knxweb, pKNyX,...) (https://www.knx-fr.com/forumdisplay.php?fid=10)
+--- Sujet : Frigate NVR (/showthread.php?tid=8519)



Frigate NVR - filou59 - 09/05/2024

Frigate c'est quoiC'est un NVR open source 

NVR : Network Video Recorder, Un truc qui permet d'enregistrer les video de vos caméra en gros  Big Grin Big Grin 

Voici la présentation tiré de leur site :

Citation :Surveillez vos caméras de sécurité avec une IA traitée localement

Frigate est un NVR open source construit autour de la détection d'objets IA en temps réel. Tout le traitement est effectué localement sur votre propre matériel et les flux de vos caméras ne quittent jamais votre domicile.

Home Assistant: 
Frigate s'intègre facilement a HA.
Peut importe la méthode, je vous conseille d'installer Frigate de maniere séparé a Home Assistant. Ca peut être sur la meme machine mais dans une VM ou un container a part.

Materiel Recommandé :
Vous trouverez le materiel recommandé : https://docs.frigate.video/frigate/hardware
Pour un bien Frigate necessite du materiel capable de faire la travail d'analyse video, pour eviter que ca passe par le CPU il existe des petites cartes qui permettent de faire ce travail. 
Frigate appel ca : Detectors.
Les plus connu sont probablement les Google Coral, qui existe en plusieurs version : USB/NVMe/M.2...
Mais il y a aussi du materiel récent qui embarque des détecteurd compatible sur des architecture Intel/AMD...

Avant de vous jeter sur l'achat d'un module, réfléchissez bien a comment vous allez faire tourner Frigate, cherchez des tuto a la recherche de toutes les astuces.

Il faut aussi penser DDur, il y a des série qui sont plus approprié a ce type d'usage qui sollicité en permanence les ddur.

Comment on fait tourner ca : 
On peut le faire tourner de plusieurs façon :
  1. Sur une machine dédié
  2. Sur une VM (Dans Proxmox par exemple)
  3. Dans un container LXC (plusieurs manière aussi de faire je pense là aussi)
  4. ...
Installation de Frigate :

Frigrate tourne normalement sous Docker.


1. Sur une Machine Dédié
Il n'y a qu'a suivre le site
Cette méthode est probablement la plus simple. 

Par contre ca vaut le coup de se donner un peu de peine de regarder un peu coté virtualisation je pense, car la virtualisation apporte pas mal d'atout en therme de backup par exemple. 


2.Sur proxmox : 
Frigate recommande un container LXC plutôt qu'une VM, par contre c'est pas la partie la plus facile. Enfin oui et non, quand on recolte les bonnes info a droite et gauche ca le fait.

Pour une install sur une VM, le passage d'une clé Coral a la VM nécessite quand même quelque manip. C'est pas forcément le plus simple.
On trouve des tuto sur le NET, mais attention, en fonction de votre plateforme Intel/AMD il faudra adapter certaine étape.

Option 1 : Sur une VM
Creer une VM Debian ou ubuntu
Installer Docker
Installer Frigate
* Si on utilise un Detecteur Type Google Coral, il faudra faire du Passthrough de périphérique PCIe/USB

Option 2 : Dans CT LXC via Script tteck
tteck propose un script d'installation de Frigate pour un Container LXC, il me semble qu'il n'utilise pas docker.

Citation :Frigate LXC
Frigate is an open source NVR built around real-time AI object detection. All processing is performed locally on your own hardware, and your camera feeds never leave your home.
To create a new Proxmox VE Frigate LXC, run the command below in the Proxmox VE Shell.
Copy
Code :
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/frigate.sh)"

⚡ Default Settings: 1GB RAM - 20GB Storage - 4vCPU ⚡
Frigate Interface: IP:5000
go2rtc Interface: IP:1984

Option 3 : Dans CT LXC via Docker
Créer un CT LXC Debian 12
Configuration du Passthrough : Il faut configurer le CT pour que l'on passe la clé USB* ou NVMe au CT
Installer Docker
Installer Frigate

*Le passage de clé USB au container peu paraitre déroutant, car la clé change de nom quand elle n'a pas encore été utilisé et ensuite quand les drivers sont chargé (une histoire comme ca). Du coup ca complique les choses quand on veut dire a proxmox qu'il faut passer la Clé Toto quand elle s'appellait Titi 2s avant.  Big Grin
Mais pas panique il y des solutions.



Quelques Liens utiles :

Bon avant de vous donner plus de détail : voici qq lien qui peuvent être utile : 
Raynox : VM + Clé Coral USB
https://www.youtube.com/watch?v=jEgKU5U4kGw

apalrd : LXC + Podman  (alternative a Docker) + Coral PCIe
https://www.apalrd.net/posts/2023/ultimate_frigate/
https://www.youtube.com/watch?v=sCkswrK0G3I&list=PLZcFwaChdgSrldxG1CCk_TBxVCtMT7d_0&index=12

Raspberry Pi Cloud (Video En allemand, mais avec les sous titre ... )
Install tteck 
https://www.youtube.com/watch?v=OHnLHljs_jo

De mon coté j'ai 3 Clé Coral : USB/PCIe Dual TPU (De mémoire)/M2. Histoire d'avoir le choix du matériel.
Je n'ai pas de config hyper récente, mais je n'ai pas non plus chercher a savoir 

En cours de rédaction.


RE: Frigate NVR - Ives - 27/05/2024

Merci @filou59 pour les infos.

Quels sont les avantages de la solution 3 (dans un lxc via Docker) par rapport à la solution 2 (dans un LXC) ? Je voudrais tester Frigate sans la Clé Coral et l'ajouter ensuite si nécessaire.

Sur la documentation officielle Frigate, il est mentionné :  "Frigate fonctionne mieux avec Docker installé sur les distributions nues basées sur Debian.", peut-être la première raison pour privilégier la solution 3 ?


RE: Frigate NVR - filou59 - 28/05/2024

Docker et LXC ce sont 2 solutions de conteneurisation d'applications.

Si on met de coté les affinité :
LXC sous proxmox : c'est quelque chose de vraiment léger, quand on peut c'est la meilleurs solution je trouve.
Docker : D'un coté Proxmox recommande d'installer Docker dans une VM, mais du coup ca nous donne une solution bcp plus lourde en terme de poid, mais aussi de deploiement, mais si on prend le cas de Frigate, la team de Dev explique clairement qu'il faut privilégier la solution Docker via container pour les perfs.
Docker dans un LXC c'est pas ce qui a de plus facile a mettre en oeuvre, car il faut réussir a gerer des problèmes de permissions qui sont parfois difficile, si on veut travailler un LXC en mode unprivileged (ce qui est mieux niveau sécurité)

Je dirais qu'il y aussi le cas des applications qui sont distribué sous plusieurs forme, on peut donc les installer facilement dans une VM, un LXC ou via une image Docker.
Après il y en qui ne sont distribué que via des images Docker, c'est un peu le cas de Frigate.
Mais il y a des gars qui arrivent a nous pondre des scripts d'installation qui nous facilite la vie comme tteck et là du coup on se grate la tete pour savoir quel est la meilleur méthode.

Ce qui peut aussi rentrer en ligne de compte, c'est l'expérience que l'on a. 
Si je prend mon car personnel, je découvre Linux, Proxmox, LXC, Docker ...
Même si on trouve plein de tuto Docker , c'est pas forcément ce qui a de plus facile a mettre en oeuvre, si on ne se contente pas de suivre bêtement un tuto et si on veut comprendre les choses. Donc pour le moment je préfère les solutions basé sur LXC qui sont en général plus simple car il n'y a pas la couche Docker.
Avec LXC : C'est comme si on était sur une distribution Linux Classique.
Avec Docker : Il faut maitriser un minimum de chose : Docker, Docker Compose, éventuellement Portainer voir Dockege pour la gestion, ensuite il faut comprendre les volumes, la partie réseau... , comment on fait pour modifier un CT Docker après l'avoir déployé, comment le mettre a jour...


Quand on se pose la question Docker, on a forcément la question de savoir comment on l'install :
-Une VM ou un LXC dans lequel on install Docker puis on met plusieurs container dedans.
ou
-Plusieurs LXC Docker qui contiennent chacun un service : Exemple un LXC Frigate, un LXC PiHole, un LXC Wireguard ...

La dernière solution pour moi est la meilleur, ca permet d'isoler les services, de faciliter la reprise en cas de probleme en récupérant un backup.
Certains diront que c'est plus lourd a maintenir a jour, ce qui est pas faux, mais la sécurité ou la souplesse a un prix.


Bon au final pour en revenir a nos moutons : LXC ou Docker pour frigate ?
Là on ne parle que d'installation pour un test, le plus simple moi je dirais que c'est le script de tteck , même si c'est pas la voie officiel de le team de dev de Frigate.

Car ton but, c'est de tester le produit et de voir comment le configurer puis de l'intégrer dans H.A je suppose ? 

De toute facon sans accélerateur, ce qui risque de ce passer c'est que ton containeur utilisera pas mal de CPU. 
Ensuite tout dépend de ton CPU et de sa génération.

On trouve plein de tuto/méthode pour la partie installation je trouve, mais un peu moins pour la partie configuration ou la prise en main (a part peu etre sur YT)
Il faut prendre un peu plus de temps pour la 2nd partie j'ai l'impression.

C'est pas forcément la question la plus facile tout en restant objectif tu l'auras compris, tout dépend des afinités de chacun.


RE: Frigate NVR - Ives - 28/05/2024

Merci @filou59 pour ces infos.

J'ai installé le script docker LXC de tteck (rebaptisé Helper-Scripts). 

Voici les options choisies (je passerai en ip fixe avec Proxmox) ; j'ai un doute pour "Using local for template storage" et "Using local for container storage" car je pouvais choisir un volume de mon NAS ?

[Image: dw89.jpg]


RE: Frigate NVR - filou59 - 28/05/2024

Donc tu as choisis d'installer Docker en LXC, et Frigate via la méthode classique dans Docker ?

Template Storage : C'est là ou son stocker les template qui serve de modele, si le modele a déjà été téléchargé on le réutilise. Moi j'aime bien avoir une copie en local histoire que ce soit plus rapide. Comme en plus je n'utilise pas bcp de template différent ca prend pas de place.

Ton dépend de ton architecture et le place que tu as :
Jaime bien avoir une config ZFS avec :
1xPool ZFS pour L'install de Proxmox + le Boot : 2xSSD de gamme Entreprise d'occas.
1xPool ZFS pour les VM/Docker...

Le VM/CT : Il faut les mettre sur le 2nd,
Les ISO ou les Template, on peut les mettre aussi sur ce pool ou a distance sur un NAS si on est pas préssé. (facon de parler)

Je n'utilise pas lvm, mais local-lvm c'est là que tu dois stocker tes container, dans tout les cas il faut que ce soit en local celui-là. C'est bcp mieux que de mettre ca a distance a moins de savoir ce que l'on fait et de passer sur des techno bien précise.


RE: Frigate NVR - Ives - 29/05/2024

(28/05/2024, 10:49:02)filou59 a écrit : Donc tu as choisis d'installer Docker en LXC, et Frigate via la méthode classique dans Docker ?
Non, la copie d'écran a été faite avant la fin de l'installation et il y a docker et portainer. Pour frigate je vais suivre ce tuto

(28/05/2024, 10:49:02)filou59 a écrit : Le VM/CT : Il faut les mettre sur le 2nd,
Les ISO ou les Template, on peut les mettre aussi sur ce pool ou a distance sur un NAS si on est pas préssé. (facon de parler)

Je n'utilise pas lvm, mais local-lvm c'est là que tu dois stocker tes container, dans tout les cas il faut que ce soit en local celui-là. C'est bcp mieux que de mettre ca a distance a moins de savoir ce que l'on fait et de passer sur des techno bien précise.

"VM/CT sur le 2nd ? " : c'est Container stockage qu'il faudrait mettre sur le NAS ?

Lorsqu'il propose l'option "local", il n'y a pas le choix c'est local ou NAS pour l'un et local-vm ou NAS pour l'autre.

Local c'est un volume hors de celui installé pour le LXC et local-vm un volume intégré à ce qui a été réservé pour le LXC?


RE: Frigate NVR - filou59 - 29/05/2024

Au niveau de proxmox, il y a ce que l'on appelle les Storage qui sont visible dans Datacenter.

C'est la dedans que tu vas retrouver local, local-lvm, local-zfs (pour ceux qui fond du zfs...)

Quand on est là on peut voir que les storage peuvent etre de type différent, Directory, NFS, ZFS, ..., et que pour chaque type on a des Content.
Le Content : c'est ce que l'on peut y stocker.

Il y a :
Disk Image : C'est pour des VM
Container : Pour les Container LXC
Iso Image : C'est pour les images ISO
Container Template : Les Template de Container LXC
VZ Dump Backup : Les Backup de VM/LXC
Snipset : Les Snapshots.

Le script ta donc proposé local uniquement car par défaut c'est le seul endroit défini après l'installation si tu n'a rien créer, ajouter ou défini de plus.
Idem pou local-lvm c'est l'endroit utilisé par défaut pour y stocker les VM ou les CT LXC.

Après si on prend 2 exemples :
Je veux faire un CT LXC pour Adguard ou Pi-Hole pour supprimer les pub.
-J'aurais besoin d'un Template Debian par exemple, il sera téléchargé et stocker sur local et pourra étre réutilisé pour d'autre template si besoin.
-J'aurais ensuite besoin de stocker le container (la partie data) dans mon local-zfs ou local-lvm
Ce type d'application ne prend presque rien en terme d'espace disque. #300-600Mo a vue de nez. (Si on fait le même en VM ca va occuper plus d'1Go en espace disque et bcp plus de ressource CPU/Ram...)

Maintenant si on veut un CT LXC Frigate :
-J'aurais toujours besoin d'un Template Debian par exemple, si on l'a déjà téléchargé il sera réutilisé.
-Ensuite on install Docker pluis Frigate dessus ou directement Frigate avec le script Tteck
Là encore on va y stocker les Data dans l'espace adequat, mais il contrairement a notre petit container PiHole Frigate lui va avoir besoin de plus d'espace.

Là il faut réfléchir a ce que l'on fait :
1: On stock ca en local : C'est le plus simple, on a par exemple un autre DDur rien que pour ca. C'est ce que j'ai prévu par exemple dans mon cas. Je détaillerais ma config prochainnement.
2: On stock ca sur un NAS : Dans ce cas il faut s'assurer que l'accès réseau sera suffisant en fonction du nombre de camera que l'on a ...

Dans tous les cas je déconseille d'utiliser le stockage local-lvm ou local-zfs car vous avez surrement opté pour un stockage ssd et vous allez vite griller votre SSD car ce type d'application ecrit en permanence sur les disques.

Il y a plusieurs maniere de le faire, mais l'une d'elle consiste a ajouter un Storage dans proxmox,
Dans le cas d'un DDur monter sur la machine : On le prépare avant (Initialise) , puis ca nous l'ajoute dans storage.
Dans le cas d'un montage réseau on choisi le protocole NFS ou CIFS par exemple puis ca nous l'ajoute dans le storage.

Ensuite au niveau de notre container il va falloir que la fasse un mount point , un point de montage dans notre container qui va pointer sur notre DDur.

Suivant les méthodes utilisés, cette partie la peut paraitre compliqué.

Pourquoi Compliqué :
En terme de sécurité, une VM est totalement isolé du l'hote Proxmox : C'est ce que certains considere de plus sur.
Un CT LXC lui il est lié a l'hote proxmox, du coup pour qu'il soit sécurisé il y a une notion de Container Unpriviledged ou Privileged.

Un CT Unpriviledged : C'est ce qu'il y a de mieux car globalement on va faire en sorte de ne pas donner des droits "root" au CT sur la machine Hote.
Dans un monde idéal il ne faudrait avoir que des container Unprivileged.
Sauf que du coup ca complique les choses quand on veut faire des montage réseau ou pour avoir accès a certaines ressources ...

Du coup c'est la que les CT Privileged rentre en jeu, là plus de barriere, mais on est fasse a un risque. Si le CT est compromis, un attaquant ou une personne malveillante pourrait s'en prendre l'hote....

Ton tuto Yves il utilise ce mode par exemple.

Mon avis sur ce sujet, c'est que pour commencer il on peut très bien partir sur du Privileged , apprendre a ce servir de l'appli en question voir si ca nous convient, suivre les tutos, puis ensuite si on decide de poursuivre, il faut approfondir le sujet pour voir comment et si on peu sécuriser un le truc et passer ca en Unprivileged.

C'est pas impossible mais c'est un peu plus compliqué.


RE: Frigate NVR - Ives - 29/05/2024

Merci @filou59 pour tes explications ; je commence à y voir plus clair même s'il reste encore des zones d'ombre !

- Container LXC et Template container LXC :
Lors de l'installation d'un container LXC dans Proxmox, on peut aller chercher un Template (modèle) que les développeurs ont ajoutés pour s'intégrer au Linux Container dans Proxmox.
On part donc d'un modèle de container LXC mais une fois fois installé dans Proxmox c'est un container LXC (plus un modèle) ? Dans le log d'installation on voit que l'on utilise "local' pour "Template Storage" ; que va t-on stocker concrètement dans cet espace ?

- local-lvm for Container storage est utilisé uniquement pour le fonctionnement du LXC ?