livekit-ip-watch/README.md
2025-10-29 11:14:43 +01:00

104 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧩 LiveKit IP Watch
Ein einfaches Bash-Script, das bei dynamischen Internetanschlüssen (z. B. DSL) automatisch die öffentliche IP-Adresse ermittelt, in die LiveKit-`config.yaml` einträgt und anschließend den Dienst neu startet.
Nach dem Neustart prüft das Script per HTTP-Healthcheck, ob LiveKit wieder erreichbar ist.
Dieses Repository ist **begleitend zu meinem Blogbeitrag**, den du hier lesen kannst:
👉 [https://www.cleveradmin.de/blog/2025/10/livekit-dynamische-ip-automatisieren](https://www.cleveradmin.de/blog/2025/10/livekit-dynamische-ip-automatisieren)
---
## ⚙️ Konfiguration
Öffne die Scriptdatei `livekit-ip-watch.v1.sh` und passe folgende Variablen an:
| Variable | Beschreibung |
|---------|--------------|
| `CONFIG_FILE` | Pfad zur LiveKit-Konfigurationsdatei (`config.yaml`). |
| `RUNTIME` | Modus: `"compose"` für Docker Compose oder `"docker"` für Plain Docker. |
| `COMPOSE_FILE_PATH` | Vollständiger Pfad zur `docker-compose.yaml`, falls `RUNTIME="compose"`. |
| `COMPOSE_SERVICE` | Name des LiveKit-Services in deiner Compose-Datei. |
| `CONTAINER_NAME` | Nur relevant, wenn `RUNTIME="docker"` Name des Containers. |
| `ENABLE_IPV6` | `true` für IPv6, `false` für IPv4. |
| `WAIT_AFTER_RESTART` | Wartezeit (Sekunden) vor dem Healthcheck. |
| `HEALTHCHECK_DOMAIN` | Nur den DNS angeben, z. B. `rtc.matrix.techniverse.net`. Das Script prüft automatisch `/livekit/sfu/`. |
| `HEALTHCHECK_TIMEOUT` | Timeout in Sekunden für den HTTP-Check. |
| `NTFY_URL` / `NTFY_TOKEN` | Optional für Benachrichtigungen via ntfy. |
---
## 📦 Voraussetzungen
- bash
- git
- yq (optional, aber empfohlen für saubere YAML-Bearbeitung)
---
## 🚀 Verwendung
Script herunterladen und starten:
git clone https://git.techniverse.net/scriptos/livekit-ip-watch.git
cd livekit-ip-watch
chmod +x livekit-ip-watch.v1.sh
bash livekit-ip-watch.v1.sh
Beispielausgabe:
```bash
➜ bash livekit-ip-watch.v1.sh
[2025-10-27 19:56:30] INFO: Neue IP erkannt: 152.53.118.246 (alt: none)
[2025-10-27 19:56:30] INFO: Backup erstellt: /home/scripts/livekit-ip-watch/backups/config.yaml.20251027195630.bak
[2025-10-27 19:56:30] WARN: yq nicht gefunden Fallback-Editor wird verwendet.
[2025-10-27 19:56:30] INFO: Restart des Dienstes...
[+] Restarting 1/1
✔ Container matrix-element-call-livekit Started 46.8s
[2025-10-27 19:57:17] INFO: Warte 20 Sekunden...
[2025-10-27 19:57:37] INFO: Healthcheck OK.
```
[![asciicast](https://asciinema.techniverse.net/a/68.svg)](https://asciinema.techniverse.net/a/68)
---
## ⏰ Automatische Ausführung (Cronjob)
Damit die IP regelmäßig geprüft und aktualisiert wird, kannst du das Script z. B. alle 15 Minuten ausführen:
crontab -e
Und füge diese Zeile hinzu:
```bash
*/15 * * * * /home/scripts/livekit-ip-watch/livekit-ip-watch.v1.sh >> /var/log/livekit-ip-watch.log 2>&1
```
---
## 🧠 Hinweis
Das Script erstellt bei jeder Änderung ein Backup der `config.yaml` und führt bei einem Fehler automatisch ein Rollback durch.
---
Autor: Patrick Asmus
Repository: https://git.techniverse.net/scriptos/livekit-ip-watch.git
---
## 💬 Support & Community
Du hast Fragen, brauchst Unterstützung bei der Einrichtung oder möchtest dich einfach mit anderen austauschen, die ähnliche Projekte betreiben? Dann schau gerne in unserer Techniverse Community vorbei:
👉 **Matrix-Raum:** [#community:techniverse.net](https://matrix.to/#/#community:techniverse.net)
Wir freuen uns auf deinen Besuch und helfen dir gerne weiter!
<p align="center">
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
</p>
<p align="center">
<img src="https://assets.techniverse.net/f1/logos/small/license.png" alt="License" width="15" height="15"> <a href="./template_repository/src/branch/main/LICENSE">License</a> | <img src="https://assets.techniverse.net/f1/logos/small/matrix2.svg" alt="Matrix" width="15" height="15"> <a href="https://matrix.to/#/#community:techniverse.net">Matrix</a> | <img src="https://assets.techniverse.net/f1/logos/small/mastodon2.svg" alt="Matrix" width="15" height="15"> <a href="https://social.techniverse.net/@donnerwolke">Mastodon</a>
</p>