Tailscale Smart-Home-Integration, kostenlos und Open Source

Überwache die Geräte deines Tailscale-Netzes: Verbindung, Updates und Schlüssel.
Diese Integration verbindet Gladys mit deinem Tailscale-Netz (deinem „Tailnet“): Jedes Gerät des Tailnets — ein Server, ein NAS, ein Handy, ein Subnet-Router — wird zu einem Gladys-Gerät, das zeigt, ob es online ist, ob ein Tailscale-Update wartet und wann sein Schlüssel abläuft.
Sie liest das Tailnet über die Tailscale-API in der Cloud
(api.tailscale.com). Auf deinen Geräten muss nichts installiert werden, und
Gladys selbst muss nicht im Tailnet sein.
Erfordert Gladys 5.1 oder neuer.
Bevor du beginnst
Du musst Administrator des Tailnets sein (Rolle Owner, Admin oder IT admin), um die folgenden Zugangsdaten zu erstellen.
Die Integration meldet sich mit einer dieser Methoden an:
| Methode | Wo erstellen | Ablauf |
|---|---|---|
| API-Zugriffstoken | Settings → Keys | nach 1 bis 90 Tagen |
| OAuth-Client | Settings → OAuth clients | nie (empfohlen) |
API-Zugriffstoken
- Öffne Settings → Keys in der Tailscale-Admin-Konsole.
- Klicke unter API access tokens auf Generate access token, gib eine Beschreibung („Gladys“) und eine Gültigkeitsdauer an.
- Kopiere das Token (
tskey-api-…): Tailscale zeigt es nur einmal an.
Wenn das Token abläuft, zeigt die Integration „Tailscale lehnt die Zugangsdaten ab“ und die Geräte werden nicht erreichbar: Erstelle ein neues und füge es in der Konfiguration ein.
OAuth-Client (empfohlen)
Ein OAuth-Client läuft nie ab, und du legst genau fest, was er darf.
- Öffne Settings → OAuth clients.
- Klicke auf Generate OAuth client.
- Aktiviere den Bereich Devices → Core:
- Read reicht, um die Geräte zu überwachen;
- Write wird zusätzlich gebraucht, um den Schlüsselablauf eines Geräts aus Gladys ein- oder auszuschalten.
- Kopiere die Client ID und das Client secret (
tskey-client-…): Das Secret wird nur einmal angezeigt.
Konfiguration
- Öffne den Tab Konfiguration der Integration.
- Wähle die Anmeldemethode und fülle ihre Felder aus:
- API-Zugriffstoken: Füge es in API-Zugriffstoken ein;
- OAuth-Client: Füge Client-ID des OAuth-Clients und Secret des OAuth-Clients ein.
- Tailnet: Lass
-stehen, das Tailnet der Zugangsdaten. Ändere es nur, wenn dein Token mehrere Tailnets erreicht: Trage die Tailnet-ID aus Settings → General der Admin-Konsole ein. - Aktualisierungsintervall: Wie oft das Tailnet gelesen wird, standardmäßig alle 60 Sekunden (mindestens 30 Sekunden). Jede Abfrage ist eine einzige Anfrage, egal wie viele Geräte es gibt.
- Warnung vor Schlüsselablauf: Wie viele Tage vor dem Ablauf eines Schlüssels das Gerät markiert wird (standardmäßig 14).
- Mit dir geteilte Geräte einbeziehen: Geräte, die ein anderes Tailnet mit deinem teilt, sind standardmäßig ausgeblendet, da du sie nicht verwaltest.
- Speichere und klicke dann auf Verbindung testen: Die Meldung sagt, wie viele Geräte die Integration sieht.
- Öffne den Tab Entdecken und füge die Geräte hinzu, die du verfolgen möchtest.
Was du bekommst
Jedes Gerät wird zu einem Gladys-Gerät mit vier Funktionen:
| Funktion | Bedeutung |
|---|---|
| Online | Das Gerät ist gerade mit dem Tailnet verbunden |
| Update available | Für dieses Gerät gibt es eine neuere Tailscale-Version |
| Key expiry | Verbleibende Tage bis zum Ablauf seines Schlüssels (nicht aktualisiert, solange er nie abläuft) |
| Key expiry disabled | Der Schalter des Menüs Disable key expiry der Admin-Konsole — du kannst ihn ändern |
Key expiry disabled in Gladys einzuschalten entspricht Disable key expiry in der Admin-Konsole: Das Gerät muss sich nie wieder anmelden. Dafür braucht es ein API-Zugriffstoken oder einen OAuth-Client mit dem Bereich Devices → Core: Write.
Jedes Gerät trägt ein Cloud-Abzeichen, solange die Tailscale-API antwortet, und nicht erreichbar, wenn nicht: Die angezeigten Werte sind dann die zuletzt gelesenen.
Die Geräte werden über ihre Tailscale-ID erkannt: Ein in der Admin-Konsole umbenanntes Gerät behält sein Gladys-Gerät und seinen Verlauf.
Szenen
Die Integration fügt dem Szenen-Editor eigene Karten in der Kategorie Integrationen hinzu.
Auslöser
- Gerät online oder offline — ein Gerät hat sich mit dem Tailnet verbunden
oder getrennt. Wähle bei Bedarf das Gerät und den neuen Zustand; leer
gelassen passt jedes Gerät und jede Änderung. Variablen:
device_name,state(onlineoderoffline),ip,last_seen. - Neues Gerät im Tailnet — ein Gerät ist dem Tailnet beigetreten. Filtere
nach Freigabe, um nur über Geräte informiert zu werden, die auf Freigabe
warten (wenn die Gerätefreigabe aktiv ist). Variablen:
device_name,authorization(authorizedoderpending),os,user,ip. - Tailscale-Update verfügbar — für ein Gerät ist eine neuere
Tailscale-Version verfügbar. Variablen:
device_name,client_version. - Schlüssel läuft bald ab — der Schlüssel eines Geräts tritt in die
Warnfrist der Konfiguration ein. Variablen:
device_name,days_left,expires.
Die folgenden Aktionen der Szene lesen eine Variable als
{{triggerEvent.data.device_name}}.
Jeder Auslöser feuert einmal pro Änderung, sobald die Integration sie bemerkt (im Aktualisierungsintervall). Der Start der Integration löst nichts aus: Sie nimmt zuerst den aktuellen Zustand des Tailnets auf.
Beispiel: Wenn ein Gerät offline geht, schicke mir die Nachricht „{{triggerEvent.data.device_name}} ist offline“.
Aktionen
- Tailnet aktualisieren — liest sofort alle Geräte. Gibt
machine_count,online_countundoffline_countzurück. - Gerätestatus lesen — gibt
name,online,ip,last_seen,os,client_version,update_available,key_expiry_disabledundkey_expiry_days(-1, wenn der Schlüssel nie abläuft) für die folgenden Bedingungen und Nachrichten zurück. - Schlüsselablauf ändern — schaltet den Schlüsselablauf eines Geräts aus
oder wieder ein. Gibt
key_expiry_disabledzurück.
Dashboard
Füge das Widget Tailscale-Netz zu einem Dashboard hinzu. Es zeigt:
- wie viele Geräte online und offline sind;
- ob die API antwortet, wann das Tailnet zuletzt gelesen wurde, wie viele Geräte ein wartendes Update, einen bald ablaufenden Schlüssel haben oder auf Freigabe warten;
- eine Geräteliste mit einem Abzeichen für das dringendste Problem. Tippe auf ein Gerät, um Adressen, Besitzer, Tags und Ablaufdatum des Schlüssels zu sehen, mit einem Link zu seiner Seite in der Admin-Konsole.
Einstellungen jedes Widgets:
- Angezeigte Geräte: die Aufmerksamkeit brauchen (Standard), nur die offline sind, oder alle;
- Zeilen: wie viele Geräte die Liste zeigt (0 bis 8).
Die Schaltfläche Aktualisieren liest das Tailnet sofort; Admin-Konsole öffnet die Tailscale-Admin-Konsole.
Fehlerbehebung
| Meldung | Was tun |
|---|---|
| Keine Tailscale-Zugangsdaten | Fülle die Felder der gewählten Anmeldemethode aus |
| Tailscale lehnt die Zugangsdaten ab | Das Token ist abgelaufen oder widerrufen, oder der OAuth-Client ist falsch: Erstelle ein neues |
| Zugriff verweigert: Dem Token fehlt der Bereich „devices“ | Gib dem OAuth-Client den Bereich Devices → Core |
| Tailnet nicht gefunden | Trage wieder - in Tailnet ein oder die genaue ID aus Settings → General |
| Tailscale begrenzt die Anfragen | Erhöhe das Aktualisierungsintervall |
| Die Tailscale-API ist von Gladys aus nicht erreichbar | Prüfe den Internetzugang des Gladys-Rechners (api.tailscale.com, HTTPS) |
Ein Gerät wird offline angezeigt, obwohl es läuft? Für Tailscale ist es offline: Der Client ist gestoppt, abgemeldet oder sein Schlüssel ist abgelaufen. Die Admin-Konsole zeigt dasselbe.
Die Integration protokolliert alles, was sie tut: Öffne die Protokolle der Integration in Gladys. Sie schreibt nie ein Token oder ein Secret ins Protokoll.
Konfigurationseinstellungen
Diese Einstellungen fragt Tailscale in seinem Konfigurationsbildschirm in Gladys ab.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Erste Schritte | section | Nein | Die Integration liest dein Tailnet über die Tailscale-API in der Cloud: Auf deinen Geräten muss nichts installiert werden. Erstelle ein API-Zugriffstoken (Settings → Keys, es läuft nach höchstens 90 Tagen ab) oder besser einen OAuth-Client mit dem Bereich „devices:core“ (Settings → OAuth clients, er läuft nie ab) und füge ihn unten ein. |
| Anmeldemethode | select | Ja | |
| API-Zugriffstoken | secret | Nein | Nur für die Methode „API-Zugriffstoken“. |
| Client-ID des OAuth-Clients | string | Nein | Nur für die Methode „OAuth-Client“. |
| Secret des OAuth-Clients | secret | Nein | |
| Tailnet | string | Nein | Lass „-“ für das Tailnet des Tokens stehen. Sonst seine ID aus Settings → General. |
| Aktualisierungsintervall (s) | number | Nein | Wie oft das Tailnet gelesen wird, in Sekunden. Eine Anfrage pro Abfrage, egal wie viele Geräte. |
| Warnung vor Schlüsselablauf (Tage) | number | Nein | Ein Gerät, dessen Schlüssel in dieser Frist abläuft, löst „Schlüssel läuft bald ab“ aus. |
| Mit dir geteilte Geräte einbeziehen | boolean | Nein | Geräte, die ein anderes Tailnet mit deinem teilt. Standardmäßig ausgeblendet: Du verwaltest sie nicht. |
So installierst du Tailscale in Gladys
- Öffne in Gladys Integrationen: Tailscale erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- Klicke auf Installieren. Gladys lädt das Docker-Image (
ghcr.io/prohand/gladys-tailscale:1.0.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration). - Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
- Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/prohand/gladys-tailscale.
Tailscale benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.
Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.
Über externe Integrationen
Tailscale ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von prohand veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.
- Alle Integrationen durchsuchen, native und aus der Community
- Deine eigene externe Integration bauen und veröffentlichen
- Quellcode auf GitHub — Quelle dieser Dokumentation