Benutzer-Werkzeuge

Webseiten-Werkzeuge


nextcloud:talk

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
nextcloud:talk [2026/10/30 09:19] – angelegt franznextcloud:talk [2026/10/30 09:38] (aktuell) – franz
Zeile 1: Zeile 1:
-===== = Nextcloud Talk – Hochleistungs-Backend mit Docker installieren und aktualisieren ====== ===== 1. Zielsetzung ===== Diese Anleitung beschreibt die Installation und Wartung eines eigenständigen Hochleistungs-Backends (HPB) für Nextcloud Talk. Das HPB verbessert die Skalierbarkeit von Audio- und Videokonferenzen mit mehreren Teilnehmern. Die Installation erfolgt unabhängig von Nextcloud All-in-One mit dem offiziellen AIO-Talk-Docker-Image. **Technische Komponenten:** * Nextcloud Server mit installierter Talk-App * Docker Engine und Docker Compose * Nextcloud Talk Hochleistungs-Backend * Signaling-Server * Janus WebRTC-Medienserver * TURN-Server * Apache2 als HTTPS-Reverse-Proxy * Let's Encrypt für TLS-Zertifikate Das Backend wird als eigenständiges Docker-Compose-Projekt betrieben. Das Nextcloud-Programm ''notify_push'' ist nicht das Talk-Hochleistungs-Backend. Es beschleunigt Benachrichtigungen, ersetzt aber weder den Signaling-Server noch den WebRTC-Medienserver. ===== 2. Beispielumgebung ===== ^ Komponente ^ Beispielwert ^ | Betriebssystem | Ubuntu Server LTS | | Docker | Docker Engine mit Compose v2 | | Nextcloud | https://cloud.example.org | | Talk-HPB | https://talk.example.org | | Nextcloud-Projekt | /opt/docker/nextcloud | | HPB-Projekt | /opt/docker/talk-hpb | | Backup-Verzeichnis | /opt/backups | | Reverse-Proxy | Apache2 | | HTTPS-Port | 443/TCP | | Signaling-Port intern | 8081/TCP | | TURN-Port | 3478/TCP und UDP | Die Domains, Verzeichnisse und Serveradressen sind an die eigene Umgebung anzupassen. Der lokale Signaling-Port wird ausschließlich an 127.0.0.1 gebunden. ===== 3. Voraussetzungen ===== ==== 3.1 Software ==== Erforderlich sind: * Funktionierende Nextcloud-Installation * Nextcloud Talk App * Docker Engine * Docker Compose v2 * Apache2 mit TLS-Unterstützung * Gültiges TLS-Zertifikat * DNS-Eintrag für den Talk-Server Bei einer Installation mit mehreren Teilnehmern müssen zusätzlich ausreichende CPU-Leistung, RAM und Netzwerkbandbreite verfügbar sein. ==== 3.2 Docker prüfen ==== '' docker --version docker compose version docker info '' ==== 3.3 Apache-Module prüfen ==== '' sudo apache2ctl -M | grep -E 'proxy|ssl|headers|rewrite' '' Benötigt werden insbesondere: * proxy * proxy_http * ssl * headers Für ältere Apache-Konfigurationen kann auch proxy_wstunnel erforderlich sein. Fehlende Module aktivieren: '' sudo a2enmod proxy proxy_http proxy_wstunnel ssl headers rewrite sudo apache2ctl configtest '' ==== 3.4 DNS prüfen ==== '' dig +short cloud.example.org dig +short talk.example.org '' Die Talk-Domain muss auf die öffentliche Adresse des entsprechenden Reverse-Proxys zeigen. ==== 3.5 Ports prüfen ==== '' sudo ss -tuln | grep -E ':(3478|8081)\b' '' Vor der Installation sollten die vorgesehenen Hostports nicht bereits durch einen anderen Dienst belegt sein. ===== 4. Verzeichnisstruktur erstellen ===== '' sudo mkdir -p /opt/docker/talk-hpb/secrets sudo mkdir -p /opt/backups sudo chmod 700 /opt/docker/talk-hpb/secrets sudo chmod 700 /opt/backups cd /opt/docker/talk-hpb '' Die folgenden Arbeiten werden mit einem administrativen Benutzer durchgeführt. ===== 5. Zugangsschlüssel erzeugen ===== Das Hochleistungs-Backend benötigt drei unabhängige Schlüssel. ^ Schlüssel ^ Zweck ^ | TURN_SECRET | Authentifizierung der TURN-Verbindungen | | SIGNALING_SECRET | Kommunikation zwischen Nextcloud und Signaling | | INTERNAL_SECRET | Interne Authentifizierung der HPB-Komponenten | Die Schlüssel werden nur bei der Erstinstallation neu generiert. '' cd /opt/docker/talk-hpb umask 077 for name in turn signaling internal; do file="secrets/${name}_secret" if [ ! -e "$file" ]; then openssl rand -hex 32 > "$file" fi done chmod 700 secrets chmod 600 secrets/* '' Kontrolle: '' ls -l secrets/ ''  Bei Updates keine neuen Secrets erzeugen! Die bereits verwendeten Schlüssel müssen unverändert bleiben. Secrets niemals in öffentlich zugänglichen Repositories, Logdateien oder Dokumentationen veröffentlichen.  ===== 6. Umgebungsdatei erstellen ===== Die Datei ''.env'' enthält die Konfigurationsvariablen des Containers. '' cd /opt/docker/talk-hpb umask 077 { echo "NC_DOMAIN=cloud.example.org" echo "TALK_HOST=talk.example.org" echo "TALK_PORT=3478" echo "TZ=Europe/Vienna" echo "TURN_SECRET=$(cat secrets/turn_secret)" echo "SIGNALING_SECRET=$(cat secrets/signaling_secret)" echo "INTERNAL_SECRET=$(cat secrets/internal_secret)" } > .env chmod 600 .env ''  Bei einer vorhandenen Installation die ''.env'' nicht erneut mit diesem Block überschreiben. Vor Änderungen immer die aktuelle Datei sichern. Die ''.env'' enthält sensible Informationen und darf nicht veröffentlicht werden.  ===== 7. Docker Compose konfigurieren ===== Datei: ''/opt/docker/talk-hpb/compose.yaml'' '' services: talk-hpb: image: ghcr.io/nextcloud-releases/aio-talk:latest container_name: nextcloud-talk-hpb restart: unless-stopped user: "1000" init: true env_file: - .env ports: - "127.0.0.1:8081:8081/tcp" - "3478:3478/tcp" - "3478:3478/udp" read_only: true tmpfs: - /run - /opt/eturnal/run - /conf - /tmp cap_drop: - NET_RAW healthcheck: test: ["CMD", "/healthcheck.sh"] interval: 30s timeout: 30s retries: 3 '' **Erläuterung:** * 8081/TCP ist ausschließlich lokal für Apache verfügbar. * 3478/TCP und UDP werden für TURN bereitgestellt. * Die Secrets werden über die geschützte ''.env'' übergeben. * Der Container wird nach einem Serverneustart automatisch wieder gestartet. * Das Dateisystem des Containers ist weitgehend schreibgeschützt.  Der Tag ''latest'' vereinfacht die Erstinstallation. Für den langfristigen Produktionsbetrieb ist ein ausdrücklich geprüfter und festgelegter Image-Tag oder Digest empfehlenswert. Bei Verwendung von ''latest'' wird durch ''docker compose pull'' gegebenenfalls eine neuere Version geladen.  ==== 7.1 Konfiguration prüfen ==== '' cd /opt/docker/talk-hpb docker compose config --quiet '' Bei einer korrekten Syntax erscheint keine Fehlermeldung. Achtung: Die normale Ausgabe von ''docker compose config'' kann Geheimnisse enthalten. Deshalb für die reine Syntaxprüfung ''--quiet'' verwenden. ==== 7.2 Container starten ==== '' docker compose pull docker compose up -d '' ==== 7.3 Containerstatus prüfen ==== '' docker compose ps '' Erwarteter Zustand: ''Up ... (healthy)'' ===== 8. Signaling-Server lokal testen ===== '' curl -i http://127.0.0.1:8081/api/v1/welcome '' Erwartetes Ergebnis: '' HTTP/1.1 200 OK {"nextcloud-spreed-signaling":"Welcome","version":"..."} '' Die Versionsnummer hängt vom installierten Containerimage ab. Bei Problemen: '' docker logs --tail 100 nextcloud-talk-hpb '' ===== 9. Apache-Reverse-Proxy einrichten ===== Der Signaling-Server wird über HTTPS unter einer eigenen Subdomain erreichbar gemacht. Beispiel: ''https://talk.example.org'' ==== 9.1 TLS-Zertifikat ==== Bei Verwendung von Certbot kann ein Zertifikat beispielsweise so beantragt werden: '' sudo certbot certonly --apache -d talk.example.org '' Alternativ kann ein bereits vorhandenes, gültiges Wildcard-Zertifikat verwendet werden. ==== 9.2 VirtualHost erstellen ==== Datei: ''/etc/apache2/sites-available/talk.example.org.conf'' ''  ServerName talk.example.org Redirect permanent / https://talk.example.org/   ServerName talk.example.org SSLEngine on SSLCertificateFile /etc/letsencrypt/live/talk.example.org/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/talk.example.org/privkey.pem ProxyPreserveHost On ProxyRequests Off RequestHeader set X-Forwarded-Proto "https" ProxyPass / http://127.0.0.1:8081/ upgrade=websocket ProxyPassReverse / http://127.0.0.1:8081/ ErrorLog ${APACHE_LOG_DIR}/talk_error.log CustomLog ${APACHE_LOG_DIR}/talk_access.log combined  '' Diese Variante verwendet Apache mit WebSocket-Upgrade-Unterstützung über mod_proxy_http. Bei älteren Apache-Versionen ist gegebenenfalls eine gesonderte WebSocket-Proxy-Konfiguration erforderlich. Die Zertifikatspfade müssen an die tatsächlich verwendeten Zertifikate angepasst werden. ==== 9.3 Website aktivieren ==== '' sudo a2ensite talk.example.org.conf sudo apache2ctl configtest sudo systemctl reload apache2 '' ==== 9.4 HTTPS testen ==== '' curl -i https://talk.example.org/api/v1/welcome '' Erwartet wird: ''HTTP 200'' ===== 10. WebSocket-Verbindung testen ===== '' curl --http1.1 -i -N --max-time 5 \ -H "Connection: Upgrade" \ -H "Upgrade: websocket" \ -H "Sec-WebSocket-Version: 13" \ -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \ https://talk.example.org/spreed '' Erwartetes Ergebnis: '' HTTP/1.1 101 Switching Protocols Connection: Upgrade Upgrade: websocket '' Zusätzlich kann eine JSON-Nachricht mit den verfügbaren Signaling-Funktionen erscheinen. Eine spätere Meldung wie: '' "reason":"hello_timeout" '' ist bei diesem einfachen Test normalerweise unkritisch, weil curl nicht das vollständige Signaling-Protokoll ausführt. ===== 11. Hochleistungs-Backend in Nextcloud eintragen ===== Als Administrator anmelden: ''https://cloud.example.org/settings/admin/talk'' Den Abschnitt ''Hochleistungs-Backend'' öffnen. Auf ''Hochleistungs-Backend-Server hinzufügen'' klicken. Folgende Werte eintragen: ^ Einstellung ^ Wert ^ | Backend-URL | https://talk.example.org | | Gemeinsames Geheimnis | Inhalt von signaling_secret | | SSL-Zertifikat überprüfen | Aktiviert | Den Signaling-Schlüssel lokal anzeigen: '' cat /opt/docker/talk-hpb/secrets/signaling_secret '' Den Schlüssel in Nextcloud eintragen. Verbindung speichern beziehungsweise erneut prüfen. Erwartetes Ergebnis: * Nextcloud erkennt den Signaling-Server. * Die WebSocket-Verbindung funktioniert. * Die unterstützten Funktionen werden angezeigt.  Falls Nextcloud meldet, dass einzelne Signaling-Funktionen fehlen, zunächst die Versionskompatibilität prüfen. Eine solche Warnung bedeutet nicht zwangsläufig, dass alle Talk-Anrufe fehlschlagen. Ein vorhandenes und funktionierendes Backend nicht allein wegen einer optionalen Funktionswarnung durch eine ungeprüfte Entwicklungsversion ersetzen.  ===== 12. TURN-Server einrichten ===== Der offizielle AIO-Talk-Container enthält bereits einen TURN-Server. Ein zusätzlicher coturn-Container ist für diese Installationsvariante nicht erforderlich. ==== 12.1 Firewall konfigurieren ==== Bei Verwendung von UFW: '' sudo ufw allow 3478/tcp sudo ufw allow 3478/udp sudo ufw status '' ==== 12.2 Router-Portweiterleitung ==== Bei einem Server hinter NAT müssen zwei Portfreigaben eingerichtet werden. ^ Protokoll ^ Externer Port ^ Ziel ^ | TCP | 3478 | Interne IPv4-Adresse des Docker-Hosts, Port 3478 | | UDP | 3478 | Interne IPv4-Adresse des Docker-Hosts, Port 3478 | Bei einer FRITZ!Box: - Benutzeroberfläche öffnen. - Internet → Freigaben → Portfreigaben. - Server auswählen. - Neue Portfreigabe hinzufügen. - UDP 3478 konfigurieren. - Zweite Freigabe für TCP 3478 hinzufügen. - Einstellungen übernehmen. Die bestehende HTTPS-Freigabe für Port 443 bleibt unverändert. Port 8081 darf nicht öffentlich freigegeben werden. ==== 12.3 TURN in Nextcloud konfigurieren ==== In Nextcloud: ''Administration → Talk → TURN-Server'' Folgende Einstellungen verwenden: ^ Feld ^ Wert ^ | Protokoll | nur turn: | | TURN-Server-URL | talk.example.org:3478 | | TURN-Server-Secret | Inhalt von turn_secret | | Transport | UDP und TCP | Secret anzeigen: '' cat /opt/docker/talk-hpb/secrets/turn_secret '' Die Konfiguration speichern und über das Testsymbol überprüfen. Ein grüner Haken bestätigt den erfolgreichen Konfigurationstest. ==== 12.4 STUN ==== Optional kann ein eigener STUN-Server konfiguriert werden. Beispiel: ''talk.example.org:3478'' Ein bereits funktionierender STUN-Eintrag muss nicht zwingend ersetzt werden. ===== 13. Gesamtsystem prüfen ===== ==== 13.1 HPB-Container ==== '' cd /opt/docker/talk-hpb docker compose ps '' ==== 13.2 Öffentlichen Signaling-Endpunkt prüfen ==== '' curl -fsS https://talk.example.org/api/v1/welcome '' ==== 13.3 Erreichbarkeit aus Nextcloud ==== Bei einer Nextcloud-Docker-Installation mit dem Service ''app'': '' cd /opt/docker/nextcloud docker compose exec -T app \ curl -fsS \ https://talk.example.org/api/v1/welcome '' ==== 13.4 TURN-Port prüfen ==== '' sudo ss -tuln | grep ':3478' '' ==== 13.5 Praxistest ==== - Testunterhaltung in Nextcloud Talk erstellen. - Videoanruf zwischen zwei Geräten starten. - Mindestens ein Gerät über ein externes Netzwerk verbinden. - Audio in beide Richtungen prüfen. - Video in beide Richtungen prüfen. - Anschließend einen Anruf mit mindestens drei Teilnehmern durchführen.  Ein erfolgreicher HTTPS- oder TURN-Konfigurationstest ersetzt keinen praktischen Test der Audio- und Videoverbindungen. Die tatsächliche Qualität hängt auch von Internetanbindung, Netzwerkumgebung und Endgeräten ab.  ===== 14. Updatekonzept ===== Nextcloud Talk besteht aus mehreren unabhängig aktualisierbaren Komponenten. ^ Komponente ^ Aktualisierung ^ | Nextcloud Server | Nextcloud-Docker-Image | | Nextcloud Talk-App | App-Update in Nextcloud | | Talk HPB | AIO-Talk-Docker-Image | | TURN | Im HPB-Image enthalten | | Apache | Paketverwaltung des Betriebssystems | **Empfohlene Grundregel:** * Sicherheitsupdates priorisieren. * Vor jedem Update Kompatibilität und Release Notes prüfen. * Vor jedem Update Backups erstellen. * Updates möglichst außerhalb laufender Konferenzen durchführen. * Neue Versionen zuerst in einer Testumgebung prüfen. * Nach jedem Update einen Funktionstest durchführen. ==== 14.1 Kompatibilität prüfen ==== Vor einem Upgrade prüfen: * Unterstützt die Talk-App die eingesetzte Nextcloud-Version? * Unterstützt das HPB die benötigten Signaling-Funktionen? * Gibt es bekannte Fehler im neuen HPB-Image? * Ist die verwendete PHP-Version mit Nextcloud kompatibel? * Sind vorhandene weitere Nextcloud-Apps kompatibel? Bei Nextcloud-Major-Upgrades dürfen Hauptversionen nicht übersprungen werden. ===== 15. HPB vor dem Update sichern ===== ==== 15.1 Konfiguration sichern ==== '' cd /opt/docker/talk-hpb umask 077 BACKUP="/opt/backups/talk-hpb-$(date +%Y%m%d-%H%M).tar.gz" tar -czf "$BACKUP" \ compose.yaml .env secrets chmod 600 "$BACKUP" '' Diese Sicherung enthält sensible Schlüssel und muss geschützt aufbewahrt werden. ==== 15.2 Aktuelles Image dokumentieren ==== '' docker inspect nextcloud-talk-hpb \ --format ' .Config.Image  ' '' Zusätzlich die aktuelle Signaling-Version dokumentieren: '' curl -fsS \ https://talk.example.org/api/v1/welcome '' ==== 
  
