# Intégrations externes dans Gladys Assistant

**URL:** <https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343>\
**Category:** Demandes livrées\
**Created:** [Juillet 13, 2026, 9:09 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343 "2026-07-13T09:09:55Z")\
**Posts on this page:** 20\
**Page:** 6

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 23, 2026, 12:18 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/101 "2026-07-23T12:18:27Z")

</div>

Nouvelle version du SDK, v0.8.0 avec un nouveau champ «&nbsp;section&nbsp;», et lien vers la documentation obligatoire sur la page de l’intégration

Edit: Template mise à jour pour la v0.8.0

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 23, 2026, 12:56 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/102 "2026-07-23T12:56:52Z")

</div>

Attention, le store a été mis à jour et est plus strict, il faut maintenant une documentation obligatoire dans les intégrations ⚠

Pensez à faire tourner :

```auto
npx github:GladysAssistant/integration-store

```

Pour voir si votre intégration passe la validation, et corriger votre repo si besoin

(donnez ce message à Claude)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 23, 2026, 2:07 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/103 "2026-07-23T14:07:15Z")

</div>

Nouvelle version du SDK : v0.9.0 !

Au programme :

- Gestion des intégrations de type «&nbsp;communication&nbsp;» mono-directionnelle (FreeMobile, Callmebot, ntfy.sh, etc…)
- Gestion des webhooks Gladys Plus pour les intégrations de type Netatmo qui ont besoin d’un webhook Cloud

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 23, 2026, 2:39 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/104 "2026-07-23T14:39:10Z")

</div>

Ok j’ai mis à jour la PR Gladys avec 3 changements :

**1. Bandeau « Votre appareil n’est pas dans la liste ? »** — il met désormais en avant Matter et les **intégrations externes** de la communauté : « chacun peut en créer une et la publier dans le store, elle apparaît alors dans cette liste »,

**2. Dépréciation annoncée de Tuya, MELCloud, Telegram et Netatmo** — j’ai fait les deux pour que ce soit sans ambiguïté :

 ![Capture d’écran 2026-07-23 à 16.37.25](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/9/2/92135c14eb073116751826b64b87208716529af4.png)

- un badge rouge « Bientôt dépréciée » sur leur carte du catalogue (flag `deprecated` dans les JSON d’intégrations, rendu dans `IntegrationTags`) ;
- une alerte en haut de la page de chacune des quatre intégrations (composant partagé `DeprecationWarning`) : « sera bientôt dépréciée au profit d’une intégration externe équivalente… les deux versions vont co-exister dans le catalogue pendant la transition — vous pouvez continuer à utiliser celle-ci pour le moment ».

**3. Erreurs d’authentification au redémarrage (close code 4000)** — diagnostic confirmé, et c’était même pire que ça : sans variable d’env `JWT_SECRET`, le secret est régénéré à _chaque_ boot de Gladys, et comme `start()` redémarrait le conteneur existant avec le token JWT figé dans son env (signé avec l’ancien secret), l’intégration bouclait sur le refus **sans jamais se réparer**. Deux corrections :

- le superviseur signe désormais les JWT d’intégration avec **son propre secret, généré une fois et persisté** en variable (`EXTERNAL_INTEGRATION_JWT_SECRET`) — il survit aux redémarrages et aux restaurations de sauvegarde, en cohérence avec les conteneurs qu’il valide ;
- **auto-réparation dans `start()`** : avant de redémarrer un conteneur existant, `verifyContainerToken` inspecte le token de son env (signature avec le secret courant + bon service + bonne `token_version`) ; s’il est périmé, le conteneur est recréé avec un token frais au lieu d’être redémarré pour rien. Ça répare aussi, dès le prochain boot, les conteneurs créés avant ce correctif.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 23, 2026, 2:51 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/105 "2026-07-23T14:51:17Z")

</div>

Voilà la simplicité de créer une intégration 😂

 ![Capture d’écran 2026-07-23 à 16.50.32](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/b/d/bd678de848453e757eb98bebe7f7f24dbc21c20d.png)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 23, 2026, 3:31 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/106 "2026-07-23T15:31:44Z")

</div>

Pour info @cicoub13 @Terdious @Lokkye :

