Logo: Nextcloud Talk High Performance Backend

Nextcloud Talk – High Performance Backend

Überblick

  • Verwendetes System: Ubuntu 20.04 64 bit
  • Reverse Proxy: Apache Webserver
  • Zeitdauer: 10 – 15 Minuten
  • Voraussetzungen:
    • Bestehende Nextcloud Instanz für die Verwendung von Talk
    • Installierter Docker Daemon

Nextcloud High Performance Back-End installieren

Einleitung

Das Nextcloud High Performance Back End (HPBE) ermöglicht die Durchführung größerer Videokonferenzen mit einer höheren Teilnehmerzahl. Bis vor Kurzem war diese Software ausschließlich zahlenden Kunden vorbehalten. Jetzt ist sie jedoch unter einer Open-Source-Lizenz verfügbar.

Aktuelle Version von git downloaden

Zuerst laden wir die neueste Version von Git herunter und installieren Git anschließend auf unserem Server.

apt-get install git

Im Anschluss führen wir die folgenden Befehle aus:

mkdir /private/docker/ -p
cd /private/docker/
git clone https://github.com/strukturag/nextcloud-spreed-signaling.git nextcloud-hpbe
cd nextcloud-hpbe

Nach kurzer Zeit ist die neueste Version auf eurem Server installiert. Jetzt müssen noch einige Dateien angepasst werden.

Passwörter generieren

Nun gilt es, einige Passwörter für unseren Server zu erstellen. Verwendet die folgenden Befehle, um die Kennwörter zu generieren, und speichert sie anschließend in einem Textdokument. Ihr benötigt diese Passwörter später für die Konfiguration

Hashkey: openssl rand -base64 16
Blockkey: openssl rand -base64 16
API-Key: openssl rand -base64 16
SHARED-SECRET: openssl rand -hex 16
STATIC-SECRET: openssl rand -hex 32

docker-compose.yml erstellen

Jetzt können wir mit der eigentlichen Installation von Nextcloud HPBE beginnen. Öffnet dazu die folgende Datei:

nano /private/docker/nextcloud-hpbe/docker-compose.yml

Nun kopiert ihr den folgenden Code in die Datei. Dieser Code dient als Bauplan für den Nextcloud HPBE Container.

version: '3'

services:
  spreedbackend:
    build:
         context: .
         dockerfile: docker/server/Dockerfile    
    container_name: spreedbackend
    volumes:
      - ./server.conf:/config/server.conf
    restart: unless-stopped
    depends_on:
      - nats
      - janus
      - coturn
    ports:
      - 127.0.0.1:9090:8080
    networks:
      - proxy

  nats:
    image: nats:2.2.1
    container_name: nats
    volumes:
      - ./gnatsd.conf:/config/gnatsd.conf
    command: ["-c", "/config/gnatsd.conf"]
    restart: unless-stopped
    networks:
      - proxy

  janus:
    build: docker/janus
    container_name: janus
    command: ["janus", "--full-trickle"]
    restart: unless-stopped
    networks:
      - proxy

  coturn:
    image: coturn/coturn:latest
    container_name: coturn
    networks:
      - proxy
    environment:
      REALM: signal.euredomain.de
      STATIC_SECRET: <STATIC SECRET>
    restart: unless-stopped
    ports:
      - "3478:3478/tcp"
      - "3478:3478/udp"

networks:
  proxy:
    external: true

Ersetzt dort den REALM sowie die in „<>“ eingeschlossenen Keys mit den zuvor erstellten Werten.

server.conf anlegen

Jetzt erstellen wir eine neue Konfigurationsdatei. Ich lege solche Dateien gerne in Docker Volumes ab, da diese so automatisch in mein Backup integriert werden. Gebt dazu folgenden Befehl ein:

docker volume create nchp
/var/lib/docker/volumes/nchpba/_data/server.conf

Hier kopiert ihr folgenden Code hinein:

[http]
listen = spreedbackend:8080
[app]
debug = false

[sessions]
hashkey = <Hashkey>
blockkey = <Blockkey>

[backend]
backends = backend-1 #Hier kommen weitere Server hin backend-1, backend-2, backend-3
allowall = false
timeout = 10
connectionsperhost = 8

[backend-1]
url = https://nextcloud.gnilebein.de
secret = <SHARED-SECRET>

#[backend-2]
#url = https://nextcloud2.example.com
#secret = openssl rand -hex 16

#[backend-3]
#url = https://nextcloud3.example.com
#secret = openssl rand -hex 16


[nats]
url = nats://nats:4222

[mcu]
type = janus
url = ws://janus:8188

[turn]
apikey = <API-Key>
secret = <STATIC-SECRET>
servers = turn:coturn:3478?transport=udp,turn:coturn:3478?transport=tcp

Ersetzt auch hier die in „<>“ eingeschlossenen Secrets sowie die URLs der erlaubten Quellen. Speichert anschließend die Datei und passt die Berechtigungen mit folgendem Befehl an:

chmod 644 server.conf

Docker Image erstellen

Nun lassen wir unseren Server die Images erstellen. Gebt dazu folgenden Befehl ein:

docker compose build

Je nach Leistung eures Servers kann dies einige Minuten dauern.

HPBE starten

Gebt nun folgenden Befehl ein, um den HPBE-Container zu starten:

docker compose -f /private/docker/nextcloud-hpbe/docker-compose.yml up -d

Apache als Reverse Proxy konfigurieren

Ich verwende einen Apache Webserver als Reverse Proxy. Für die Nutzung mit dem Nextcloud Talk High Performance Backend müssen einige Proxy-Module aktiviert werden:

a2enmod proxy proxy_http proxy_wstunnel

Zum Schluss muss die passende vHost Konfiguration um folgendes Snippet erweitert werden:

    # Enable proxying Websocket requests to the standalone signaling server.
    ProxyPass "/standalone-signaling/"  "ws://127.0.0.1:9090/"

    RewriteEngine On
    # Websocket connections from the clients.
    RewriteRule ^/standalone-signaling/spreed$ - [L]
    # Backend connections from Nextcloud.
    RewriteRule ^/standalone-signaling/api/(.*) http://127.0.0.1:9090/api/$1 [L,P]

Damit diese aktiv wird ist ein Neustart des Apache Webservers notwendig:

systemctl restart apache2.service 

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert