104 lines
4.2 KiB
Markdown
104 lines
4.2 KiB
Markdown
# 🧩 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.
|
||
```
|
||
|
||
[](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> |