```auto
[
  {
    "store_slug": "callemand/gladys-airzone-cloud",
    "level": "error",
    "reason": "docker_image: image is not publicly pullable (registry auth denied, HTTP 403)",
    "checked_at": "2026-07-23T15:30:08.198Z"
  },
  {
    "store_slug": "cicoub13/gladys-tp-link",
    "level": "error",
    "reason": "docs/en.md: file not found — user documentation is mandatory",
    "checked_at": "2026-07-23T15:30:08.198Z"
  },
  {
    "store_slug": "Terdious/gladys-netatmo",
    "level": "error",
    "reason": "docs/en.md: file not found — user documentation is mandatory",
    "checked_at": "2026-07-23T15:30:08.198Z"
  },
  {
    "store_slug": "Terdious/gladys-tuya",
    "level": "error",
    "reason": "docs/en.md: file not found — user documentation is mandatory",
    "checked_at": "2026-07-23T15:30:08.198Z"
  }
]

```

Source: [https://integration-store-storage.gladysassistant.com/rejected.json](https://integration-store-storage.gladysassistant.com/rejected.json)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 23, 2026, 3:55 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/107 "2026-07-23T15:55:00Z")

</div>

La documentation est désormais affichée dans l’interface :

 ![Capture d’écran 2026-07-23 à 17.54.20](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/d/6/d69bc022b754ce85364023895a1c20aa81e30563.png)

Si je clique sur «&nbsp;Documentation&nbsp;» :

 ![Capture d’écran 2026-07-23 à 17.54.24](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/6/9/69cb8aa1f2632a808f7c7763a1d8b64e2586c01f.png)

---

<div class="post-metadata">

**Author:** ![Terdious](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/terdious/32/6316_2.png) [@Terdious](https://community.gladysassistant.com/u/Terdious)\
**Post date:** [Juillet 24, 2026, 5:49 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/108 "2026-07-24T05:49:45Z")

</div>

Je dois dire que je suis impressionné de la vitesse de déploiementr de ce nouveau système, du nombre d’intégrations déjà disponible et de la simplicité à tous les niveaux :

- Développement,
- Déploiement,
- Mise à jour,
- Intégration des devices.

Bien sûr, cela aurait été impossible a une telle cadence sans l’IA. Mais décisionnaire (@pierre-gilles) et prompteurs y sont pour beaucoup !!

Les prochains mois sont très prometteurs de ce côté ^^

---

<div class="post-metadata">

**Author:** ![ArMour85](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/armour85/32/7457_2.png) [@ArMour85](https://community.gladysassistant.com/u/ArMour85)\
**Post date:** [Juillet 24, 2026, 11:36 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/109 "2026-07-24T11:36:04Z")

</div>

@pierre-gilles comment ça se passe pour la sauvegarde des intégrations externe si on veut migrer de PC par exemple ?

---

<div class="post-metadata">

**Author:** ![Will\_71](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/will_71/32/9582_2.png) [@Will\_71](https://community.gladysassistant.com/u/Will_71)\
**Post date:** [Juillet 24, 2026, 8:30 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/110 "2026-07-24T20:30:13Z")

</div>

![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/9/3/93a55fa0aea390289168769639e616254214249c.png)

Comment gérer les cas ci-dessus quand il n’y a pas de données à sauvegarder, du coup le bouton «&nbsp;Enregistrer la configuration&nbsp;» ne sert à rien

---

<div class="post-metadata">

**Author:** ![ArMour85](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/armour85/32/7457_2.png) [@ArMour85](https://community.gladysassistant.com/u/ArMour85)\
**Post date:** [Juillet 25, 2026, 8:24 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/111 "2026-07-25T08:24:24Z")

</div>

Je rajouterai aussi des préconisations sur le choix des images Docker pour éviter l’utilisation de grosses images. Préférence pour Alpine qui est ultra léger et très utilisé pour notre cas.

Cela m’amène une autre question. Est ce que Gladys ne devrait pas également vérifier si l’image utilisée n’est pas trop vieille ou sujet à des failles de sécurité ? Juste une information avant d’installer l’intégration.  
On peut également rajouter la taille de l’image en plus.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 27, 2026, 11:03 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/112 "2026-07-27T11:03:13Z")

</div>

Merci @Terdious pour tous tes développements, effectivement je suis moi aussi très impressionné par la vitesse de développement qu’on peut avoir, c’est fou ça va révolutionner le projet 🙂

Ce week-end, j’étais dans la montagne sans réseau, et pourtant 13 intégrations ont pu être publiées sur le store, impensable dans l’ancien système d’intégrations ^^

C’est cool, on va commencer avec un store déjà rempli !

> [@ArMour85](#):
>
> @pierre-gilles comment ça se passe pour la sauvegarde des intégrations externe si on veut migrer de PC par exemple ?

Les installations seront ré-installées automatiquement, car toutes les données sont stockée en base uniquement 🙂

Voici le déroulé exact expliqué par Claude :

**Ce qui est dans la sauvegarde.** Le backup Gladys Plus est un tar.gz contenant la base SQLite (+ le dossier DuckDB) — et tout ce qui définit une intégration externe est en base : la ligne `t_service` (image Docker, manifeste, `store_slug`, version, `token_version`, statut), la configuration (variables scopées au service, y compris les secrets et tokens OAuth), les appareils, les classes matérielles accordées, les profils de contact, et le secret JWT du superviseur (`EXTERNAL_INTEGRATION_JWT_SECRET`, persisté en variable justement pour survivre aux restaurations).

**Ce qui se passe au démarrage sur la nouvelle machine.**

1. `init()` réconcilie les conteneurs par label Docker — le commentaire du code cite précisément le cas restauration : les `container_id` en base sont obsolètes ; comme aucun conteneur n’existe sur le nouveau PC, ils sont remis à `null` (`externalIntegration.init.js:70-84`).
2. Les intégrations démarrent ensuite par le cycle de vie standard des services. Dans `start()`, pas de `container_id` → `createIntegrationContainer` : l’image Docker est **re-téléchargée depuis le registre** , un conteneur neuf est créé avec un JWT fraîchement signé (valide, puisque le secret et le `token_version` viennent de la base restaurée), le réseau privé et les sous-conteneurs sont recréés, et la config est repoussée à l’intégration à la connexion.
3. La règle « STOPPED = ignoré au boot » s’applique comme pour les services internes : une intégration arrêtée avant la sauvegarde reste arrêtée, sans être désinstallée.

**Les deux limites à connaître.**

- Il faut évidemment Docker et du réseau sur la nouvelle machine : les images ne sont pas dans le backup, elles sont re-pullées (une intégration passerait en ERROR si le registre est injoignable, et redémarrable ensuite).
- **Le dossier `/data` n’est pas sauvegardé.** Chaque intégration a un bind `<base>/external-integrations/<selector>` → `/data` (et les volumes des sous-conteneurs vivent dessous). La doctrine veut que les intégrations soient sans état (les états vivent dans Gladys), donc en pratique ça ne devrait rien casser — mais une intégration qui y stocke un état local (ou un sous-conteneur type broker avec persistance) repart de zéro. Si on veut couvrir ça un jour, il faudrait inclure ce dossier dans le backup, avec la question de la taille à trancher.

> [@Will\_71](#):
>
> Comment gérer les cas ci-dessus quand il n’y a pas de données à sauvegarder, du coup le bouton « Enregistrer la configuration » ne sert à rien

Bien vu ! je corrige.

> [@ArMour85](#):
>
> Je rajouterai aussi des préconisations sur le choix des images Docker pour éviter l’utilisation de grosses images. Préférence pour Alpine qui est ultra léger et très utilisé pour notre cas.

C’est le cas du template par défaut, je préconise l’image Node-Alpine qui est super légère 🙂

> [@ArMour85](#):
>
> Est ce que Gladys ne devrait pas également vérifier si l’image utilisée n’est pas trop vieille ou sujet à des failles de sécurité ? Juste une information avant d’installer l’intégration.  
> On peut également rajouter la taille de l’image en plus.

Je pense que, pour une V1, la proposition actuelle est suffisante.

Si un utilisateur est suffisamment à l’aise techniquement pour chercher ce type d’informations, il les retrouvera déjà sur le dépôt GitHub de l’intégration, qui est référencé.

Je pense aussi qu’il faut éviter d’entrer dans des détails trop techniques. L’objectif de Gladys est de proposer un produit propre, accessible au grand public, avec le moins de jargon possible.

Les intégrations externes ont justement été conçues pour être transparentes : l’utilisateur n’a quasiment pas conscience qu’un conteneur externe est en cours d’exécution. L’expérience est volontairement très proche de celle des intégrations natives de Gladys aujourd’hui 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 27, 2026, 6:36 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/113 "2026-07-27T18:36:46Z")

</div>

J’avance très vite aujourd’hui ! 🎉

J’ai déjà mergé sur la branche `master` du dépôt Gladys :

- La spécification technique du développement.
- L’ensemble de l’implémentation.

J’ai ensuite publié une nouvelle image de développement :

```auto
gladysassistant/gladys:dev

```

Je l’ai déployée sur mon instance de production. J’ai déjà migré mon intégration MelCloud vers le nouveau système et je suis en train de faire la même chose pour Telegram.

L’objectif est de valider tout ça en conditions réelles pendant quelques jours. Si tout se passe bien, la fonctionnalité sera publiée dans la semaine.

Je suis assez confiant, pour l’instant ça part très bien !

---

<div class="post-metadata">

**Author:** ![ProtZ](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/protz/32/1641_2.png) [@ProtZ](https://community.gladysassistant.com/u/ProtZ)\
**Post date:** [Juillet 28, 2026, 9:40 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/114 "2026-07-28T09:40:00Z")

</div>

![guy-getting-increasingly-mind-blown - gladys](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/0/1/017c82fac6fb90ae0fd6cf4c92bdf69f85b4dfc1.jpeg)

Je suis très en retard, ça fait 15j que j’étais pas trop dispo … j’en ai pour un moment à rattraper tout ça (ne serait-ce que ce thread), vous êtes des oufs (dans le bon sens du terme)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 28, 2026, 10:22 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/115 "2026-07-28T10:22:19Z")

</div>

😂😂 je vais partager cette image sur X

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 28, 2026, 6:23 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/116 "2026-07-28T18:23:15Z")

</div>

Bon, je suis super content des intégrations externes chez moi !!

Je penses que je vais partir sur une release jeudi soir ! 🔥

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 28, 2026, 6:38 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/117 "2026-07-28T18:38:39Z")

</div>

Hop la documentation est adaptée pour afficher le catalogue sur le site !

 ![Capture d’écran 2026-07-28 à 20.37.52](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/b/b/bb0049ae3fc7e7a6b79246f2f135b33b8ab09da2.jpeg)

Sur cette page :

> **[Catalogue des intégrations externes | Gladys Assistant](https://claude-external-integrations.v4-website.pages.dev/fr/docs/integrations/external/)**
>
> Parcourez toutes les intégrations externes communautaires de Gladys Assistant : des intégrations empaquetées en Docker et publiées sur GitHub, installables en un clic depuis le catalogue de Gladys.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 29, 2026, 5:58 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/118 "2026-07-29T17:58:12Z")

</div>

Déjà **20 intégrations externes**! 🤯

Quand on sait qu’on n’a eu que 36 intégrations internes en 6 ans de Gladys v4, c’est déjà un rythme incroyable. Et je pense que ça ne fera que s’accélérer à mesure qu’on convaincra de nouveaux développeurs de contribuer.

Je crois qu’on tient vraiment quelque chose !! 😄

Release DEMAIN SOIR 🔥

---

<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:** [Juillet 29, 2026, 8:29 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/119 "2026-07-29T20:29:42Z")

</div>

> [@pierre-gilles](#):
>
> Release DEMAIN SOIR 🔥

🤩 bon je n’ai pas pu m’empêcher de lire la release note 4.84.0 sur le blog et c’est de la balle 😬

Petite question pour les intégrations internes, qui existent maintenant en externe, et qui continuent en parallèle : est-ce qu’il y a/aura un outil de «&nbsp;bascule automatique&nbsp;» de l’interne vers l’externe ?  
Par exemple avec Telegram, mes infos sont sur l’interne, je clique un bouton et tout passe sur l’externe et me désactive l’interne ? (oh que oui je suis fainéant !! 🤣)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juillet 30, 2026, 6:02 UTC](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343/120 "2026-07-30T06:02:45Z")

</div>

Salut @mutmut ! Merci pour ton message !! 😄

Non, il n’y a pas de bascule automatique. Mais je te rassure, c’est vraiment très simple :

Tu vas dans l’intégration Telegram actuelle, tu copies ton token, tu désactives l’intégration, puis tu installes la nouvelle intégration externe, tu colles ton token et tu suis le processus d’appairage. 😊

J’avoue que je préfère que vous (les power users de Gladys) passiez par le processus d’installation “classique” que suivront ensuite tous les utilisateurs. Ça nous permettra d’avoir de vrais retours d’expérience sur l’installation des intégrations externes et d’améliorer le parcours si besoin. 😄

[Page précédente](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343.md?page=5)

[Page suivante](https://community.gladysassistant.com/t/integrations-externes-dans-gladys-assistant/10343.md?page=7)
