Nextcloud/Talk/HPB

Aus Foxwiki

Nextcloud Talk High Performance Backend

Beschreibung

Janus WebRTC gateway

WebRTC ist eine Abkürzung für Web Real-Time Communication, also Echtzeitkommunikation. WebRTC ist ein offener Standard, der durch eine Sammlung von Kommunikationsprotokollen und Programmierschnittstellen definiert wird. Dieser Standard ermöglicht es Clients (wie beispielsweise Webbrowsern) eine direkte Verbindung zueinander aufzubauen. Der Vorteil besteht darin, daß keine zusätzliche Software installiert werden muss, wie es etwa bei Skype oder Zoom der Fall ist. Des Weiteren werden Server-Ressourcen geschont. WebRTC läuft innerhalb der Browser-Sandbox und ist dadurch auch sicher - es werden keine PlugIns benötigt oder andere Prozesse gestartet. Damit die Clients voneinander erfahren, wie sie die direkte Verbindung zueinander aufbauen können, sind die Dienste eines Signaling-Servers notwendig.

Weitere Informationen
  1. https://github.com/meetecho/janus-gateway

NATS messaging server

Der NATS-Server ermöglicht es Anwendungen und Diensten Daten auszutauschen, die in Nachrichten unterteilt sind. Clients stellen über eine URL eine Verbindung zum NATS-Server her und können anschließend Nachrichten zu einem bestimmten Betreff abonnieren oder veröffentlichen.

Weitere Informationen
  1. https://nats.io/

Signaling-Server

Der Signaling-Server ermöglicht Clients, die eine direkte Verbindung zueinander aufbauen wollen, den Austausch von Informationen, die dies gewährleisten. Möchte sich ein Client A mit einem Client B verbinden, signalisiert er dies dem Signaling-Server. Sollte Client B der Verbindungsanfrage zustimmen, übermittelt dieser seine Verbindungsinformationen an den Signaling-Server, der diese an Client A weiterreicht. Daraufhin erfolgt der direkte Verbindungsaufbau zwischen den Clients A und B.

Weitere Informationen
  1. https://github.com/strukturag/nextcloud-spreed-signaling

Apache Webserver

Der Apache Webserver ist einer der meistgenutzten Webserver im Internet. Die Software ist modular aufgebaut und dementsprechend durch die Installation von zusätzlichen Modulen in ihrer Funktionalität erweiterbar. Für den Signaling-Server wird eine eigene Subdomain erzeugt (signaling.foxtom.de) und Apache als Reverse-Proxy konfiguriert. Bei einem solchen Szenario beantwortet der Webserver die Anfragen nicht selbst, sondern übergibt sie an einen Backend-Server, der keine direkte Verbindung zum Internet hat. Der Backend-Server - in diesem Fall der Signaling-Server - bearbeitet die Anfrage und übergibt den Inhalt zurück an den Apache-Webserver, der damit die HTTP-Antwort erzeugt und zurück an den anfragenden Client sendet. Im Endeffekt wird hier ein Zugang zum Signaling-Server über HTTPS geschaffen.

Weitere Informationen
  1. https://httpd.apache.org/docs/2.4/ Dokumentation zum Apache HTTP Server
  2. https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html Reverse Proxy

Installation

Vorbereitung

Schlüssel (keys) erstellen

<api-Key> für Janus
$ openssl rand -base64 16
Hash-Key
$ openssl rand -hex 16
Block-Key
$ openssl rand -hex 16
Secret Key für die Nextcloud
$ openssl rand -hex 16
openssl
  • Option rand Pseudozufallszeichenketten einer bestimmten Kodierung und der angegebenen Länge erzeugt werden.
  • Option base64
    • wird eine Zeichenkette aus Zahlen, Groß- & Kleinbuchstaben, sowie den Zeichen '+' und '/' generiert
  • Option hex eine Zeichenkette aus Hexadezimalzahlen erzeugt wird.


Server-Daten

Nextcloud-Server: cloud.foxtom.de
TURN-Server:      cloud.foxtom.de:5349
Signaling Server: signaling.foxtom.de


Konfiguration

Dateien