-{{.Image}} 15.3 Image lokal sichern (optional) ==== Für eine schnellere Rückkehr zu einem bereits getesteten Image kann zusätzlich eine lokale Image-Sicherung erstellt werden. '' docker image save \ ghcr.io/nextcloud-releases/aio-talk:latest \ -o /opt/backups/talk-hpb-image.tar '' Diese Sicherung kann sehr groß werden. Bei produktiven Installationen ist ein festgelegter Image-Tag oder Digest und dessen Dokumentation normalerweise zweckmäßiger.  ===== 16. HPB aktualisieren =====  ==== 16.1 Neue Version prüfen ==== Vor dem Update: * Release Notes lesen. * Bekannte Fehler prüfen. * Kompatibilität zur Talk-App prüfen. * Wartungsfenster festlegen. Bei Verwendung eines festgelegten Image-Tags zuerst den gewünschten neuen Tag in ''compose.yaml'' eintragen. ==== 16.2 Neues Image herunterladen ==== '' cd /opt/docker/talk-hpb docker compose pull talk-hpb '' ==== 16.3 Container aktualisieren ==== '' docker compose up -d --no-deps talk-hpb '' Dabei wird der Container mit dem neuen Image neu erstellt, sofern sich das Image geändert hat. Die bestehende ''.env'' und die Secrets bleiben erhalten. ==== 16.4 Update kontrollieren ==== '' docker compose ps curl -fsS \ https://talk.example.org/api/v1/welcome docker logs --tail 100 nextcloud-talk-hpb '' Danach: - HPB-Verbindung in Nextcloud prüfen. - TURN-Konfigurationstest ausführen. - Videoanruf durchführen. - Gegebenenfalls die angebotenen Signaling-Funktionen vergleichen.  Bei einem normalen HPB-Update keine neuen Secrets erzeugen. Auch DNS, Apache-VirtualHost und Router-Portfreigaben müssen normalerweise nicht verändert werden.  ===== 17. Talk-App aktualisieren ===== Die Talk-App besitzt die technische App-ID ''spreed''. Zuerst den aktuellen Stand prüfen: '' cd /opt/docker/nextcloud docker compose exec -T -u www-data app \ php occ app:list | grep spreed '' Wenn ein kompatibles Update verfügbar ist: '' docker compose exec -T -u www-data app \ php occ app:update spreed '' Anschließend: '' docker compose exec -T -u www-data app \ php occ app:list | grep spreed '' Nach dem Update: * Talk-Administrationsseite öffnen. * HPB-Verbindung prüfen. * TURN testen. * Anruf mit mehreren Teilnehmern testen. Vor dem App-Update müssen ein konsistentes Nextcloud-Backup und ein geeigneter Wiederherstellungsweg vorhanden sein. ===== 18. Nextcloud Server aktualisieren ===== Das konkrete Verfahren hängt von der jeweiligen Nextcloud-Installation ab. Bei Docker Compose wird normalerweise ein neues Nextcloud-Image bereitgestellt. **Empfohlenes Vorgehen:** - Aktuelle Version und App-Kompatibilität prüfen. - Datenbank, Datenverzeichnis und Konfiguration sichern. - Neues Nextcloud-Image vorbereiten. - Update zuerst in einer Testinstanz durchführen. - Datenbankmigrationen abschließen. - Talk-App-Kompatibilität prüfen. - Produktivsystem im Wartungsfenster aktualisieren. - HPB und TURN erneut testen. Status prüfen: '' cd /opt/docker/nextcloud docker compose exec -T -u www-data app \ php occ status '' Nach dem Imagewechsel prüfen, ob die Aktualisierung bereits automatisch erfolgt ist. Falls laut offizieller Upgrade-Anleitung erforderlich: '' docker compose exec -T -u www-data app \ php occ upgrade '' Der genaue Ablauf kann bei Standardimages, selbst gebauten Images und anderen Deploymentformen unterschiedlich sein.  Bei einem Nextcloud-Major-Upgrade müssen App-Kompatibilität und PHP-Anforderungen vor dem produktiven Upgrade geklärt sein. Ein Datenbank-Upgrade kann nicht allein durch die Rückkehr zum alten Docker-Image rückgängig gemacht werden.  ===== 19. Wiederherstellung nach fehlerhaftem HPB-Update ===== Ein HPB-Container-Update lässt sich normalerweise durch Wiederherstellung des zuvor eingesetzten Images und der Konfiguration rückgängig machen. ==== 19.1 Aktuellen Zustand dokumentieren ==== '' cd /opt/docker/talk-hpb docker compose ps docker logs --tail 100 nextcloud-talk-hpb '' ==== 19.2 Konfiguration wiederherstellen ==== Dazu den gesicherten Stand von ''compose.yaml'', ''.env'' und ''secrets'' aus dem Backup zurückspielen. Das Backup muss zur vorherigen Containerkonfiguration passen. ==== 19.3 Vorheriges Image verwenden ==== Wenn das alte Image lokal verfügbar ist oder ein unveränderlicher Image-Tag beziehungsweise Digest dokumentiert wurde, diesen wieder in der Compose-Datei verwenden. Wurde das alte Image mit ''docker image save'' gesichert: '' docker image load \ -i /opt/backups/talk-hpb-image.tar '' Anschließend sicherstellen, dass ''compose.yaml'' tatsächlich auf das wiederhergestellte Image verweist. '' docker compose up -d --no-deps --force-recreate talk-hpb '' ==== 19.4 Wiederherstellung prüfen ==== '' docker compose ps curl -fsS \ https://talk.example.org/api/v1/welcome '' Danach Nextcloud-Verbindung und Videoanruf testen.  Ein Rollback des HPB ersetzt nicht die Wiederherstellung einer Nextcloud-Datenbank nach einem fehlgeschlagenen Nextcloud-Server-Upgrade. Für Nextcloud sind gesonderte, konsistente Backups erforderlich.  ===== 20. Betrieb und Monitoring ===== ==== 20.1 Containerstatus ==== '' cd /opt/docker/talk-hpb docker compose ps '' ==== 20.2 Logs ==== '' docker logs --tail 100 nextcloud-talk-hpb '' Live-Logs: '' docker logs -f nextcloud-talk-hpb '' ==== 20.3 Signaling prüfen ==== '' curl -fsS \ https://talk.example.org/api/v1/welcome '' ==== 20.4 Versionskontrolle ==== '' docker inspect nextcloud-talk-hpb \ --format ' .Config.Image  ' '' ====+====== Nextcloud Talk – Hochleistungs-Backend mit Docker installieren und aktualisieren ======
  
