Compare commits

...

8 Commits

2 changed files with 99 additions and 2 deletions

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2024 scriptos
Copyright (c) 2025 scriptos
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View File

@ -1,5 +1,102 @@
Dokumentation wird bei Gelegenheit nachgereicht.
# 🧩 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:
```bash
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:
```bash
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">