Proxmox + Intel 13th + pass trough + Frigate

Salut à tous,

L’excellent tuto de @ngrataloup m’a donné envie d’installer Frigate :

C’est installé depuis quelques jours avec cette configuration :

  • Proxmox v8.3.5 sur machine Intel 13th
  • Frigate 0.15 via Docker dans une VM Debian 12
  • Clé usb Coral

L’ensemble est fonctionnel, à l’exception de ceci :

Le fait d’avoir plusieurs caméras et du re-stream systématique (go2rtc) se voit sur l’usage CPU que j’aimerais diminuer :

Or l’accélération GPU me semble très compliquée, voire impossible à mettre en place pour une VM.

Deux questions sur le GPU pass through aux adeptes de Proxmox :
→ Avez-vous réussi à l’implémenter dans une VM Debian ?
→ Est-il possible de l’implémenter facilement si on installe Frigate dans un conteneur LXC ?

Je suis preneur de toutes vos remarques et retours d’expériences.

Bonjour @dvb

Je suis sous proxmox en LXC, installé via les scripts de Tteck : Proxmox VE Helper-Scripts
(mode privilegié)

Ensuite, j’ai juste ceci dans le docker-compose de frigate :

    devices:
      - /dev/bus/usb:/dev/bus/usb  # A modifier pour Coral

Aucun souci :

Waouw, vraiment impressionnant côté perfs ! :crazy_face:
→ Je vais tester asap …

Questions subsidiaires :

  • LXC est-il compatible HA (c’était l’avantage de la VM).
  • Combien as-tu octroyé de CPU / RAM / HDD à ton conteneur ?

Pour moi, oui, mais je ne suis absolument pas un expert

image

Mais très surdimensionné pour 4 caméras avec 4 flux en full HD pour l’affichage et 4 flux en HD pour la detection

image

Je me demande: pourquoi vous installez frigate dans un container dans docker dans un lxc (lxc = linux container); c’est un peu poupée russe non?
et chacun rajoute sa couche et donc consomme un peu de ressource.

ca marche pas frigate directement en lxc? => Proxmox VE Helper-Scripts

OK, je testerai et partagerai le résultat.

Mêm comme ça c’est très raisonnable, je m’attendais à bien plus !

Bonne remarque, c’est forcément meilleur côté ressources.
je vais regarder, merci pour le lien.

Argh tu m’as mis un doute …
et en fait, je n’ai pas utilise le script TTeck (Je crois que je l’avais fait au debut !) - Désolé @dvb pour l’erreur !!
1 - il installe une version 0.14.1
2 - sur du debian 11 (en soit pas très important)
3 - pas de migration possible
4 - frigate preconise l’install sur docker
5 - certians remontent des perfs meilleurs sur docker : Frigate LXC container without Docker · tteck/Proxmox · Discussion #2711 · GitHub
6 - et beaucoup remonte une instabilité sur ce script TTeck

du coup, j’ai utilisé ce script : Proxmox VE Helper-Scripts
avec ce docker compose :

services:
  frigate:
    container_name: frigate
    privileged: true # this may not be necessary for all setups
    restart: unless-stopped
    image: ghcr.io/blakeblackshear/frigate:0.15.1
    shm_size: "256mb"
    devices:
      - /dev/bus/usb:/dev/bus/usb  # A modifier pour Coral
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /opt/frigate/config:/config
      - /opt/frigate/data:/media/frigate
      - type: tmpfs #Remove this if using a Pi with 2GB or Less RAM
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
    #  - "8971:8971"
      - "5000:5000"
      - "8554:8554" # RTSP feeds
      - "8555:8555/tcp" # WebRTC over tcp
      - "8555:8555/udp" # WebRTC over udp
      - "1984:1984/tcp" # go2rtc
    environment:
      FRIGATE_RTSP_PASSWORD: "XXXXX"
    logging:
      driver: "json-file"
      options:
        max-size: "50m"
        max-file: "3"

Norbert

Bonjour,

Perso Frigate avec Script de tteck en LXC sur debian 12 ( choix possible a l installation en mode avancé)

J ai 4 cameras Annke et Hikvision

La cle Coral

La programmation pour le paramétrage de l usb son dispo dans plein de tuto

D ailleur j ai jeedom en LXC avec Zigbee, Zwave et Rflink ca fonctionne tres bien, tres stable sur le meme mini PC j ai egalement un antipub, Waultwarden pour les mdp.

En LXC il y a un partage des ressources entre containeurs contrairement a une VM standard qui a besoin d isoler une partie du materiel pour elle meme.

Si besoin je me suis fais des screen pour les config

@Mips
J’ai tenté le script LXC mais j’ai laissé tombé → cause Frigate v0.14.1, dommage.

@ngrataloup
Je suis en train de tester ta solution → script LXC / Docker + ton docker-compose.
→ Je regarde comment l’adapter car mon stockage est en nfs sur un nas.

@ptitdyno
C’est fonctionnel chez toi, mais avec Frigate 0.14.1, c’est ça ?

Bonjour,

En plus du Coral, j’ai passé l’accélération VAAPI qui est disponible pour la plupart des processeurs Intel.

Je suis en conteneur LXC Debian + Docker sous Proxmox, dans ressources j’ai ajouté cela :
image
Je n’ai pas eu besoin d’ajouter les lignes décrites à la partie Proxmox dans le fichier conf.

Et dans le fichier docker compose j’ai mis ceci - /dev/dri/renderD128:/dev/dri/renderD128 sous devices (on trouve la ligne dans leur exemple d’installation).

Il me semble que ça aide surtout si go2rtc doit faire du réencodage (il faut penser à ajouter #hardware, voir la doc), l’idéal étant de recopier les flux plutôt que de réenconder s’il sont déjà en H264.

Ensuite, pour réduire la charge, j’ai utilisé les flux de moindre résolution des caméras (souvent appelés « sub ») pour la partie detect, ainsi qu’une diminution du fps à 2.

Avec tout cela, j’arrive avec 9 caméras sur un NUC Celeron J3455.

Edit : un autre point à regarder, c’est dans frigate sous Settings > Motion tuner ou Debug. Il faut essayer de faire que ça ne détecte pas du mouvement pour rien et ajuste les paramètres ou ajouter des masques sur certaines zones. Typiquement chez moi, c’est l’heure affichée qui changeait. Cela réduire le nombre d’images envoyées au Coral pour analyse. Ensuite, quand il pleut ou qu’il y a du vent c’est plus compliqué.

Grâce à nos échanges, j’ai pu migrer Frigate vers LXC / Docker (Debian 12).
Intel-vaapi est enfin actif, tandis que le temps d’inférence de la clé coral a été divisé … par 2 !!!

Cela donne ça (sans connexion au plugin Jeedom pour l’instant) :

J’ai juste un gros soucis d’instabilité (vu dans les logs), mais cela vient probablement de mon fichier de config. (Je continue à investiguer, je ferai un post dédié si cela ne se règle pas).

Au final, le pass through est parfaitement fonctionnel via LXC / Docker, avec une excellente réactivité.

Merci pour vos différents retours :+1:

1 « J'aime »