Nextcloud mit einem eigenen coturn-Server

Voraussetzung: coturn läuft auf einem eigenen Server

Videochats oder Chats mit der Familie – alles mit Ihrer privaten Nextcloud auf Ihrem Server. Zögern Sie nicht länger und zeigen Sie WhatsApp, Skype und Anderen, wie sichere Kommunikation ganz einfach funktioniert.

Wechseln Sie zuerst in den priviligierten Benutzermodus (sudo -s) und beginnen dann mit der Installation eines stun-/coturn-Servers auf einem separaten Server, um auch Gespräche von Teilnehmern hinter NAT-Infrastrukturen verlässlich zustande kommen zu lassen.

Unter Debian und Ubuntu ist dafür das Paket coturn als STUN/TURN-Server verfügbar.

sudo -s
apt install coturn -y

Passen Sie die Konfiguration an:

nano /etc/default/coturn

Entfernen Sie die Raute ‚#‘ am Anfang der Zeile „TURNSERVER_ENABLED=1“

#
# Uncomment it if you want to have the turnserver running as
# an automatic system service daemon
#
TURNSERVER_ENABLED=1

Speichern und schließen Sie diese Datei und erzeugen dann eine neu Konfigurationsdatei namens turnserver.conf:

mv /etc/turnserver.conf /etc/turnserver.conf.bak && nano /etc/turnserver.conf

Generieren Sie das dhparam-file:

mkdir -p /etc/turnserver
openssl dhparam -dsaparam -out /etc/turnserver/dhp.pem 4096

Kopieren Sie alle nachfolgenden Zeilen hinein. Achten Sie darauf, dass wir davon ausgehen, die Let’s Encrypt-Zertifikate unter /etc/letsencrypt/rsa-certs/… vorzufinden. Passen Sie die Pfade bei Bedarf an:

tls-listening-port=443
listening-ip=<ihre IPv4>
listening-ip=<ihre IPv6>
relay-ip=<ihre IPv4>
relay-ip=<ihre IPv6>
min-port=32769
max-port=65535
verbose
fingerprint
use-auth-secret
static-auth-secret=1212121212121212121212121212121212121212121212121212121212121212
realm=coturn.domain.de
cert=/etc/letsencrypt/rsa-certs/fullchain.pem
pkey=/etc/letsencrypt/rsa-certs/privkey.pem
cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
dh-file=/etc/turnserver/dhp.pem
keep-address-family
no-cli
no-tlsv1
no-tlsv1_1
no-multicast-peers
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=::ffff:0:0-::ffff:ffff:ffff
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=64:ff9b:1::-64:ff9b:1:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2001:db8::-2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Speichern und schließen Sie diese Datei und generieren dann ein neues „Secret“:

openssl rand -hex 32

Öffnen Sie die Datei erneut

nano /etc/turnserver.conf

und ersetzen sowohl

static-auth-secret 1212121212121212121212121212121212121212121212121212121212121212

mit dem zuvor neu generierten Secret, als auch den Dummy-Eintrag coturn.domain.de, IPv4 und IPv6 mit Ihrer „echten“ Domain-URL. Öffnen Sie den Port 443/tcp und 443/udp in Ihrer UFW (Firewall)

ufw allow 443/tcp && ufw allow 443/udp

Passen Sie noch den Service an, um den priviligierten Port 443 nutzen zu können:

mkdir -p /etc/systemd/system/coturn.service.d
nano /etc/systemd/system/coturn.service.d/override.conf
[Service]
LimitNOFILE=1048576
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=
ExecStart=/usr/bin/turnserver --daemon -c /etc/turnserver.conf --pidfile /run/turnserver/turnserver.pid --no-stdout-log --simple-log --log-file /var/log/turnserver/turnserver.log
Restart=always

Richten wir abschließend noch das Logrotating ein:

nano /etc/logrotate.d/coturn

Fügen Sie den nachfolgenden Text in die leere Datei ein:

/var/log/turnserver/*.log
{
	rotate 7
	daily
	missingok
	notifempty
	compress
	postrotate
		/bin/systemctl kill -s HUP coturn.service
	endscript
}

Erstellen Sie nun das Logverzeichnis und setzen die korrekten Berechtigungen:

mkdir -p /var/log/turnserver
chown turnserver:turnserver /var/log/turnserver

Starten Sie coturn neu:

service coturn restart

Überprüfen Sie ihren stun-/coturn-Server hier. Fügen Sie, wie im Beispiel dargestellt, anstatt des Beispiels „stun:coturn.domain.de:443“ ihren Domainnamen und Port ein.

Werden Ihnen Einträge vom Typ „srflx“ und in der Spalte ‚Priority‘ in der letzten Zeile „Done“ angezeigt, so funktioniert ihr coturn einwandfrei. Wechseln Sie dann in Ihre Nextcloud und aktivieren als Administrator die Nextcloud-Talk-App:

Fügen Sie bei STUN-Server Ihren eigenen hinzu:

coturn.domain.de:443

Ersetzen Sie dabei coturn.domain.de durch ihren richtigen Domainnamen.

Fügen Sie bei TURN-Server ebenfalls ihren coturn-Server hinzu und tragen das zuvor generierte coturn-Secret ein. Wählen Sie dabei sowohl „tunr und turns“, als auch „UDP und TCP“ für die Kommunikation aus:

turn und turns | coturn.domain.de:443 |  12121...12122 | UDP und TCP

Nextcloud weist leider nur sehr versteckt darauf hin, dass ab ca. vier gleichzeitigen Teilnehmern ein zusätzlicher „Signaling Server“ notwendig wird, der wiederum kostenpflichtig bei Nextcloud zu erwerben ist oder gemäß meiner Nextcloud-HPB (Signaling)-Anleitung installiert werden kann.

Werfen Sie zudem auch einen Blick auf meinen Jitsi-Meet oder BigBlueButton-Guide.

Die Installation und das Einbinden von Nextcloud Talk wurde damit bereits erfolgreich abgeschlossen. Daher wünsche ich Ihnen viel Spaß mit Ihren Daten in Ihrer privaten Cloud. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen!