Intégration domotique NetBird, gratuite et open source

Les pairs de votre réseau NetBird : connecté, dernière vue, IP, version, expiration.
Les pairs de votre réseau NetBird dans Gladys, par l'API REST de son serveur de gestion (NetBird Cloud ou votre propre serveur) :
- chaque pair devient un appareil Gladys : connecté, dernière vue, IP NetBird, version du client, connexion expirée et expiration de la connexion (la date de fin de sa session de connexion) ;
- le réseau devient un appareil avec ses pairs connectés et ses pairs au total ;
- trois déclencheurs de scène : Pair connecté, Pair déconnecté et Connexion d'un pair expirée ;
- un widget de tableau de bord, Clients NetBird : les clients (pairs) connectés avec leur IP NetBird, les déconnectés avec leur dernière connexion.
Lecture seule : Gladys ne change jamais rien dans NetBird (aucun pair supprimé, aucune règle ni aucun groupe modifié).
Cette intégration n'a jamais été testée avec un vrai compte NetBird. Cette première version a été écrite d'après la référence publique de l'API NetBird (docs.netbird.io/api) et testée seulement contre un faux NetBird. Dites sur le forum Gladys ce qui marche et ce qui ne marche pas.
Intégration non officielle, sans lien avec NetBird.
Avant de commencer : un jeton qui ne fait que lire
- Dans le tableau de bord NetBird, ouvrez Team → Service Users et créez
un utilisateur de service
gladysau rôle Auditor : il lit tous les pairs et ne change rien (un utilisateur de service n'est pas une personne : son jeton ne cesse pas de marcher quand quelqu'un part). Si le rôle Auditor n'est pas proposé, prenez le rôle User : un utilisateur de service lit tous les pairs et les réglages du compte quel que soit son rôle, et au rôle User il ne peut rien changer. Jamais Admin : Gladys ne fait que lire, le jeton n'a besoin d'aucun droit de modification. - Ouvrez l'utilisateur, Create Token, nommez-le
gladys, choisissez une expiration et copiez le jeton (il commence parnbp_) : NetBird ne l'affiche qu'une fois. - Pas le jeton personnel d'un utilisateur ordinaire au rôle User : un tel jeton ne liste que les pairs enregistrés par cet utilisateur, et aucun quand le compte restreint le tableau de bord des utilisateurs ordinaires (« Restrict dashboard for regular users »). Quand l'intégration peut le savoir, l'état de connexion le signale. Un utilisateur de service n'a pas cette limite.
- Les dates d'expiration des pairs (expiration de la connexion) viennent des réglages du compte : un jeton qui ne peut pas les lire laisse ces dates vides, le reste marche.
Configuration
- Serveur de gestion : vide pour NetBird Cloud (son API est
https://api.netbird.io; l'adresse du tableau de bordapp.netbird.ioest lue ainsi). Auto-hébergé : l'adresse https de votre serveur, celle du tableau de bord (https://netbird.example.org; un port et un chemin sont gardés, un/apifinal est retiré).http://est refusé : le jeton traverserait le réseau en clair. - Jeton d'accès personnel : gardé par Gladys dans sa base, jamais
réaffiché, envoyé seulement au serveur de gestion NetBird, dans l'en-tête
Authorization: Token …(jamais dans une adresse, jamais dans un journal, jamais dans le volume/data). Collez le jeton seul : une espace ou un caractère invisible copié avec lui est refusé avec un message clair. - Empreinte du certificat (facultatif, auto-hébergé seulement) : par
défaut le certificat du serveur doit venir d'une autorité reconnue
(NetBird Cloud, Let's Encrypt). Un serveur avec son propre certificat :
saisissez son empreinte SHA-256 ; ce certificat, et aucun autre, est alors
accepté, vérifié avant l'envoi du jeton. Après un renouvellement,
saisissez la nouvelle. Pour la lire : votre navigateur (cadenas,
certificat, empreinte SHA-256) ou
openssl s_client -connect netbird.example.org:443 </dev/null | openssl x509 -noout -fingerprint -sha256. - Groupes (facultatif) : noms ou identifiants de groupes NetBird, séparés par des virgules. Seuls leurs pairs deviennent des appareils et sont comptés. Vide : tous les pairs que voit le jeton.
- Rafraîchissement : toutes les minutes (par défaut) à toutes les 10
minutes. Une requête par lecture (les pairs), plus les réglages du compte
une fois par heure, et l'utilisateur du jeton (
/api/users/current) au démarrage et à chaque nouvel essai après une erreur. Un utilisateur de service y reçoit un 403 : c'est attendu et ignoré.
Ouvrez ensuite l'onglet Découverte et créez les pairs et le réseau à suivre. Seuls les appareils créés reçoivent leurs états.
Ce que montre chaque fonction
- Connecté (1 / 0) : ce que NetBird dit du pair en ce moment. Rien n'est publié tant que NetBird ne le dit pas.
- Dernière vue : la dernière connexion du pair au serveur de gestion
(ou son dernier changement d'état là-bas), sous la forme
2026-10-17 08:00 UTC(en UTC, le fuseau de NetBird). Elle peut ne pas bouger tant que le pair reste connecté. - IP NetBird : l'adresse du pair dans le réseau NetBird (
100.x.y.z). Son adresse publique n'est jamais lue dans Gladys. - Version du client : la version du client NetBird du pair. L'API ne dit pas si une mise à jour existe : pas de fonction « mise à jour disponible » dans cette version.
- Connexion expirée (1 / 0) : la session de connexion du pair a expiré ;
quelqu'un doit s'y reconnecter (
netbird up). Seuls les pairs ajoutés par une connexion SSO expirent ; ceux ajoutés par une clé d'installation jamais. - Expiration de la connexion : la date de fin de session (dernière
connexion plus l'expiration du compte),
—quand elle n'expire jamais, rien tant qu'elle ne peut pas être connue (un jeton qui ne peut pas lire les réglages du compte). - Pairs connectés / Pairs (appareil réseau) : les comptes des pairs du filtre de groupes (tous, sans filtre), y compris ceux au-delà des 500 qui deviennent des appareils.
- Gladys accepte 300 états par minute d'une intégration : celle-ci en envoie 250 au plus, les comptes d'abord, puis connecté, puis connexion expirée, puis les textes (à tour de rôle). Avec beaucoup de pairs créés d'un coup, les premières valeurs arrivent en quelques minutes.
Déclencheurs de scène
- Pair connecté : un pair déconnecté est de nouveau connecté.
- Pair déconnecté : un pair connecté est déconnecté.
- Connexion d'un pair expirée : la session de connexion d'un pair vient d'expirer.
Chacun porte le pair (filtre : un pair, ou tous), son nom et son IP NetBird. Ils partent à la lecture qui suit le changement (jusqu'à l'intervalle de rafraîchissement plus tard), une fois par changement. Jamais à la première lecture après un démarrage de l'intégration, ni à la première lecture après une panne (quand NetBird n'a pas pu être lu, les changements entre-temps sont inconnus). Un nouveau pair ne déclenche rien. 30 événements au plus par lecture.
Widget « Clients NetBird »
Sur le tableau de bord, modifiez, ajoutez une boîte, choisissez Clients NetBird (Gladys 5.1.0 ou plus récent). Il montre, d'après la dernière lecture de l'intégration (il n'envoie aucune requête à lui seul) :
- des tuiles : clients connectés, déconnectés, au total, et, quand il y en a, les clients dont NetBird ne donne pas l'état (Inconnus, jamais en rouge) et ceux dont la connexion a expiré ;
- une liste (8 lignes au plus), une ligne par client : son nom, un badge en ligne / hors ligne / conn. expirée / inconnu, et son IP NetBird et son nom DNS, ou, pour un client déconnecté, la date de sa dernière connexion (affichée par le tableau de bord dans votre fuseau horaire). Touchez une ligne pour le détail : IP et nom DNS, dernière connexion, système, version NetBird, groupes, expiration de la connexion. Les clients connectés d'abord, par nom, puis les déconnectés, le plus récemment vu d'abord, puis les inconnus ;
- un état : si NetBird répond, l'heure de la dernière lecture (en UTC), les clients surveillés hors ligne ou introuvables ;
- « +N autres » quand la liste ne tient pas tous les clients.
Réglages de la boîte :
- Clients listés : tous (par défaut), connectés ou déconnectés (un client sans état n'est listé que sous « tous »). Les compteurs couvrent toujours tous les clients des groupes de la boîte.
- Groupes (facultatif) : noms ou identifiants de groupes NetBird, séparés par des virgules, parmi les clients que suit l'intégration. 100 caractères au plus (une limite de Gladys pour les réglages de widget).
- Clients à surveiller (facultatif) : des clients qui doivent rester connectés (un serveur, un NAS). Quand l'un est déconnecté, la tuile « Déconnectés » et son badge passent au rouge et l'état le nomme (« Surveillé, hors ligne »). Un client surveillé absent de la lecture (supprimé dans NetBird, réenregistré sous un nouvel identifiant, hors du filtre de groupes de l'intégration) est nommé en rouge aussi (« Surveillé, introuvable »). Seuls les clients créés comme appareils peuvent être choisis. Si vous supprimez l'appareil Gladys d'un client surveillé, la boîte affiche une erreur (Gladys refuse un réglage qui nomme un appareil disparu) : modifiez la boîte et enregistrez-la de nouveau sans ce client.
- Lignes affichées : 3, 5 ou 8.
- Page : 1 par défaut. Plus de 8 clients ? Ajoutez une seconde boîte en page 2.
Exemple (capture texte, tableau de bord en français, heures de Paris) :
[ Connectés 2 ] [ Déconnectés 1 ] [ Total 3 ]
NAS 100.92.10.1 · nas.netbird.cloud (en ligne)
Phone 100.92.10.3 · phone.netbird.cloud (en ligne)
Laptop 16/10/2026 23:30 (hors ligne)
● NetBird : répond
● Dernière lecture : 2026-10-17 08:00 UTC
Avec Clients à surveiller = NAS, pendant qu'il est déconnecté :
[ Connectés 1 ] [ Déconnectés 2 (rouge) ] [ Total 3 ]
...
● Surveillé, hors ligne : NAS (rouge)
NetBird répond mais aucun client n'est dans la vue (groupes de la boîte ou de l'intégration) :
[ Connectés 0 ] [ Déconnectés 0 ] [ Total 0 ]
NetBird répond, mais aucun client n'est dans cette vue (groupes du widget ou de l'intégration).
● NetBird : répond
● Dernière lecture : 2026-10-17 08:00 UTC
Quand NetBird ne répond pas (ou pendant une pause, ou la première lecture après un redémarrage), la même vue vide dit « Aucun client dans cette vue (dernière lecture). »
Une fois quelque chose lu, le widget continue de montrer la dernière lecture (les IP NetBird changent rarement), et ses couleurs disent sa fraîcheur : tuiles et état en rouge quand NetBird ne répond pas (« sans réponse »), en orange pendant une pause demandée par NetBird (HTTP 429 ou erreur serveur 5xx), en bleu pendant la première lecture après un redémarrage ; les badges des lignes passent alors en gris (ils disent ce qui a été lu). Avec un jeton refusé ou une configuration à corriger, ou avant toute lecture avec ce serveur, ces groupes et ce jeton, il affiche un court texte à la place des clients : un nouveau jeton (un autre compte) ne montre jamais les clients du précédent. Il est relu à l'intervalle de rafraîchissement, et tout de suite quand un client se connecte, se déconnecte, expire, se reconnecte, est ajouté, renommé ou retiré, ou quand NetBird tombe ou répond de nouveau (une relance toutes les 10 secondes au plus). Il n'affiche jamais le jeton, l'adresse du serveur, l'IP publique ni la localisation d'un client.
Problèmes de connexion
- Jeton refusé (HTTP 401, ou 403 répondu par l'API NetBird elle-même,
sur la liste des pairs : faux, expiré, révoqué, ou sans le droit de lister
les pairs) : Gladys s'arrête et ne réessaie pas seul, même après un
redémarrage ou quand Gladys se reconnecte. Créez un nouveau jeton (un
utilisateur de service au rôle Auditor), collez-le et enregistrez la
configuration : seul l'enregistrement réessaie. Une page 403 qui ne vient
pas de l'API (un proxy ou un pare-feu devant elle) est réessayée
normalement. Un refus sur l'utilisateur du jeton (
/api/users/current, toujours 403 pour un utilisateur de service) n'arrête jamais rien. - NetBird surchargé (HTTP 429) ou erreur serveur (HTTP 5xx) : toutes
les requêtes sont suspendues, tant que NetBird le demande (Retry-After)
entre 1 minute et 6 heures, jamais moins que l'intervalle de
rafraîchissement. La pause est gardée dans
/data: un redémarrage, une reconnexion de Gladys ou une configuration enregistrée attendent aussi. - NetBird injoignable (réseau, délai, certificat) : nouvel essai après l'intervalle de rafraîchissement (une minute au moins), puis le délai double jusqu'à 30 minutes ; les appareils apparaissent injoignables entre-temps. L'intégration n'abandonne jamais.
- Certificat refusé ou changé : rien n'est envoyé. Installez un certificat d'une autorité reconnue, ou saisissez (de nouveau) l'empreinte du serveur.
- Tester la connexion relit les pairs et indique combien sont connectés ; il ne réessaie jamais un jeton refusé et n'abrège jamais une pause.
Limites
- Un compte NetBird par intégration ; 500 pairs au plus deviennent des appareils (resserrez le filtre de groupes au-delà ; les comptes les incluent tous, mais pas ceux du widget, qui ne voit que les 500 suivis).
- Un pair supprimé dans NetBird puis réenregistré reçoit un nouvel identifiant NetBird : il devient un nouvel appareil (l'ancien reste sans valeurs).
- L'appareil réseau est unique par intégration (
network:main) : diriger l'intégration vers un autre compte garde le même appareil. - Lecture seule dans cette version : aucune commande (supprimer un pair, changer une règle).
- Pas testée avec NetBird Cloud ni avec un serveur auto-hébergé, ni avec les différents rôles de NetBird : voir TODO.md dans le dépôt.
Paramètres de configuration
Voici les paramètres demandés par NetBird dans son écran de configuration dans Gladys.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| Fonctionnement | section | Non | Gladys lit votre réseau NetBird par l'API REST de son serveur de gestion (NetBird Cloud ou votre propre serveur), avec un jeton d'accès personnel. Chaque pair devient un appareil Gladys (onglet Découverte) : connecté, dernière vue, IP NetBird, version du client, connexion expirée et date d'expiration ; le réseau devient un appareil avec ses pairs connectés et au total. Lecture seule : Gladys ne change jamais rien dans NetBird. Utilisez le jeton d'un utilisateur de service au rôle Auditor (il lit tous les pairs et ne change rien ; à défaut le rôle User, jamais Admin) : le jeton personnel d'un utilisateur ordinaire au rôle User ne liste que ses pairs, souvent aucun (voir la documentation). Intégration non officielle, sans lien avec NetBird. |
| Serveur de gestion (vide : NetBird Cloud) | string | Non | Laissez vide pour NetBird Cloud (son API est https://api.netbird.io ; l'adresse du tableau de bord app.netbird.io est lue ainsi). Auto-hébergé : l'adresse https de votre serveur, celle du tableau de bord (ex. https://netbird.example.org), sans /api. http:// est refusé : le jeton traverserait le réseau en clair. |
| Jeton d'accès personnel | secret | Oui | Dans le tableau de bord NetBird : Team, Service Users (ou Users), l'utilisateur, Create Token. Gardé par Gladys dans sa base, jamais réaffiché, envoyé seulement au serveur de gestion NetBird, dans l'en-tête Authorization. |
| Certificat | section | Non | Par défaut le certificat du serveur de gestion doit venir d'une autorité reconnue (NetBird Cloud, Let's Encrypt). Un serveur auto-hébergé avec son propre certificat : saisissez son empreinte SHA-256 ci-dessous. Ce certificat, et aucun autre, est alors accepté, vérifié avant l'envoi du jeton. Laissez vide pour NetBird Cloud. |
| Empreinte du certificat (SHA-256, facultatif) | string | Non | Épingle ce certificat : le serveur doit présenter exactement celui-ci, même après un renouvellement (saisissez alors le nouveau). Affichée par votre navigateur (détails du certificat) ou par openssl (voir la documentation). |
| Groupes (facultatif) | string | Non | Noms ou identifiants des groupes NetBird à suivre, séparés par des virgules : seuls leurs pairs deviennent des appareils et sont comptés. Vide : tous les pairs que voit le jeton. |
| Rafraîchissement | select | Oui | Fréquence de lecture des pairs (une requête à chaque fois). Les déclencheurs de scène démarrent jusqu'à ce délai après le changement. |
Comment installer NetBird dans Gladys
- Dans Gladys, ouvrez Intégrations : NetBird apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
- Cliquez sur Installer. Gladys télécharge l'image Docker (
ghcr.io/lm1lc3n7/gladys-netbird:0.1.3), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration). - Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
- Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/LM1LC3N7/gladys-netbird.
NetBird nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.
Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.
À propos des intégrations externes
NetBird est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par LM1LC3N7, et non par l'équipe cœur de Gladys.
- Parcourir toutes les intégrations, natives et communautaires
- Créer et publier votre propre intégration externe
- Code source sur GitHub — source de cette documentation