Anwendungen

Sicherheit

Dokumentation

RFC

Man-Pages

Info-Pages

Projekt-Homepage

Links

Siehe auch

Weblinks

  1. https://github.com/strukturag/nextcloud-spreed-signaling
  2. https://de.wikipedia.org/wiki/WebRTC
  3. https://decatec.de/home-server/nextcloud-talk-mit-eigenem-signaling-server-high-performance-backend/
  4. https://decatec.de/home-server/nextcloud-auf-ubuntu-server-20-04-lts-mit-nginx-mariadb-php-lets-encrypt-redis-und-fail2ban/
  5. https://decatec.de/home-server/nextcloud-talk-mit-eigenem-turn-server-coturn/
  6. https://decatec.de/linux/lets-encrypt-zertifikate-mit-acme-sh-und-nginx/
  7. https://decatec.de/home-server/rsa-und-ecdsa-zertifikate-mit-nginx-hybrid-loesung/
  8. https://decatec.de/home-server/tlsv1-3-unter-ubuntu-server-18-04-lts-mit-nginx/
  9. https://decatec.de/home-server/docker-auf-ubuntu-server/

Einzelnachweise


Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5


NATS

siehe Nextcloud:Talk:HPB:NATS

Signaling Server

siehe Nextcloud:Talk:HPB:Signaling-Server

Firewall konfigurieren

$ sudo apt install ufw
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow ssh
$ sudo ufw allow 5349/tcp
$ sudo ufw allow 5349/udp
$ sudo ufw enable
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
5349/tcp                   ALLOW       Anywhere                  
5349/udp                   ALLOW       Anywhere                  
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)             
5349/tcp (v6)              ALLOW       Anywhere (v6)             
5349/udp (v6)              ALLOW       Anywhere (v6)

Einbinden in Nextcloud Talk

  • Dies geschieht unter Einstellungen > Talk.
  • Ganz unten wird nun ein Signaling Server mit dem Plus-Zeichen hinzugefügt.
  • Die Domain lautet hierfür https://signaling.meinedomain.de/standalone-signaling.
  • Unter Gemeinsames Geheimnis wird nun der Nextcloud Secret Key hinterlegt, den wir ganz am Anfang erzeugt haben:

Hinterlegen des Signaling Servers in der Nextcloud Talk Konfiguration

Die Option SSL Zertifikat überprüfen sollte hier aktiviert werden, wenn der Signaling Server über ein valides Zertifikat verfügt (zum Beispiel Let’s Encrypt).


Quelle: https://nichteinschalten.de/signalisierungsserver-fuer-nextcloud-aufsetzen-how-to/

netstat -tulpen | grep 8080

http://nats.io/documentation/tutorials/gnatsd-install/


https://github.com/meetecho/janus-gateway) can be used to act as a WebRTC gateway. See the documentation of Janus on how to configure and run the server. At least the VideoRoom plugin and the websocket transport of Janus must be enabled.

The signaling server uses the VideoRoom plugin of Janus to manage sessions. All gateway details are hidden from the clients, all messages are sent through the signaling server. Only WebRTC media is exchanged directly between the gateway and the clients.

Edit the server.conf and enter the URL to the websocket endpoint of Janus in the section [mcu] and key url. During startup, the signaling server will connect to Janus and log information of the gateway.

The maximum bandwidth per publishing stream can also be configured in the section [mcu], see properties maxstreambitrate and maxscreenbitrate.

Schlüssel für den TURN-Server

  • Talk-Einstellungen der Nextcloud


Sofern bereits ein TURN-Server installiert ist, kann der benötigte Schlüssel im Administrator-Bereich der Nextcloud ausgelesen werden: Einstellungen >> Talk. Über den Link: https://cloud.foxtom.de/settings/admin/talk gelangt man direkt zu den Einstellungen. Der Schlüssel findet sich auch in der Datei /etc/turnserver.conf (static-auth-secret=<Schlüssel>).

TURN-Server-Konfiguration im Administrator-Bereich der Nextcloud-Talk-App
TURN-Server-Konfiguration im Administrator-Bereich der Nextcloud-Talk-App