README.md hinzugefügt

This commit is contained in:
alf
2026-08-23 18:52:03 +00:00
parent 4cc204dd67
commit b9bebe7b0c

100
README.md Normal file
View File

@ -0,0 +1,100 @@
# ts-menu — Tailscale Geräteverwaltung
Kleines interaktives Kommandozeilen-Tool, um einzelne Geräte im eigenen
Tailscale-Netz per Menü zu sperren (vom Tailnet trennen) und wieder
zuzulassen.
![gum](https://img.shields.io/badge/UI-gum-ff69b4)
## Voraussetzungen
| Tool | Zweck | Installation |
|------|-------|---------------|
| [`gum`](https://github.com/charmbracelet/gum) | Menüführung / UI | `brew install gum` (macOS) oder siehe [Charm-Repos](https://github.com/charmbracelet/gum#installation) (Linux) |
| `curl` | API-Requests | meist vorinstalliert |
| `jq` | JSON-Verarbeitung | `apt install jq` / `brew install jq` |
Außerdem brauchst du einen **Tailscale API-Access-Token**:
1. Admin-Konsole öffnen: <https://login.tailscale.com/admin/settings/keys>
2. **Generate access token** klicken
3. Token kopieren (wird nur einmal angezeigt!)
## Installation
```bash
chmod +x ts-menu.sh
```
Optional irgendwo in den `PATH` legen, z. B.:
```bash
mkdir -p ~/.local/bin
cp ts-menu.sh ~/.local/bin/ts-menu
```
## Konfiguration
Lege eine Datei `~/.ts-toggle.conf` an:
```bash
TAILSCALE_API_KEY="tskey-api-xxxxxxxxxxxx"
TAILSCALE_TAILNET="deine-org.ts.net"
```
- `TAILSCALE_API_KEY` — dein Access-Token von oben
- `TAILSCALE_TAILNET` — Name deines Tailnets (in der Admin-Konsole oben
links sichtbar, z. B. `beispiel@gmail.com` oder `deine-firma.ts.net`)
> ⚠️ Diese Datei enthält ein sensibles API-Token. Zugriffsrechte
> einschränken, z. B. mit `chmod 600 ~/.ts-toggle.conf`.
Alternativ lassen sich beide Werte auch als Umgebungsvariablen setzen,
statt sie in die Datei zu schreiben:
```bash
export TAILSCALE_API_KEY="tskey-api-xxxxxxxxxxxx"
export TAILSCALE_TAILNET="deine-org.ts.net"
```
## Nutzung
```bash
./ts-menu.sh
```
Du landest im Hauptmenü mit drei Optionen:
- **Gerät sperren/entsperren** — wählt ein Gerät aus der Liste (Status
wird direkt angezeigt), erkennt automatisch den aktuellen Zustand und
schlägt die passende Gegenaktion vor. Vor der Ausführung wird per
Bestätigungsdialog nachgefragt.
- **Geräteliste anzeigen** — zeigt alle Geräte des Tailnets mit Name,
Betriebssystem und Status in einer Tabelle.
- **Beenden** — verlässt das Programm.
## Wie das Sperren funktioniert
Ein gesperrtes Gerät wird über die Tailscale-API **deautorisiert**
(`authorized: false`). Das trennt es sofort und vollständig vom Tailnet —
es hat dann zu keinem anderen Gerät mehr Verbindung, bis es wieder
autorisiert wird. Das Gerät selbst bleibt in der Geräteliste sichtbar und
kann jederzeit wieder freigeschaltet werden, ohne sich neu einzuloggen.
> Hinweis: Das ist ein Alles-oder-nichts-Schalter pro Gerät. Für
> feingranulare Regeln (z. B. "Gerät A darf nur mit B sprechen") braucht
> es stattdessen ACL-Policies in der Admin-Konsole — das ist mit diesem
> Tool nicht abgedeckt.
## Fehlerbehebung
| Problem | Ursache |
|---------|---------|
| `Fehler: gum wird benötigt` | `gum` ist nicht installiert oder nicht im `PATH` |
| `Konnte Geräteliste nicht laden` | API-Key falsch/abgelaufen oder `TAILSCALE_TAILNET` falsch |
| `Fehler: TAILSCALE_API_KEY ist nicht gesetzt` | `~/.ts-toggle.conf` fehlt oder Variable nicht gesetzt |
## Dateien
- `ts-menu.sh` — das interaktive Menü-Script
- `~/.ts-toggle.conf` — deine lokale Konfiguration (nicht mit anderen teilen!)