# Integration von Frigate!

**URL:** <https://community.gladysassistant.com/t/integration-de-frigate-connecteur/11001>\
**Category:** Développement\
**Tags:** integration-externe\
**Created:** [9. Oktober 2026 um 12:03 UTC](https://community.gladysassistant.com/t/integration-de-frigate-connecteur/11001 "2026-10-09T12:03:15Z")\
**Posts on this page:** 1\
**Showing post:** 33

<div class="post-metadata">

**Author:** ![mutmut](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mutmut/32/14064_2.png) [@mutmut](https://community.gladysassistant.com/u/mutmut)\
**Post date:** [15. Oktober 2026 um 17:53 UTC](https://community.gladysassistant.com/t/integration-de-frigate-connecteur/11001/33 "2026-10-15T17:53:04Z")

</div>

> [@lmilcent](#):
>
> Externe Module haben sehr eingeschränkte Fähigkeiten und Möglichkeiten, und das ist auch richtig, um die Stabilität und Sicherheit von Gladys zu gewährleisten.

Ich bin deiner Meinung, aber @Terdious konnte es als Untercontainer der externen Integration dank @pierre-gilles machen:

> [@Externe Integrationen in Gladys Assistant](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/16?u=mutmut):
>
> @Terdious Ich habe eine ganze Spezifikation mit Fable 5 für das Management von Subcontainern geschrieben. Die allgemeine Idee ist, dass eine externe Integration in JSON « Subcontainer » deklarieren kann, die sie benötigt. In unserem Fall könnte man zum Beispiel Frigate + Mosquitto direkt von der Integration aus deklarieren. Die Spezifikation ist hier verfügbar: [https://github.com/GladysAssistant/Gladys/blob/claude/focused-turing-q9vf41/PLAN\_INTEGRATIONS\_EXTERNES.md](https://github.com/GladysAssistant/Gladys/blob/claude/focused-turing-q9vf41/PLAN_INTEGRATIONS_EXTERNES.md) (siehe den Abschnitt Subco…

> <https://github.com/GladysAssistant/Gladys/pull/2677>
>
> \### Pull Request check-list
> 
> To ensure your Pull Request can be accepted as fast… as possible, make sure to review and check all of these items:
> 
> \- \[x\] If your changes affect the code, did you write the tests?
> \- \[\] Are server tests passing with coverage? (\`cd server && npm run coverage\`) — Codecov requires \*\*100% coverage on lines changed in this PR\*\*
> \- \[\] Did Cypress E2E tests pass? (\`npm run cypress:run\` from repo root, if UI changed)
> \- \[x\] Is the linter passing? (\`npm run eslint\` on both front/server)
> \- \[x\] Did you run prettier? (\`npm run prettier\` on both front/server)
> \- \[x\] If you are adding a new feature/service, did you run the integration comparator? (\`npm run compare-translations\` on front)
> \- \[\] Did you test this pull request in real life? With real devices? If this development is a big feature or a new service, we recommend that you provide a Docker image to the community (\[forum\](https://community.gladysassistant.com/)) for testing before merging.
> \- \[x\] If your changes modify the API (REST or Node.js), did you modify the API documentation? (Documentation is based on comments in code)
> \- \[\] If you are adding a new features/services which needs explanation, did you modify the user documentation? See \[the GitHub repo\](https://github.com/GladysAssistant/v4-website) and the \[website\](https://gladysassistant.com).
> \- \[\] Did you add fake requests data for the demo mode (\`front/src/config/demo.js\`) so that the demo website is working without a backend? (if needed) See \[https://demo.gladysassistant.com\](https://demo.gladysassistant.com).
> 
> NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open.
> 
> \### Description of change
> 
> Jalon 6 du plan intégrations externes (basé sur #2665, à merger après elle) : les intégrations multi-conteneurs type Frigate + Mosquitto, et le matériel partagé (Coral, GPU, caméras).
> 
> \*\*Le modèle en deux temps\*\* :
> \- le \*\*manifeste déclare\*\* (champ \`containers\`, max 5) tout ce qui peut tourner — images, limites mémoire/CPU/shm, volumes, ports publiés, classes matérielles. C'est le contrat d'autorisation, affiché sur l'écran d'installation ;
> \- l'\*\*API-hôte pilote\*\* (\`GET /api/integration/v1/container\`, \`POST /container/:name/start|stop|restart\`) le cycle de vie, uniquement dans ces bornes. Jamais de socket Docker, jamais de conteneur non déclaré.
> 
> \*\*Côté serveur\*\* :
> \- validation du champ \`containers\` (mêmes règles que l'indexeur, schéma vendoré mis à jour — ⚠️ le \`manifest.schema.json\` canonique du repo \`integration-store\` doit recevoir le même ajout) ;
> \- réseau bridge privé \`gladys-int-&lt;selector&gt;\` (icc actif, alias DNS = nom du sous-conteneur : le principal joint \`mqtt:1883\`) ; le principal est connecté aux deux réseaux, les sous-conteneurs ne rejoignent jamais \`gladys-integrations\` (pas de token, pas d'API-hôte) ;
> \- sous-conteneurs verrouillés comme le principal (CapDrop ALL, no-new-privileges, limites bornées) ; volumes montés depuis \`&lt;data&gt;/containers/&lt;name&gt;/...\` — le chemin hôte est dérivé par le superviseur, jamais choisi par le manifeste (segments \`..\` rejetés) ;
> \- ports hôte choisis par Gladys (port libre, persisté, stable à travers les recréations), jamais déclarés ;
> \- \*\*état désiré\*\* : \`start: "auto"\` démarre avant le principal, \`"manual"\` attend l'API (pattern Mosquitto : générer le fichier de mots de passe dans \`/data\` avant le premier démarrage) ; un conteneur « censé tourner » qui exit est redémarré avec le même backoff et le même \`failure\_count\` que le principal (≥ 5 → ERROR, tout s'arrête) ; un conteneur arrêté via l'API reste arrêté ;
> \- \*\*matériel demandé par le manifeste, accordé par l'utilisateur\*\* : classes nommées (\`coral-usb\`, \`coral-pcie\`, \`gpu\`, \`video\` — jamais de chemin /dev libre), détection best-effort (\`system.detectHardwareClasses\`), montage effectif = demandé ∩ accordé ∩ présent, modifiable à tout moment (\`POST .../:selector/hardware\` → recréation + push WS \`hardware-updated\`) ;
> \- désinstallation totale (conteneurs + réseau privé + dossier data + ports libérés), update = re-pull de toutes les images + recréation du groupe, réconciliation au boot qui détruit les orphelins (conteneurs et réseaux) ;
> \- \`GET .../:selector/logs?container=mqtt\` pour les logs d'un sous-conteneur.
> 
> \*\*Côté front\*\* :
> \- écran d'installation : liste des sous-conteneurs (images, limites, ports exposés sur le LAN) + interrupteurs matériel pré-cochés si détectés ;
> \- bloc supervision : état de chaque sous-conteneur + lien « Ouvrir &lt;label&gt; » (ex. l'UI de Frigate à un clic) ;
> \- carte Matériel dans l'écran Configuration (octrois modifiables, admin) ;
> \- sélecteur de conteneur sur l'onglet Journaux ;
> \- i18n fr/en/de.
> 
> 🤖 Generated with \[Claude Code\](https://claude.com/claude-code)
> 
> https://claude.ai/code/session\_01DuFjeFwoe3SLLrJV1CFWWN
> 
> \---
> \_Generated by \[Claude Code\](https://claude.ai/code/session\_01DuFjeFwoe3SLLrJV1CFWWN)\_

Ich habe seine Integration mit einem Docker Frigate getestet, das sich selbst installiert, und die gesamte Anordnung funktionierte wirklich gut.

---

_[View the full topic](https://community.gladysassistant.com/t/integration-de-frigate-connecteur/11001)._