-{{.Image}} 20.5 Empfohlene regelmäßige Prüfungen ==== ^ Intervall ^ Maßnahme ^ | Wöchentlich | Containerstatus und Fehlerlogs prüfen | | Wöchentlich | Sicherheitsmeldungen prüfen | | Monatlich | Neue Image-Versionen und Release Notes prüfen | | Vor jedem Upgrade | Konfiguration und Secrets sichern | | Nach jedem Upgrade | HPB-, TURN- und Videotest | | Regelmäßig | Wiederherstellbarkeit der Backups testen |  ===== 21. Typische Fehler ===== ==== Kein Hochleistungs-Backend eingerichtet ==== Mögliche Ursachen: * HPB nicht in Nextcloud eingetragen * Falsche Backend-URL * Falsches Signaling-Secret * Container nicht gestartet Prüfen: '' docker compose ps curl -i \ https://talk.example.org/api/v1/welcome '' ==== WebSocket-Verbindung fehlgeschlagen ==== Mögliche Ursachen: * Fehlerhafter Apache-Reverse-Proxy * WebSocket-Upgrade wird nicht weitergeleitet * Zertifikatsproblem * Browser- oder Authentifizierungsproblem Prüfen: '' curl --http1.1 -i -N --max-time 5 \ -H "Connection: Upgrade" \ -H "Upgrade: websocket" \ -H "Sec-WebSocket-Version: 13" \ -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \ https://talk.example.org/spreed '' ''101 Switching Protocols'' bestätigt das erfolgreiche WebSocket-Upgrade, jedoch noch keine vollständige Anmeldung. ==== TURN-Test fehlgeschlagen ==== Prüfen: * TURN_SECRET korrekt? * Port 3478/TCP freigegeben? * Port 3478/UDP freigegeben? * Router-Portweiterleitung richtig? * DNS-Adresse korrekt? * Container läuft? ==== Video funktioniert nur im lokalen Netzwerk ==== Mögliche Ursachen: * TURN nicht erreichbar * Router-Portweiterleitung fehlt * Firewall blockiert Pakete * NAT- oder Client-Netzwerkproblem Einen weiteren Test über ein externes Netzwerk durchführen. ==== HPB meldet fehlende Funktionen ==== Die Talk-App kann zusätzliche Signaling-Funktionen erwarten. In diesem Fall: * Signaling-Version feststellen. * Unterstützte Funktionen auslesen. * Kompatibilität zur Talk-App prüfen. * Release Notes und bekannte Fehler prüfen. * Erst danach ein gezieltes Update durchführen. ===== 22. Sicherheitsempfehlungen ===== * Signaling ausschließlich über HTTPS bereitstellen. * Zertifikatsprüfung aktiviert lassen. * Port 8081 nicht öffentlich freigeben. * TURN nur über erforderliche Ports veröffentlichen. * Sichere, zufällig generierte Secrets einsetzen. * Secret-Dateien vor fremdem Zugriff schützen. * Backups verschlüsselt beziehungsweise zugriffsgeschützt speichern. * Containerimages aus vertrauenswürdigen Quellen beziehen. * Produktionsupdates vorab testen. * Docker und Betriebssystem regelmäßig mit Sicherheitsupdates versorgen. * Nicht benötigte Router- und Firewall-Freigaben vermeiden. ===== 23. Zusammenfassung ===== Die Installation besteht aus: - Eigenem Docker-Compose-Projekt für das Talk-HPB. - Drei Zugangsschlüsseln für TURN, Signaling und interne Kommunikation. - Apache-Reverse-Proxy mit HTTPS. - WebSocket-Unterstützung. - TURN-Portfreigabe für TCP und UDP. - Eintragung des HPB in Nextcloud Talk. - Einrichtung des TURN-Servers. - Prüfung mit externen Videokonferenzteilnehmern. Für Updates gilt: * Nextcloud Server und Talk-App aufeinander abstimmen. * HPB getrennt aktualisieren. * Secrets beibehalten. * Vorherige funktionierende Version dokumentieren. * Nach jedem Update einen vollständigen Funktionstest durchführen. ===== 24. Offizielle Dokumentation ===== * [[https://nextcloud-talk.readthedocs.io/en/latest/quick-install/|Nextcloud Talk – Quick Install]] * [[https://github.com/nextcloud/all-in-one|Nextcloud All-in-One]] * [[https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml|Offizielle Docker-Compose-Beispielkonfiguration]] * [[https://github.com/strukturag/nextcloud-spreed-signaling|Nextcloud Spreed Signaling]] * [[https://docs.nextcloud.com/server/latest/admin_manual/|Nextcloud Administrationshandbuch]] * [[https://docs.docker.com/compose/|Docker Compose]] * [[https://httpd.apache.org/docs/2.4/|Apache2-Dokumentation]] * [[https://certbot.eff.org/|Certbot / Let's Encrypt]] ---- Stand: Oktober 2026 Dokumentation für eigenständige Nextcloud-Talk-HPB-Installationen mit Docker Compose und Apache2.+===== 1. Zielsetzung =====
  
 +Diese Anleitung beschreibt die Installation, Konfiguration, Wartung und Aktualisierung eines eigenständigen Hochleistungs-Backends (HPB) für Nextcloud Talk.
 +
 +Das Backend wird unabhängig von Nextcloud All-in-One als eigenes Docker-Compose-Projekt betrieben. Verwendet wird das offizielle AIO-Talk-Containerimage.
 +
 +**Technische Komponenten:**
 +
 +  * Nextcloud Server mit Talk-App
 +  * Docker Engine und Docker Compose v2
 +  * Nextcloud Talk Hochleistungs-Backend
 +  * Signaling-Server
 +  * Janus WebRTC-Medienserver
 +  * Integrierter TURN-Server
 +  * Apache2 als HTTPS-Reverse-Proxy
 +  * Let's Encrypt für TLS-Zertifikate
 +
 +**Wichtig:** Die Nextcloud-App ''notify_push'' ist nicht das Talk-Hochleistungs-Backend. Sie beschleunigt Benachrichtigungen, ersetzt jedoch weder den Signaling-Server noch den Medienserver.
 +
 +===== 2. Beispielumgebung =====
 +
 +^ Komponente ^ Beispielwert ^
 +| Betriebssystem | Ubuntu Server LTS |
 +| Docker | Docker Engine mit Compose v2 |
 +| Nextcloud-Domain | cloud.example.org |
 +| Talk-Domain | talk.example.org |
 +| Nextcloud-Projekt | /opt/docker/nextcloud |
 +| HPB-Projekt | /opt/docker/talk-hpb |
 +| Backup-Verzeichnis | /opt/backups |
 +| Reverse-Proxy | Apache2 |
 +| HTTPS | 443/TCP |
 +| Signaling intern | 8081/TCP |
 +| TURN | 3478/TCP und UDP |
 +
 +Alle Domains und Verzeichnisse müssen an die eigene Umgebung angepasst werden.
 +
 +Der Signaling-Port wird ausschließlich an die lokale Loopback-Adresse gebunden. Der TURN-Port muss für externe Teilnehmer erreichbar sein.
 +
 +===== 3. Voraussetzungen =====
 +
 +==== 3.1 Software ====
 +
 +Erforderlich sind:
 +
 +  * Funktionierende Nextcloud-Installation
 +  * Installierte und aktivierte Nextcloud Talk-App
 +  * Docker Engine
 +  * Docker Compose v2
 +  * Apache2 mit HTTPS-Unterstützung
 +  * Gültiges TLS-Zertifikat
 +  * DNS-Eintrag für die Talk-Domain
 +
 +==== 3.2 Docker prüfen ====
 +
 +<code bash>
 +docker --version
 +docker compose version
 +docker info
 +</code>
 +
 +==== 3.3 Apache-Module prüfen ====
 +
 +<code bash>
 +sudo apache2ctl -M | grep -E 'proxy|ssl|headers|rewrite'
 +</code>
 +
 +Erforderliche Module aktivieren:
 +
 +<code bash>
 +sudo a2enmod proxy proxy_http proxy_wstunnel ssl headers rewrite
 +sudo apache2ctl configtest
 +</code>
 +
 +==== 3.4 DNS prüfen ====
 +
 +<code bash>
 +dig +short cloud.example.org
 +dig +short talk.example.org
 +</code>
 +
 +Beide Domains müssen korrekt aufgelöst werden. Die Talk-Domain muss auf den öffentlich erreichbaren Reverse-Proxy zeigen.
 +
 +==== 3.5 Ports prüfen ====
 +
 +<code bash>
 +sudo ss -tuln | grep -E ':(3478|8081)\b'
 +</code>
 +
 +Vor der Installation sicherstellen, dass die benötigten Hostports nicht bereits belegt sind.
 +
 +===== 4. Verzeichnisstruktur erstellen =====
 +
 +<code bash>
 +sudo mkdir -p /opt/docker/talk-hpb/secrets
 +sudo mkdir -p /opt/backups
 +
 +sudo chmod 700 /opt/docker/talk-hpb/secrets
 +sudo chmod 700 /opt/backups
 +
 +cd /opt/docker/talk-hpb
 +</code>
 +
 +Die weiteren Befehle werden mit einem Benutzer ausgeführt, der die erforderlichen Berechtigungen besitzt.
 +
 +===== 5. Zugangsschlüssel erzeugen =====
 +
 +Das Hochleistungs-Backend benötigt drei unabhängige Schlüssel.
 +
 +^ Schlüssel ^ Zweck ^
 +| TURN_SECRET | Authentifizierung der TURN-Verbindungen |
 +| SIGNALING_SECRET | Kommunikation zwischen Nextcloud und Signaling |
 +| INTERNAL_SECRET | Interne Authentifizierung der HPB-Komponenten |
 +
 +Die Schlüssel werden bei der Erstinstallation erzeugt.
 +
 +<code bash>
 +cd /opt/docker/talk-hpb
 +
 +umask 077
 +
 +for name in turn signaling internal; do
 +    file="secrets/${name}_secret"
 +    if [ ! -e "$file" ]; then
 +        openssl rand -hex 32 > "$file"
 +    fi
 +done
 +
 +chmod 700 secrets
 +chmod 600 secrets/*
 +</code>
 +
 +Kontrolle:
 +
 +<code bash>
 +ls -l secrets/
 +</code>
 +
 +**Wichtig:**
 +
 +  * Bei Updates keine neuen Secrets generieren.
 +  * Vorhandene Secrets unverändert weiterverwenden.
 +  * Secrets nicht in Repositories oder öffentlichen Dokumentationen veröffentlichen.
 +
 +===== 6. Umgebungsdatei erstellen =====
 +
 +Die Datei ''.env'' enthält die Konfigurationsvariablen.
 +
 +<code bash>
 +cd /opt/docker/talk-hpb
 +
 +umask 077
 +
 +{
 +    echo "NC_DOMAIN=cloud.example.org"
 +    echo "TALK_HOST=talk.example.org"
 +    echo "TALK_PORT=3478"
 +    echo "TZ=Europe/Vienna"
 +    echo "TURN_SECRET=$(cat secrets/turn_secret)"
 +    echo "SIGNALING_SECRET=$(cat secrets/signaling_secret)"
 +    echo "INTERNAL_SECRET=$(cat secrets/internal_secret)"
 +} > .env
 +
 +chmod 600 .env
 +</code>
 +
 +**Achtung:** Diesen Block ausschließlich bei einer Erstinstallation verwenden.
 +
 +Bei bestehenden Installationen die ''.env'' nicht überschreiben. Zuerst eine Sicherung erstellen.
 +
 +===== 7. Docker Compose konfigurieren =====
 +
 +Datei: ''/opt/docker/talk-hpb/compose.yaml''
 +
 +<code yaml>
 +services:
 +  talk-hpb:
 +    image: ghcr.io/nextcloud-releases/aio-talk:latest
 +    container_name: nextcloud-talk-hpb
 +    restart: unless-stopped
 +    init: true
 +
 +    env_file:
 +      - .env
 +
 +    ports:
 +      - "127.0.0.1:8081:8081/tcp"
 +      - "3478:3478/tcp"
 +      - "3478:3478/udp"
 +</code>
 +
 +**Erläuterung:**
 +
 +  * 8081/TCP ist ausschließlich über localhost erreichbar.
 +  * 3478/TCP und UDP werden für den integrierten TURN-Server bereitgestellt.
 +  * Die Secrets werden aus der geschützten ''.env'' geladen.
 +  * Der Container startet nach einem Serverneustart automatisch neu.
 +
 +Der Image-Tag ''latest'' wird hier für die Erstinstallation verwendet.
 +
 +Für den langfristigen Produktionsbetrieb sollte nach erfolgreicher Prüfung ein festgelegter Image-Digest verwendet werden. Damit lassen sich Updates kontrolliert durchführen.
 +
 +==== 7.1 Docker-Konfiguration prüfen ====
 +
 +<code bash>
 +cd /opt/docker/talk-hpb
 +
 +docker compose config --quiet
 +</code>
 +
 +Bei korrekter Syntax erscheint keine Fehlermeldung.
 +
 +Die normale Ausgabe von ''docker compose config'' kann Secrets enthalten. Für die Syntaxprüfung daher ''--quiet'' verwenden.
 +
 +==== 7.2 Container starten ====
 +
 +<code bash>
 +docker compose pull
 +docker compose up -d
 +</code>
 +
 +==== 7.3 Containerstatus prüfen ====
 +
 +<code bash>
 +docker compose ps
 +</code>
 +
 +Der Container muss laufen.
 +
 +Falls das verwendete Image einen Healthcheck bereitstellt, sollte der Zustand ''healthy'' erreicht werden.
 +
 +===== 8. Signaling-Server lokal testen =====
 +
 +<code bash>
 +curl -i http://127.0.0.1:8081/api/v1/welcome
 +</code>
 +
 +Erwartet wird HTTP 200 und eine JSON-Antwort ähnlich:
 +
 +<code json>
 +{
 +  "nextcloud-spreed-signaling": "Welcome",
 +  "version": "..."
 +}
 +</code>
 +
 +Bei Problemen:
 +
 +<code bash>
 +docker logs --tail 100 nextcloud-talk-hpb
 +</code>
 +
 +===== 9. Apache-Reverse-Proxy einrichten =====
 +
 +Der Signaling-Server wird unter einer eigenen HTTPS-Domain veröffentlicht.
 +
 +Beispiel:
 +
 +''https://talk.example.org''
 +
 +==== 9.1 TLS-Zertifikat ====
 +
 +Mit Certbot kann ein Zertifikat beispielsweise so beantragt werden:
 +
 +<code bash>
 +sudo certbot certonly --apache -d talk.example.org
 +</code>
 +
 +Alternativ kann ein bereits vorhandenes gültiges Wildcard-Zertifikat verwendet werden.
 +
 +==== 9.2 VirtualHost erstellen ====
 +
 +Datei: ''/etc/apache2/sites-available/talk.example.org.conf''
 +
 +<code apache>
 +<VirtualHost *:80>
 +    ServerName talk.example.org
 +    Redirect permanent / https://talk.example.org/
 +</VirtualHost>
 +
 +<VirtualHost *:443>
 +    ServerName talk.example.org
 +
 +    SSLEngine on
 +
 +    SSLCertificateFile /etc/letsencrypt/live/talk.example.org/fullchain.pem
 +    SSLCertificateKeyFile /etc/letsencrypt/live/talk.example.org/privkey.pem
 +
 +    ProxyPreserveHost On
 +    ProxyRequests Off
 +
 +    RequestHeader set X-Forwarded-Proto "https"
 +
 +    ProxyPass / http://127.0.0.1:8081/ upgrade=websocket
 +    ProxyPassReverse / http://127.0.0.1:8081/
 +
 +    ErrorLog ${APACHE_LOG_DIR}/talk_error.log
 +    CustomLog ${APACHE_LOG_DIR}/talk_access.log combined
 +</VirtualHost>
 +</code>
 +
 +Diese Konfiguration setzt eine Apache-Version mit entsprechender WebSocket-Upgrade-Unterstützung über ''mod_proxy_http'' voraus.
 +
 +Die Zertifikatspfade müssen an die tatsächliche Installation angepasst werden.
 +
 +==== 9.3 Website aktivieren ====
 +
 +<code bash>
 +sudo a2ensite talk.example.org.conf
 +sudo apache2ctl configtest
 +sudo systemctl reload apache2
 +</code>
 +
 +==== 9.4 HTTPS testen ====
 +
 +<code bash>
 +curl -i https://talk.example.org/api/v1/welcome
 +</code>
 +
 +Erwartetes Ergebnis: HTTP 200.
 +
 +===== 10. WebSocket-Verbindung testen =====
 +
 +<code bash>
 +curl --http1.1 -i -N --max-time 5 \
 +  -H "Connection: Upgrade" \
 +  -H "Upgrade: websocket" \
 +  -H "Sec-WebSocket-Version: 13" \
 +  -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" \
 +  https://talk.example.org/spreed
 +</code>
 +
 +Erwartetes Ergebnis:
 +
 +<code>
 +HTTP/1.1 101 Switching Protocols
 +</code>
 +
 +Eine später auftretende Meldung ''hello_timeout'' ist bei diesem einfachen Test normalerweise unkritisch, da curl nicht das vollständige Signaling-Protokoll ausführt.
 +
 +===== 11. Hochleistungs-Backend in Nextcloud eintragen =====
 +
 +Als Administrator bei Nextcloud anmelden.
 +
 +''https://cloud.example.org/settings/admin/talk''
 +
 +Den Abschnitt **Hochleistungs-Backend** öffnen.
 +
 +Einen neuen Backend-Server hinzufügen.
 +
 +^ Einstellung ^ Wert ^
 +| Backend-URL | https://talk.example.org |
 +| Gemeinsames Geheimnis | Inhalt von signaling_secret |
 +| SSL-Zertifikat überprüfen | Aktiviert |
 +
 +Den Signaling-Schlüssel lokal anzeigen:
 +
 +<code bash>
 +cat /opt/docker/talk-hpb/secrets/signaling_secret
 +</code>
 +
 +Den Schlüssel in Nextcloud eintragen und die Verbindung prüfen.
 +
 +**Erwartetes Ergebnis:**
 +
 +  * Nextcloud erkennt das Hochleistungs-Backend.
 +  * Die Verbindung ist erfolgreich.
 +  * Die verfügbaren Signaling-Funktionen werden angezeigt.
 +
 +Bei Warnungen über fehlende optionale Funktionen zuerst die Versionskompatibilität prüfen.
 +
 +Ein funktionierendes Backend nicht ohne vorherige Prüfung durch eine ungeprüfte Entwicklungsversion ersetzen.
 +
 +===== 12. TURN-Server einrichten =====
 +
 +Das verwendete AIO-Talk-Image enthält bereits einen TURN-Server.
 +
 +Ein zusätzlicher coturn-Container ist für diese Installationsvariante nicht erforderlich.
 +
 +==== 12.1 Firewall konfigurieren ====
 +
 +Bei Verwendung von UFW:
 +
 +<code bash>
 +sudo ufw allow 3478/tcp
 +sudo ufw allow 3478/udp
 +sudo ufw status
 +</code>
 +
 +Die HTTPS-Verbindung auf Port 443 muss ebenfalls erreichbar sein.
 +
 +==== 12.2 Router-Portweiterleitung ====
 +
 +Bei einem Server hinter NAT müssen folgende Freigaben eingerichtet werden:
 +
 +^ Protokoll ^ Externer Port ^ Internes Ziel ^
 +| TCP | 3478 | Docker-Host, Port 3478 |
 +| UDP | 3478 | Docker-Host, Port 3478 |
 +
 +Beispiel FRITZ!Box:
 +
 +  - Benutzeroberfläche öffnen.
 +  - Internet → Freigaben → Portfreigaben aufrufen.
 +  - Den Docker-Host auswählen.
 +  - Neue Portfreigabe für UDP 3478 erstellen.
 +  - Zweite Portfreigabe für TCP 3478 erstellen.
 +  - Einstellungen übernehmen.
 +
 +Die vorhandene HTTPS-Portfreigabe für 443 bleibt unverändert.
 +
 +**Port 8081 darf nicht öffentlich freigegeben werden.**
 +
 +Bei vorhandenem IPv6 müssen die entsprechenden Firewallfreigaben separat geprüft werden.
 +
 +==== 12.3 TURN in Nextcloud konfigurieren ====
 +
 +In Nextcloud:
 +
 +Administration → Talk → TURN-Server
 +
 +^ Einstellung ^ Wert ^
 +| Protokoll | turn: |
 +| Server | talk.example.org:3478 |
 +| Gemeinsames Geheimnis | Inhalt von turn_secret |
 +| Transport | UDP und TCP |
 +
 +TURN-Schlüssel anzeigen:
 +
 +<code bash>
 +cat /opt/docker/talk-hpb/secrets/turn_secret
 +</code>
 +
 +Konfiguration speichern und über die Testfunktion prüfen.
 +
 +Ein grüner Haken bestätigt den erfolgreichen Konfigurationstest. Er ersetzt jedoch keinen praktischen Verbindungstest.
 +
 +==== 12.4 STUN konfigurieren ====
 +
 +Optional kann der integrierte STUN-Dienst verwendet werden.
 +
 +Beispiel:
 +
 +''talk.example.org:3478''
 +
 +Ein bereits funktionierender STUN-Server muss nicht zwingend ersetzt werden.
 +
 +===== 13. Gesamtsystem prüfen =====
 +
 +==== 13.1 Containerstatus ====
 +
 +<code bash>
 +cd /opt/docker/talk-hpb
 +
 +docker compose ps
 +</code>
 +
 +==== 13.2 Öffentlichen Signaling-Endpunkt prüfen ====
 +
 +<code bash>
 +curl -fsS https://talk.example.org/api/v1/welcome
 +</code>
 +
 +==== 13.3 Verbindung aus Nextcloud prüfen ====
 +
 +Bei einem Nextcloud-Docker-Projekt mit dem Service ''app'':
 +
 +<code bash>
 +cd /opt/docker/nextcloud
 +
 +docker compose exec -T app \
 +  curl -fsS https://talk.example.org/api/v1/welcome
 +</code>
 +
 +==== 13.4 TURN-Port prüfen ====
 +
 +<code bash>
 +sudo ss -tuln | grep ':3478'
 +</code>
 +
 +Auch die Docker-Portzuordnung prüfen:
 +
 +<code bash>
 +docker ps --format 'table {{.Names}}\t{{.Ports}}'
 +</code>
 +
 +==== 13.5 Praxistest ====
 +
 +  - Eine Testunterhaltung in Nextcloud Talk erstellen.
 +  - Einen Videoanruf mit zwei Endgeräten starten.
 +  - Mindestens ein Gerät über ein externes Netzwerk verbinden.
 +  - Audio in beide Richtungen prüfen.
 +  - Video in beide Richtungen prüfen.
 +  - Anschließend einen Anruf mit mindestens drei Teilnehmern durchführen.
 +
 +Der Test sollte auch mit unterschiedlichen Netzwerken erfolgen, beispielsweise LAN und Mobilfunk.
 +
 +===== 14. Updatekonzept =====
 +
 +Nextcloud Talk besteht aus mehreren unabhängig aktualisierbaren Komponenten.
 +
 +^ Komponente ^ Aktualisierung ^
 +| Nextcloud Server | Nextcloud-Docker-Image |
 +| Nextcloud Talk-App | App-Update in Nextcloud |
 +| Talk HPB | AIO-Talk-Docker-Image |
 +| TURN | Bestandteil des HPB-Images |
 +| Apache2 | Paketverwaltung des Betriebssystems |
 +
 +**Empfohlene Grundregeln:**
 +
 +  * Sicherheitsupdates priorisieren.
 +  * Vor Updates die Release Notes lesen.
 +  * Versionskompatibilität kontrollieren.
 +  * Vor Updates Backups erstellen.
 +  * Während laufender Konferenzen keine Updates durchführen.
 +  * Änderungen zuerst in einer Testumgebung prüfen.
 +  * Nach jedem Update einen Funktionstest durchführen.
 +
 +==== 14.1 Kompatibilität prüfen ====
 +
 +Vor einem Upgrade kontrollieren:
 +
 +  * Unterstützt die Talk-App die installierte Nextcloud-Version?
 +  * Unterstützt das HPB die benötigten Signaling-Funktionen?
 +  * Gibt es bekannte Probleme mit dem neuen Image?
 +  * Sind die erforderlichen Docker- und Apache-Versionen vorhanden?
 +  * Sind weitere Nextcloud-Apps mit dem geplanten Serverupgrade kompatibel?
 +
 +Nextcloud-Major-Versionen nicht überspringen.
 +
 +===== 15. HPB vor einem Update sichern =====
 +
 +==== 15.1 Konfiguration sichern ====
 +
 +<code bash>
 +cd /opt/docker/talk-hpb
 +
 +umask 077
 +
 +BACKUP="/opt/backups/talk-hpb-$(date +%Y%m%d-%H%M).tar.gz"
 +
 +tar -czf "$BACKUP" \
 +  compose.yaml \
 +  .env \
 +  secrets
 +
 +chmod 600 "$BACKUP"
 +</code>
 +
 +Diese Sicherung enthält vertrauliche Schlüssel und muss besonders geschützt aufbewahrt werden.
 +
 +==== 15.2 Aktuelles Docker-Image dokumentieren ====
 +
 +<code bash>
 +docker inspect nextcloud-talk-hpb \
 +  --format '{{.Image}}'
 +</code>
 +
 +Die Ausgabe enthält die ID des tatsächlich verwendeten Images.
 +
 +Zusätzlich das konfigurierte Image anzeigen:
 +
 +<code bash>
 +docker inspect nextcloud-talk-hpb \
 +  --format '{{.Config.Image}}'
 +</code>
 +
 +==== 15.3 Aktuelles Image für Rollback sichern ====
 +
 +<code bash>
 +cd /opt/docker/talk-hpb
 +
 +umask 077
 +
 +docker image save \
 +  -o /opt/backups/talk-hpb-image-before-update.tar \
 +  ghcr.io/nextcloud-releases/aio-talk:latest
 +
 +chmod 600 /opt/backups/talk-hpb-image-before-update.tar
 +</code>
 +
 +Dieser Befehl setzt voraus, dass der bisherige Container tatsächlich mit dem lokal vorhandenen ''latest''-Image betrieben wird. Bei festgelegten Tags oder Digests muss stattdessen genau dieses Image gesichert werden.
 +
 +===== 16. Talk-HPB aktualisieren =====
 +
 +==== 16.1 Neue Version prüfen ====
 +
 +Vor dem Update die offiziellen Veröffentlichungen kontrollieren.
 +
 +  * https://github.com/nextcloud/all-in-one
 +  * https://github.com/nextcloud/spreed
 +  * https://nextcloud-talk.readthedocs.io/
 +
 +==== 16.2 Image herunterladen ====
 +
 +<code bash>
 +cd /opt/docker/talk-hpb
 +
 +docker compose pull
 +</code>
 +
 +==== 16.3 Container aktualisieren ====
 +
 +<code bash>
 +docker compose up -d
 +</code>
 +
 +Docker Compose erstellt den Container bei geändertem Image neu.
 +
 +Die Dateien ''.env'' und ''compose.yaml'' bleiben dabei unverändert.
 +
 +==== 16.4 Update prüfen ====
 +
 +<code bash>
 +docker compose ps
 +</code>
 +
 +Anschließend:
 +
 +<code bash>
 +docker logs --tail 100 nextcloud-talk-hpb
 +</code>
 +
 +Den öffentlichen Endpunkt testen:
 +
 +<code bash>
 +curl -fsS https://talk.example.org/api/v1/welcome
 +</code>
 +
 +Abschließend in Nextcloud Administration → Talk die Verbindung prüfen und einen Videoanruf durchführen.
 +
 +===== 17. Rollback bei Problemen =====
 +
 +Wenn ein neues Image Probleme verursacht, kann auf das vorherige Image zurückgewechselt werden.
 +
 +Voraussetzung ist, dass das vorherige Image beziehungsweise dessen Digest bekannt und verfügbar ist.
 +
 +==== 17.1 Vorheriges Image laden ====
 +
 +Wenn zuvor eine Image-Sicherung angelegt wurde:
 +
 +<code bash>
 +docker image load \
 +  -i /opt/backups/talk-hpb-image-before-update.tar
 +</code>
 +
 +==== 17.2 Compose-Konfiguration zurücksetzen ====
 +
 +In ''compose.yaml'' den vorher verwendeten Image-Tag beziehungsweise Digest eintragen.
 +
 +Keinen unveränderten ''latest''-Tag verwenden, wenn dieser inzwischen auf das neue, fehlerhafte Image verweist.
 +
 +==== 17.3 Container neu erstellen ====
 +
 +<code bash>
 +cd /opt/docker/talk-hpb
 +
 +docker compose up -d --force-recreate
 +</code>
 +
 +==== 17.4 Funktion prüfen ====
 +
 +<code bash>
 +docker compose ps
 +
 +curl -fsS https://talk.example.org/api/v1/welcome
 +</code>
 +
 +Danach die Verbindung in Nextcloud Talk erneut testen.
 +
 +===== 18. Nextcloud Server und Talk-App aktualisieren =====
 +
 +Ein Nextcloud-Serverupgrade ist unabhängig vom HPB-Update durchzuführen.
 +
 +Empfohlene Reihenfolge:
 +
 +  - Kompatibilität und Release Notes prüfen.
 +  - Datenbank und Nextcloud-Daten sichern.
 +  - Nextcloud-Serverimage aktualisieren.
 +  - Datenbankmigration und Nextcloud-Upgrade durchführen.
 +  - Nextcloud-Apps einschließlich Talk aktualisieren.
 +  - Administrationsübersicht prüfen.
 +  - HPB-Verbindung kontrollieren.
 +  - TURN-Konfiguration prüfen.
 +  - Testanruf durchführen.
 +
 +Bei einer Docker-Installation erfolgt das eigentliche Serverupgrade nach dem Update des Images entsprechend der verwendeten Nextcloud-Docker-Konfiguration.
 +
 +Die erforderlichen ''occ''-Befehle hängen vom konkreten Deployment ab.
 +
 +===== 19. Fehleranalyse =====
 +
 +==== 19.1 Containerprotokolle ====
 +
 +<code bash>
 +docker logs --tail 200 nextcloud-talk-hpb
 +</code>
 +
 +==== 19.2 Nur Fehler und Warnungen anzeigen ====
 +
 +<code bash>
 +docker logs --since 30m nextcloud-talk-hpb 2>&1 \
 +  | grep -Ei 'error|warn|failed|timeout|unauthorized|forbidden'
 +</code>
 +
 +==== 19.3 Apache prüfen ====
 +
 +<code bash>
 +sudo apache2ctl configtest
 +
 +sudo tail -n 100 /var/log/apache2/talk_error.log
 +</code>
 +
 +==== 19.4 Docker-Portzuordnung prüfen ====
 +
 +<code bash>
 +docker port nextcloud-talk-hpb
 +</code>
 +
 +==== 19.5 Häufige Fehler ====
 +
 +^ Symptom ^ Mögliche Ursache ^
 +| HTTP 502 | Container nicht erreichbar oder falscher Proxy-Port |
 +| HTTP 404 | Falscher Proxy-Pfad |
 +| WebSocket-Verbindung schlägt fehl | Proxy-Konfiguration oder Upgrade-Unterstützung fehlerhaft |
 +| Nextcloud erkennt HPB nicht | Backend-URL, DNS, TLS oder Signaling-Secret falsch |
 +| TURN-Test schlägt fehl | Portweiterleitung, Firewall oder TURN-Secret falsch |
 +| Video funktioniert nur intern | TURN-Erreichbarkeit oder NAT-Konfiguration fehlerhaft |
 +| Container startet nicht | Fehlerhafte Umgebungsvariablen oder Portkonflikt |
 +
 +===== 20. Sicherheitsempfehlungen =====
 +
 +  * Port 8081 ausschließlich lokal verfügbar machen.
 +  * Port 3478 nur für die erforderlichen Protokolle freigeben.
 +  * HTTPS mit gültigen Zertifikaten verwenden.
 +  * Secrets mit restriktiven Dateiberechtigungen schützen.
 +  * Docker-Images regelmäßig auf Sicherheitsupdates prüfen.
 +  * Vor Änderungen Sicherungen erstellen.
 +  * Nicht mehr benötigte Container und Images kontrolliert entfernen.
 +  * Apache- und Docker-Protokolle regelmäßig prüfen.
 +  * Keine Secrets oder vollständigen Umgebungsdateien in Tickets oder Wikis veröffentlichen.
 +
 +===== 21. Regelmäßige Wartung =====
 +
 +^ Intervall ^ Tätigkeit ^
 +| Wöchentlich | Containerstatus und relevante Logs prüfen |
 +| Wöchentlich | Sicherheitsmeldungen kontrollieren |
 +| Monatlich | Release Notes und verfügbare HPB-Updates prüfen |
 +| Monatlich | Backup und Wiederherstellbarkeit kontrollieren |
 +| Nach jedem Update | Signaling-Verbindung und Testanruf prüfen |
 +| Nach Netzwerkänderungen | TURN und externe Erreichbarkeit testen |
 +
 +===== 22. Offizielle Dokumentation =====
 +
 +  * [[https://nextcloud-talk.readthedocs.io/en/stable/quick-install/|Nextcloud Talk – Quick Install]]
 +  * [[https://github.com/nextcloud/all-in-one|Nextcloud All-in-One Repository]]
 +  * [[https://github.com/nextcloud/spreed|Nextcloud Talk Repository]]
 +  * [[https://github.com/strukturag/nextcloud-spreed-signaling|Nextcloud Signaling Server]]
 +  * [[https://docs.docker.com/compose/|Docker Compose Dokumentation]]
 +
 +===== 23. Zusammenfassung =====
 +
 +Das Nextcloud Talk Hochleistungs-Backend wird als eigenständiges Docker-Compose-Projekt betrieben.
 +
 +Die Trennung von Nextcloud Server, Talk-App und HPB ermöglicht eine kontrollierte Wartung und Aktualisierung der Komponenten.
 +
 +Für einen zuverlässigen Betrieb sind insbesondere folgende Punkte entscheidend:
 +
 +  * Korrekte Signaling-Konfiguration
 +  * Funktionierender Apache-Reverse-Proxy
 +  * Erreichbarer TURN-Server
 +  * Korrekte Portfreigaben
 +  * Sichere Aufbewahrung der Zugangsschlüssel
 +  * Regelmäßige Updates und Backups
 +  * Praktische Tests mit mehreren Teilnehmern
  
nextcloud/talk.1793348396.txt.gz · Zuletzt geändert: von franz

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki