Nextcloud Talk - High Performance Backend
-
- CloudPanel v2
-
Foxly -
15. März 2024 um 09:45 -
0 Kommentare -
4.115 Mal gelesen
Nextcloud Talk
Nextcloud Talk ist ein vollständig selbst gehosteter, lokaler Audio/Video- und Chat-Kommunikationsdienst. Sie überträgt Bild, Ton und Dateien direkt zwischen den Teilnehmern. Daher können alle Daten in Ende-zu-Ende-verschlüsselten Kanälen fließen. Dank der in modernen Browsern dafür integrierten Technik braucht man keine Extra-Software, nicht einmal fürs Teilen von Anwendungsfenstern oder des Desktops. Und das alles DSGVO-konform. Leider hatte der Dienst zu Anfang ein Problem, da es limitiert auf zehn Personen war. Mit dem High Performance Backend entfällt diese Limitierung.
Die Nextcloud GmbH hat sich mit seinem Partner Struktur AG dazu entschlossen, diese Vorteile des High Performance Backend an die Community weiterzugeben. Somit steht das HPB nun als Open Source zur Verfügung, wie in diesem Blog-Post zu entnehmen ist. Wie wichtig Kommunikation über digitale Medien ist, hat uns die Pandemie eindeutig gezeigt.
Die Installation ohne Docker war allerdings nicht trivial, sondern setzte ein gewisses Maß an Grundkenntnissen voraus. Dies ist mit Docker nun Geschichte!
minimale Systemvoraussetzungen für 150 Personen:
- mind. 32GB Festplattenspeicher
- mind. 8GB Arbeitsspeicher
- mind. 4 CPU-Kerne
Installation
Wie immer müssen zuerst die erforderlichen Pakete für die eigentliche Installation, installiert werden. Und los gehts.
apt update && apt upgrade -y
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
Jetzt fügen Sie den offizielen Docker GPG-Schlüssel hinzu.
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Wenn Sie überprüfen möchten, ob der GPG-Schlüssel hinzugefügt wurde, können Sie dies mit folgendem Befehl.
apt-key fingerprint 0EBFCD88
Im Anschluss fügen Sie das Repository hinzu.
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
Der Befehl lsb_release -cs gibt den Namen der installierten Debian-Distribution zurück (z. B. buster für Debian 10).
Der Parameter arch ist notwendig, um die Architektur Ihres Geräts anzugeben, Sie müssen zwischen den Optionen amd64, armhf oder arm64 wählen.
Jetzt lassen Sie das System nach Updates suchen.
apt update
Installation der Docker Engine, Docker-Compose sowie Git
apt install docker-ce docker-ce-cli containerd.io docker-compose git
Überprüfen Sie die Installation mit dem Befehl.
docker -v
Zum Abschluss müssen Sie einen User zur Gruppe Docker hinzufügen. Sollten Sie CloudPanel nutzen, setzten Sie den User clp ein.
sudo adduser clp docker
Git Repository klonen
cd /opt/
git clone https://github.com/strukturag/nextcloud-spreed-signaling.git && cd nextcloud-spreed-signaling
Für die Einrichtung des Signaling Servers, benötigen Sie einige Sicherheitsschlüssel, die in den Konfigurationsdateien hinterlegt werden müssen. Mit diesem kleinen Script, werden alle Schlüssel in einer Datei abgelegt und müssen im Anschluss nur an die richtige Stelle kopiert werden. Um das Script zu nutzen, legen Sie z. B. eine keys.sh mit nano oder vi an und kopieren den unten stehenden Quellcode hinein. Damit die Datei ausgeführt werden kann, müssen Sie die Berechtigung mit chmod +x keys.sh noch ändern. Jetzt kann die Datei mit ./keys.sh ausgeführt werden.
touch NC_keys
echo '#### STATICSECRET ####' >> NCkeys
openssl rand -hex 32 >> NC_keys
echo '' >> NC_keys
echo '#### HASHKEY ####' >> NC_keys
openssl rand -base64 16 >> NC_keys
echo '' >> NC_keys
echo '#### BLOCKKEY ####' >> NC_keys
openssl rand -base64 16 >> NC_keys
echo '' >> NC_keys
echo '#### SHAREDSECRET / SECRET ####' >> NCkeys
openssl rand -hex 16 >> NC_keys
echo '' >> NC_keys
echo '#### API-KEY ####' >> NC_keys
openssl rand -base64 16 >> NC_keys
cat NC_keys
Alles anzeigen
Erstellung des Docker-Compose
nano docker-compose.yml
Folgende Einträge ändern REALM* und STATIC_SECRET:
* REALM hier sollte eine eigene Subdomain für den Signaling-Server erstellt werden
version: '3'
services:
spreedbackend:
build: .
volumes:
- ./server.conf:/config/server.conf
network_mode: host
restart: unless-stopped
depends_on:
- nats
- janus
- coturn
nats:
image: nats:2.2.1
volumes:
- ./gnatsd.conf:/config/gnatsd.conf
command: ["-c", "/config/gnatsd.conf"]
network_mode: host
restart: unless-stopped
janus:
build: docker/janus
command: ["janus", "--full-trickle"]
network_mode: host
restart: unless-stopped
coturn:
build: docker/coturn
network_mode: host
environment:
REALM: signaling.meinedomain.de
STATIC_SECRET: static_secret_same_in_server_conf
restart: unless-stopped
Alles anzeigen
Die Serverkofiguration erstellen:
nano server.conf
Kopieren Sie den unten stehenden Quellcode in den Editor und passen Sie die Konfiguration an. Es können auch mehrere Backends eingestellt werden, denken Sie nur hier daran, dass aus Sicherheitsgründen, für jede Instanz eigene Sicherheitsschlüssel generiert werden sollten.
[http]
listen = 127.0.0.1:8080
[app]
debug = false
[sessions]
hashkey = aus der Keys Datei ennehmen
blockkey = aus der Keys Datei ennehmen
[backend]
backends = backend-1 #hier können Sie weitere Backends durch Komma getrennt hinzufügen Backend-1, Backend-2...
allowall = false
timeout = 10
connectionsperhost = 8
[backend-1]
url = https://nextcloud.meinedomain.com
secret = aus der Keys Datei ennehmen
#[backend-2]
#url = https://nextcloud2.meinedomain.com
#secret = neue Schlüssel erstellen
[nats]
url = nats://localhost:4222
[mcu]
type = janus
url = ws://localhost:8188
[turn]
apikey = aus der Keys Datei ennehmen
secret = aus der Keys Datei ennehmen # --> STATICSECRET
servers = turn:localhost:3478?transport=udp,turn:localhost:3478?transport=tcp
Alles anzeigen
Datei Speichern und die Rechte vergeben 644:
chmod 644 server.conf
Image erstellen
docker-compose build
Image Starten, dies dauert in der Regel etwas länger, bis alle Container erstellt wurden.
docker-compose up -d
Firewall
Damit der Dienst auch erreichbar ist, muss der Port 3478 TCP und UDP freigegeben werden.
CloudPanel vHost konfiguration
Wenn Sie hier schon in den Einstellungen sind, können Sie für die Subdomain auch direkt ein kostenloses Lets Encrypt Zertifikat erstellen lassen.
upstream signaling {
server 127.0.0.1:8080;
}
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
{{ssl_certificate_key}}
{{ssl_certificate}}
server_name signaling.meineDomain.de;
{{root}}
{{nginx_access_log}}
{{nginx_error_log}}
if ($bad_bot = 1) {
return 403;
}
if ($scheme != "https") {
rewrite ^ https://$host$uri permanent;
}
### Secure Headers ###
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header Referrer-Policy no-referrer;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Robots-Tag all;
add_header Referrer-Policy no-referrer-when-downgrade;
add_header X-Frame-Options "SAMEORIGIN";
location ~ /.well-known {
auth_basic off;
allow all;
}
location /standalone-signaling/ {
proxy_pass http://signaling/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /standalone-signaling/spreed {
proxy_pass http://signaling/spreed;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Alles anzeigen
Konfiguration der Talk App in Nextcloud
Laden Sie in Ihrer Nextcloud die Talk-App herunter. Im Anschluss gehen Sie in den Administrationsbereich und hier auf Talk. Ergänzen Sie folgende Bereiche:
- STUN-Server: signaling.meineDomain.de:3478
- TURN-Server: signaling.meineDomain.de:3478 Als Secret verwendet Ihr das STATICSECRET
- Hochleistungs-Backend: https://signaling.meineDomain.de/standalone-signaling/ Als Secret verwendet Ihr das SHAREDSECRET
Sind alle Einstellungen erledigt, sollte Nextcloud Talk nun reibungslos funktionieren.
Mobile Apps
Natürlich finden sich im Google Play Store und im App Store von Apple auch Mobile Apps für Nextcloud Talk
Supported Browsers
Über den Autor
Ich bin IT-Spezialist im Fachbereich der IT-Administratoren. Neben Beruf und Familie, erstelle ich als, Teil meines Hobbys, gerne Tutorials, sowie WoltLab Stile. Aktuell befinde ich mich auf meinem Informationstechnikermeister.
Kommentare
Neu erstellte Kommentare unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.
Neu erstellte Kommentare unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.