Nextcloud Talk er­mög­licht Audio- und Vi­deo­an­ru­fe direkt innerhalb von Nextcloud. Innerhalb eines lokalen Netzwerks oder bei un­kom­pli­zier­ten In­ter­net­ver­bin­dun­gen funk­tio­niert das häufig ohne zu­sätz­li­che Kon­fi­gu­ra­ti­on. Befinden sich Teil­neh­men­de jedoch hinter re­strik­ti­ven Firewalls, Un­ter­neh­mens­netz­wer­ken oder be­stimm­ten NAT-Kon­fi­gu­ra­tio­nen, kann keine direkte Ver­bin­dung aufgebaut werden. In diesem Fall kommt ein TURN-Server zum Einsatz.

Was ist ein Nextcloud TURN-Server?

Ein TURN-Server fungiert als Ver­mitt­lungs­stel­le: Anstatt Audio- und Vi­deo­da­ten direkt zwischen den Ge­sprächs­teil­neh­men­den aus­zu­tau­schen, werden die Daten über den TURN-Server über­tra­gen. Nextcloud Talk versucht dabei grund­sätz­lich zunächst eine direkte Peer-to-Peer-Ver­bin­dung auf­zu­bau­en, nutzt bei Bedarf einen STUN-Server zur Er­mitt­lung der öf­fent­li­chen Netz­werk­adres­se und greift erst dann auf TURN als Fallback zurück. Für eine zu­ver­läs­sig er­reich­ba­re Talk-In­stal­la­ti­on empfiehlt sich daher ins­be­son­de­re bei externen Nutzenden ein eigener TURN-Server.

Vor­aus­set­zun­gen für einen Nextcloud Talk TURN-Server

Bevor Sie mit der Ein­rich­tung beginnen, benötigen Sie eine funk­tio­nie­ren­de Nextcloud-In­stal­la­ti­on mit ak­ti­vier­ter Nextcloud-Talk-App. Nextcloud Talk setzt für WebRTC HTTPS voraus. Ihre Nextcloud-Instanz sollte daher bereits über ein gültiges TLS-Zer­ti­fi­kat er­reich­bar sein. Shared Hosting eignet sich für um­fang­rei­che­re Talk-In­stal­la­tio­nen nur ein­ge­schränkt, da Talk zu­sätz­li­che Ser­ver­last erzeugt und Sie für einen eigenen TURN-Server ins­be­son­de­re Zugriff auf Netz­werk­ports und einen dauerhaft laufenden Ser­ver­dienst benötigen.

Für die folgende Ein­rich­tung benötigen Sie:

  • eine Nextcloud-In­stal­la­ti­on mit ak­ti­vier­tem Nextcloud Talk,
  • Ad­mi­nis­tra­tor­rech­te innerhalb von Nextcloud,
  • einen Linux-Server, auf dem Sie Software in­stal­lie­ren dürfen,
  • SSH-Zugriff mit sudo- oder Root-Rechten,
  • eine öf­fent­li­che IPv4-Adresse,
  • eine Domain bzw. Subdomain,
  • Zugriff auf die DNS-Ein­stel­lun­gen dieser Domain,
  • eine Firewall, bei der Sie TCP- und UDP-Ports freigeben können.

Als Be­triebs­sys­tem eignet sich bei­spiels­wei­se Ubuntu Server 26.04 LTS. Auch Ubuntu 24.04 LTS oder aktuelle Debian-Versionen können verwendet werden. Für diese Anleitung wird bei­spiel­haft davon aus­ge­gan­gen, dass der TURN-Server unter turn.example.com er­reich­bar sein soll. Ersetzen Sie diese Adresse in sämt­li­chen Befehlen durch Ihre eigene Domain.

vServer / VPS
IONOS VPS un­schlag­bar günstig – und jetzt noch besser.
  • NEU: Flexibel skalieren mit VM-Cloning, Load Balancing, neuen Storage-Optionen und mehr
  • Un­be­grenzt Traffic, > 99,99% Ver­füg­bar­keit 
  • 24/7 Experten-Support mit per­sön­li­chem Berater

VPS oder Dedicated Server: Welcher Server eignet sich für Nextcloud Talk TURN?

Für einen TURN-Server ist nicht allein die Re­chen­leis­tung ent­schei­dend. Besonders wichtig ist die Netz­werk­an­bin­dung, denn TURN leitet Audio- und Vi­deo­da­ten zwischen den Ge­sprächs­teil­neh­men­den weiter. Wird TURN tat­säch­lich benötigt, laufen die über­tra­ge­nen Me­di­en­da­ten daher durch den Server.

Ein kleiner oder mit­tel­gro­ßer VPS ist für private In­stal­la­tio­nen, kleine Un­ter­neh­men und Teams mit wenigen gleich­zei­tig aktiven Talk-Ver­bin­dun­gen in der Regel eine sinnvolle Aus­gangs­ba­sis. Für einen aus­schließ­lich als TURN-Server genutzten VPS sind bei­spiels­wei­se zwei virtuelle CPU-Kerne und einige Gigabyte Ar­beits­spei­cher häufig aus­rei­chend. Wichtiger sind eine stabile Anbindung, eine öf­fent­li­che IP-Adresse und ein aus­rei­chend großes Traffic-Kon­tin­gent.

Bei re­gel­mä­ßig statt­fin­den­den Vi­deo­kon­fe­ren­zen mit vielen gleich­zei­tig aktiven Nut­ze­rin­nen und Nutzern gewinnt dagegen die ver­füg­ba­re Netz­werk­band­brei­te zunehmend an Bedeutung. Für größere In­stal­la­tio­nen kann daher ein leis­tungs­fä­hi­ger VPS be­zie­hungs­wei­se Cloud Server oder ein Dedicated Server sinnvoll sein. Nextcloud empfiehlt bei größeren De­ploy­ments aus­drück­lich, den TURN-Server auf einer eigenen Maschine zu betreiben, die direkt aus dem Internet er­reich­bar ist.

Ein­satz­sze­na­rio Ge­eig­ne­ter Server
Private Nextcloud, Familie, kleines Team, ge­le­gent­li­che Talk-Anrufe kleiner bis mittlerer VPS
Un­ter­neh­men mit re­gel­mä­ßi­gen Vi­deo­an­ru­fen und mehreren par­al­le­len Ge­sprä­chen leis­tungs­fä­hi­ger VPS bzw. Cloud Server
Viele parallele Ver­bin­dun­gen und hoher TURN-Traffic großer VPS oder Dedicated Server
Große Talk-In­stal­la­ti­on mit High Per­for­mance Backend separater TURN-Server bzw. separate öf­fent­li­che IP empfohlen

Ein eigener VPS nur für TURN hat noch einen weiteren Vorteil: Nextcloud empfiehlt für eine möglichst hohe Kom­pa­ti­bi­li­tät Port 443 für den TURN-Dienst. Auf einem Server, auf dem bereits Nextcloud mit Apache oder NGINX läuft, ist TCP-Port 443 nor­ma­ler­wei­se bereits für HTTPS belegt. Auf einem separaten TURN-Server steht der Port dagegen ohne Konflikte zur Verfügung.

Hinweis

Ein TURN-Server ersetzt nicht das Nextcloud Talk High Per­for­mance Backend (HPB). TURN löst in erster Linie Ver­bin­dungs­pro­ble­me durch NAT und Firewalls. Das HPB übernimmt unter anderem Si­gna­li­sie­rung und Me­di­en­ver­tei­lung für größere Talk-In­stal­la­tio­nen. Für größere Grup­pen­ge­sprä­che mit mehr als 5 bis 10 Personen kann zu­sätz­lich das High Per­for­mance Backend er­for­der­lich sein.

Schritt 1: Subdomain für den TURN-Server ein­rich­ten

Zunächst benötigt Ihr Server einen ein­deu­ti­gen Hostnamen. Legen Sie bei Ihrem DNS-Anbieter bei­spiels­wei­se folgenden A-Record an:

turn.example.com → 203.0.113.10
bash

Dabei steht 203.0.113.10 stell­ver­tre­tend für die öf­fent­li­che IPv4-Adresse Ihres Servers. Besitzt Ihr Server eine funk­tio­nie­ren­de öf­fent­li­che IPv6-Adresse, können Sie zu­sätz­lich einen AAAA-Record ein­rich­ten. Verwenden Sie einen AAAA-Eintrag jedoch nur dann, wenn IPv6 auf dem TURN-Server tat­säch­lich voll­stän­dig kon­fi­gu­riert und er­reich­bar ist.

Nach der DNS-Änderung kann es einige Zeit dauern, bis der neue Eintrag weltweit verfügbar ist. Prüfen können Sie die Auflösung bei­spiels­wei­se mit dig turn.example.com oder nslookup turn.example.com. Wenn Sie zu­sätz­lich einen AAAA-Eintrag ein­ge­rich­tet haben, prüfen Sie diesen mit dig AAAA turn.example.com.

Die aus­ge­ge­be­ne IP-Adressen (IPv4 und ggf. IPv6) sollten mit den öf­fent­li­chen Adressen Ihres Servers über­ein­stim­men.

Schritt 2: Mit dem Server verbinden und System ak­tua­li­sie­ren

Stellen Sie nun per SSH eine Ver­bin­dung zu Ihrem TURN-Server her:

ssh benutzer@turn.example.com
bash

Ak­tua­li­sie­ren Sie an­schlie­ßend zunächst die Pa­ket­lis­ten und in­stal­lie­ren Sie ver­füg­ba­re Updates:

sudo apt update
sudo apt upgrade -y
bash

Dadurch stellen Sie sicher, dass Sie mit einem aktuellen System starten.

Dedicated Server
De­di­zier­te Server mit mo­derns­ten Pro­zes­so­ren
  • 100 % En­ter­pri­se-Hardware
  • Kon­fi­gu­rier­ba­re Hardware-Aus­stat­tung
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren

Schritt 3: coturn in­stal­lie­ren

Als TURN-Software verwenden wir coturn. Die Software ist als Paket für Ubuntu und Debian verfügbar. In­stal­lie­ren Sie coturn zunächst über die Pa­ket­ver­wal­tung:

sudo apt install coturn -y
bash

An­schlie­ßend können Sie über­prü­fen, welche Version in­stal­liert wurde:

dpkg -s coturn | grep Version
bash

Die Nextcloud-Do­ku­men­ta­ti­on nennt coturn 4.5.0.8 als absolutes Minimum. Für eine neue In­stal­la­ti­on sollten Sie aus Si­cher­heits­grün­den eine möglichst aktuelle coturn-Version verwenden.

Hinweis

Die In­stal­la­ti­on über apt liefert die von Ubuntu be­reit­ge­stell­te Pa­ket­ver­si­on von coturn. Diese ist offiziell für die jeweilige Ubuntu-Version gepflegt, kann jedoch deutlich älter sein als die aktuelle Upstream-Version des coturn-Projekts. Prüfen Sie deshalb nach der In­stal­la­ti­on, welche Version tat­säch­lich in­stal­liert wurde. Benötigen Sie eine neuere coturn-Version, kommen al­ter­na­tiv bei­spiels­wei­se ein ge­eig­ne­tes PPA, ein Container-Image oder eine manuelle In­stal­la­ti­on aus dem Quellcode infrage. Für pro­duk­ti­ve Systeme sollten Sie dabei aus­schließ­lich ver­trau­ens­wür­di­ge Quellen verwenden und auf eine re­gel­mä­ßi­ge Ak­tua­li­sie­rung achten.

Prüfen Sie außerdem, ob systemd den Dienst kennt:

systemctl status coturn
bash

Bei aktuellen Debian- und Ubuntu-Systemen wird coturn über eine systemd-Unit verwaltet.

Schritt 4: Sicheres TURN-Secret erstellen

Nextcloud Talk und coturn müssen später ein ge­mein­sa­mes Secret kennen. Dieses Secret dient dazu, temporäre Zu­gangs­da­ten für den TURN-Server zu erzeugen. Erstellen Sie dazu einen zu­fäl­li­gen Wert mit openssl rand -hex 32. Sie erhalten bei­spiels­wei­se eine Ausgabe wie:

8c6e8a2a79bd6507e7a5274bc5779ec3a5f6c1f45dbcf420c1a824cd94a25112

Kopieren Sie den erzeugten Wert und bewahren Sie ihn sicher auf. Sie benötigen ihn später sowohl in der coturn-Kon­fi­gu­ra­ti­on als auch in den Talk-Ein­stel­lun­gen Ihrer Nextcloud-Instanz als sicheres Passwort. Verwenden Sie für eine Pro­duk­tiv­um­ge­bung keinen einfachen Zu­gangs­code.

Schritt 5: TLS-Zer­ti­fi­kat für TURN ein­rich­ten

Für eine möglichst hohe Kom­pa­ti­bi­li­tät ist es ratsam, TURN auf Port 443 an­zu­bie­ten und sowohl normale TURN-Ver­bin­dun­gen als auch ver­schlüs­sel­te turns:-Ver­bin­dun­gen zu er­mög­li­chen. Das hilft ins­be­son­de­re bei Clients in re­strik­ti­ven Netz­wer­ken, die nur Ver­bin­dun­gen über Port 443 zulassen. Für turns: benötigt coturn ein TLS-Zer­ti­fi­kat. Dieses können Sie bei­spiels­wei­se kostenlos über Let’s Encrypt beziehen.

Bei einem aus­schließ­lich für TURN vor­ge­se­he­nen Ubuntu-Server können Sie Certbot über Snap in­stal­lie­ren:

sudo snap install --classic certbot
bash

Falls der Befehl certbot an­schlie­ßend noch nicht direkt verfügbar ist, erstellen Sie den ent­spre­chen­den Link:

sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
bash

Öffnen Sie für die Zer­ti­fi­kats­aus­stel­lung zunächst TCP-Port 80:

sudo ufw allow 80/tcp
bash

Fordern Sie danach das Zer­ti­fi­kat an:

sudo certbot certonly --standalone -d turn.example.com
bash

Der Stan­da­lo­ne-Modus startet vor­über­ge­hend einen eigenen Webserver für die Do­main­va­li­die­rung. Für die HTTP-01-Challenge muss Ihr Server deshalb über Port 80 aus dem Internet er­reich­bar sein. Nach er­folg­rei­cher Aus­stel­lung befinden sich Zer­ti­fi­kat und privater Schlüssel ty­pi­scher­wei­se unter:

/etc/letsencrypt/live/turn.example.com/fullchain.pem
/etc/letsencrypt/live/turn.example.com/privkey.pem

Certbot richtet nor­ma­ler­wei­se auch die au­to­ma­ti­sche Ver­län­ge­rung des Zer­ti­fi­kats ein. Die Funktion können Sie mit folgendem Befehl testen:

sudo certbot renew --dry-run
bash

Schritt 6: Port 443 für coturn verfügbar machen

Port­num­mern unterhalb von 1024 gelten unter Linux als pri­vi­le­gier­te Ports. coturn wird auf aktuellen Dis­tri­bu­tio­nen häufig unter einem un­pri­vi­le­gier­ten User aus­ge­führt und kann deshalb nicht au­to­ma­tisch Port 443 öffnen. Linux Ca­pa­bi­li­ties sind dafür eine Lösung. Geben Sie dem Programm gezielt die Be­rech­ti­gung zum Binden pri­vi­le­gier­ter Ports:

sudo setcap cap_net_bind_service=+ep /usr/bin/turnserver
bash

Damit erhält turnserver nicht sämtliche Root-Rechte, sondern lediglich die Fähigkeit, bei­spiels­wei­se Port 443 zu öffnen. Beachten Sie, dass ein Pa­ket­up­date die gesetzte Ca­pa­bi­li­ty unter Umständen entfernen kann. Sollte coturn nach einem Update plötzlich nicht mehr auf Port 443 starten, prüfen Sie die Ein­stel­lung mit:

getcap /usr/bin/turnserver
bash

Schritt 7: Zer­ti­fi­kat für den coturn-Dienst zu­gäng­lich machen

Der private Schlüssel von Let’s Encrypt ist aus Si­cher­heits­grün­den nor­ma­ler­wei­se nur für Root lesbar. Der coturn-Prozess benötigt jedoch Zugriff darauf. Prüfen Sie zunächst, ob der Benutzer turnserver vorhanden ist:

getent passwd turnserver
bash

Erstellen Sie an­schlie­ßend ein ge­schütz­tes Ver­zeich­nis für die von coturn ver­wen­de­ten Zer­ti­fi­kats­ko­pien:

sudo install -d -m 750 -o root -g turnserver /etc/coturn
bash

Kopieren Sie Zer­ti­fi­kat und Schlüssel:

sudo install -m 640 -o root -g turnserver \
/etc/letsencrypt/live/turn.example.com/fullchain.pem \
/etc/coturn/fullchain.pem
sudo install -m 640 -o root -g turnserver \
/etc/letsencrypt/live/turn.example.com/privkey.pem \
/etc/coturn/privkey.pem
bash

Falls Ihre Dis­tri­bu­ti­on einen anderen User für den coturn-Dienst verwendet, müssen Sie turnserver ent­spre­chend ersetzen.

Da Let’s Encrypt die Ori­gi­nal­da­tei­en bei einer Zer­ti­fi­kats­ver­län­ge­rung ak­tua­li­siert, sollten Sie die Kopien an­schlie­ßend ebenfalls ak­tua­li­sie­ren und coturn neu starten. Dazu können Sie einen Certbot-Deploy-Hook anlegen. Erstellen Sie die Datei:

sudo nano /etc/letsencrypt/renewal-hooks/deploy/coturn.sh
bash

Fügen Sie Folgendes ein:

#!/bin/sh
install -m 640 -o root -g turnserver \
/etc/letsencrypt/live/turn.example.com/fullchain.pem \
/etc/coturn/fullchain.pem
install -m 640 -o root -g turnserver \
/etc/letsencrypt/live/turn.example.com/privkey.pem \
/etc/coturn/privkey.pem
systemctl restart coturn
txt

Machen Sie das Skript aus­führ­bar:

sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/coturn.sh
bash

Damit wird coturn nach einer er­folg­rei­chen Zer­ti­fi­kats­er­neue­rung au­to­ma­tisch mit den neuen Zer­ti­fi­kats­da­tei­en gestartet.

Schritt 8: coturn für Nextcloud Talk kon­fi­gu­rie­ren

Die zentrale coturn-Kon­fi­gu­ra­ti­ons­da­tei befindet sich bei Ubuntu und Debian nor­ma­ler­wei­se unter /etc/turnserver.conf. Sichern Sie zunächst die vor­han­de­ne Datei:

sudo cp /etc/turnserver.conf /etc/turnserver.conf.bak
bash

Öffnen Sie sie an­schlie­ßend:

sudo nano /etc/turnserver.conf
bash

Für eine typische Nextcloud-Talk-In­stal­la­ti­on können Sie folgende grund­le­gen­de Kon­fi­gu­ra­ti­on verwenden:

listening-port=443
fingerprint
use-auth-secret
static-auth-secret=IHR_GENERIERTES_SECRET
realm=turn.example.com
cert=/etc/coturn/fullchain.pem
pkey=/etc/coturn/privkey.pem
stale-nonce
no-multicast-peers
total-quota=0
bps-capacity=0
min-port=49152
max-port=65535
txt

Ersetzen Sie IHR_GE­NE­RIER­TES_SECRET durch das Secret aus Schritt 4 und turn.example.com durch Ihre TURN-Domain. Die wich­tigs­ten Optionen haben folgende Bedeutung:

  • listening-port=443 legt fest, über welchen Port Clients den TURN-Server erreichen.
  • fingerprint ergänzt TURN-Nach­rich­ten um einen Fin­ger­print.
  • use-auth-secret aktiviert die von Nextcloud Talk ver­wen­de­te Au­then­ti­fi­zie­rung über ein ge­mein­sa­mes Secret.
  • static-auth-secret enthält dieses ge­mein­sa­me Secret.
  • realm be­zeich­net die Au­then­ti­fi­zie­rungs­do­mä­ne des Servers.
  • cert und pkey geben TLS-Zer­ti­fi­kat und privaten Schlüssel an.
  • stale-nonce begrenzt die Le­bens­dau­er von Au­then­ti­fi­zie­rungs-Nonces.
  • no-multicast-peers ver­hin­dert das Wei­ter­lei­ten von TURN-Ver­bin­dun­gen an Multicast-Adressen.
  • min-port und max-port legen den Bereich für die ei­gent­li­chen Relay-Ver­bin­dun­gen fest.

coturn verwendet stan­dard­mä­ßig die UDP-Ports 49152 bis 65535 für Relay-Endpunkte. Dieser Bereich muss deshalb bei einer klas­si­schen coturn-Kon­fi­gu­ra­ti­on ebenfalls in der Firewall be­rück­sich­tigt werden. coturn kann TLS-Ver­bin­dun­gen auch auf dem normalen Listening-Port erkennen, sofern TLS in der Kon­fi­gu­ra­ti­on aktiviert ist. Dadurch lassen sich turn: und turns: gemeinsam über Port 443 anbieten.

Schritt 9: TURN-Server gegen Zugriffe auf interne Netze absichern

Ein TURN-Server sollte nicht als Umweg genutzt werden können, um auf interne Dienste Ihres Servers oder Netzwerks zu­zu­grei­fen. Hat der TURN-Server Zugang zu privaten Netzen, empfiehlt es sich daher, ent­spre­chen­de Ziel­be­rei­che explizit zu sperren. Sie können unter anderem folgende Einträge ergänzen:

  • denied-peer-ip=0.0.0.0-0.255.255.255
  • denied-peer-ip=10.0.0.0-10.255.255.255
  • denied-peer-ip=100.64.0.0-100.127.255.255
  • denied-peer-ip=127.0.0.0-127.255.255.255
  • denied-peer-ip=169.254.0.0-169.254.255.255
  • denied-peer-ip=172.16.0.0-172.31.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=192.88.99.0-192.88.99.255
  • denied-peer-ip=192.168.0.0-192.168.255.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=240.0.0.0-255.255.255.255

Wenn der TURN-Server auch IPv6 verwendet, sperren Sie zu­sätz­lich interne IPv6-Ziel­adres­sen. Für Unique-Local-Adressen (fc00::/7) und Link-Local-Adressen (fe80::/10) können Sie folgende Einträge ergänzen:

  • denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
  • denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Prüfen Sie außerdem, ob weitere IPv6-Adressen Ihrer eigenen In­fra­struk­tur vom TURN-Server aus er­reich­bar sind, und sperren Sie diese bei Bedarf gezielt.

Hinweis

Befindet sich bei­spiels­wei­se das Talk High Per­for­mance Backend in einem privaten Netzwerk und muss vom TURN-Server er­reich­bar sein, dürfen Sie dessen Adresse nicht einfach blo­ckie­ren. In diesem Fall können Sie die benötigte IP gezielt über allowed-peer-ip freigeben oder die Netz­werk­re­geln ent­spre­chend an Ihre Ar­chi­tek­tur anpassen.

Schritt 10: Öf­fent­li­che IP-Adresse bei NAT eintragen

Ein klas­si­scher VPS besitzt häufig direkt eine öf­fent­li­che IP-Adresse. Das ist für coturn die ein­fachs­te Kon­fi­gu­ra­ti­on. Befindet sich der Server dagegen hinter NAT, muss coturn wissen, welche öf­fent­li­che Adresse zu seiner internen Adresse gehört. In einem einfachen Szenario können Sie bei­spiels­wei­se external-ip=203.0.113.10 ergänzen. Bei einer ex­pli­zi­ten Zuordnung von öf­fent­li­cher und privater Adresse ist auch folgende Form möglich: external-ip=203.0.113.10/10.0.0.10.

Dabei ist die erste Adresse die öf­fent­li­che und die zweite die interne IP-Adresse. coturn verwendet diese Zuordnung, damit Clients die korrekte öf­fent­li­che Relay-Adresse erhalten. Die ent­spre­chen­den Ports müssen vom NAT ohne Ver­än­de­rung an den TURN-Server wei­ter­ge­lei­tet werden. Setzen Sie external-ip jedoch nicht vor­sorg­lich. Eine falsche Adresse kann dazu führen, dass TURN zwar er­reich­bar erscheint, die wei­ter­ge­lei­te­ten Me­di­en­ver­bin­dun­gen aber nicht funk­tio­nie­ren.

Schritt 11: Firewall kon­fi­gu­rie­ren

Nun müssen die be­nö­tig­ten Ports auf dem Server frei­ge­ge­ben werden. Stellen Sie zunächst sicher, dass SSH weiterhin erlaubt ist:

sudo ufw allow OpenSSH
bash

Erlauben Sie an­schlie­ßend TURN über TCP und UDP auf Port 443:

sudo ufw allow 443/tcp
sudo ufw allow 443/udp
bash

Öffnen Sie zu­sätz­lich den UDP-Relay-Bereich:

sudo ufw allow 49152:65535/udp
bash

Falls Sie Certbot per HTTP-01 verwenden, lassen Sie außerdem Port 80 für die Zer­ti­fi­kats­ver­län­ge­rung er­reich­bar:

sudo ufw allow 80/tcp
bash

Falls UFW noch nicht aktiviert ist, können Sie den Status zunächst prüfen:

sudo ufw status
bash

Ak­ti­vie­ren Sie die Firewall erst, nachdem Sie si­cher­ge­stellt haben, dass SSH frei­ge­ge­ben ist:

sudo ufw enable
bash

Verwendet Ihr Hosting-Anbieter zu­sätz­lich eine externe Cloud-Firewall, müssen Sie die ent­spre­chen­den Regeln auch dort ein­rich­ten. Eine Freigabe aus­schließ­lich innerhalb von UFW reicht dann nicht aus.

Schritt 12: coturn starten

Starten Sie den Dienst nun mit sudo systemctl restart coturn neu und ak­ti­vie­ren Sie ihn außerdem für zu­künf­ti­ge Neustarts mit sudo systemctl enable coturn.

Prüfen Sie an­schlie­ßend den Status:

sudo systemctl status coturn --no-pager
bash

Wenn Sie active (running) sehen, läuft der TURN-Dienst. Mit folgendem Befehl können Sie zu­sätz­lich kon­trol­lie­ren, ob Port 443 geöffnet wurde:

sudo ss -lntup | grep ':443'
bash

Sie sollten Einträge für turnserver erkennen.

Schritt 13: TURN-Server in Nextcloud Talk hin­ter­le­gen

Nachdem der TURN-Server funk­tio­niert, müssen Sie Nextcloud Talk mitteilen, wie er er­reich­bar ist. Melden Sie sich als Ad­mi­nis­tra­tor in Ihrer Nextcloud-Instanz an und öffnen Sie die Ad­mi­nis­tra­ti­ons­ein­stel­lun­gen. Wechseln Sie an­schlie­ßend zum Bereich Talk und tragen Sie als TURN-Server ein:

turn.example.com:443

Wichtig ist, dass Sie an dieser Stelle kein https://, turn: oder turns: vor die Adresse schreiben. Nextcloud erwartet im Ser­ver­feld lediglich Hostname und Port. Das ver­wen­de­te TURN-Schema wird separat aus­ge­wählt. Als TURN-Secret tragen Sie exakt denselben Wert ein, den Sie zuvor bei static-auth-secret= in /etc/turnserver.conf hin­ter­legt haben. Wählen Sie außerdem:

  • UDP und TCP
  • die Option, die sowohl turn: als auch turns: verwendet

Schritt 14: TURN-Server testen

Eine laufende coturn-Instanz bedeutet noch nicht au­to­ma­tisch, dass sie aus dem Internet korrekt er­reich­bar und von Talk ver­wend­bar ist. Deshalb sollten Sie die Ein­rich­tung an­schlie­ßend testen. Führen Sie den Test nach Mög­lich­keit nicht auf dem TURN-Server selbst, sondern auf einem anderen Rechner mit einer anderen In­ter­net­ver­bin­dung durch. Auf einem Ubuntu-System können Sie zunächst die coturn-Werkzeuge in­stal­lie­ren:

sudo apt install coturn
bash

Danach lässt sich der TURN-Server mit dem von Nextcloud do­ku­men­tier­ten Test­werk­zeug aufrufen:

turnutils_uclient -p 443 -W IHR_GENERIERTES_SECRET -v -y turn.example.com
turnutils_uclient -t -p 443 -W IHR_GENERIERTES_SECRET -v -y turn.example.com
turnutils_uclient -t -S -p 443 -W IHR_GENERIERTES_SECRET -v -y turn.example.com
bash

Ein er­folg­rei­cher Test zeigt zunächst, dass der TURN-Dienst grund­sätz­lich von außen er­reich­bar ist. Er belegt jedoch noch nicht, dass Nextcloud Talk den TURN-Server tat­säch­lich für die Me­di­en­über­tra­gung verwenden kann. Für einen aus­sa­ge­kräf­ti­gen Funk­ti­ons­test können Sie Nextcloud Talk deshalb dazu zwingen, aus­schließ­lich Relay-Ver­bin­dun­gen über TURN zu verwenden. Treten Sie dazu zunächst einem Talk-Anruf bei, öffnen Sie die Ent­wick­ler­kon­so­le Ihres Browsers und führen Sie folgenden Befehl aus:

OCA.Talk.SimpleWebRTC.webrtc.config.peerConnectionConfig.iceTransportPolicy = 'relay'
bash

Verlassen Sie an­schlie­ßend den Anruf und treten Sie ihm erneut bei. Funk­tio­nie­ren Audio und Video weiterhin, kann Talk den TURN-Server für die Me­di­en­über­tra­gung verwenden. Testen Sie dies nach Mög­lich­keit mit zwei Geräten in un­ter­schied­li­chen Netz­wer­ken.

Fazit: Ein eigener TURN-Server erhöht die Zu­ver­läs­sig­keit von Nextcloud Talk

Nextcloud Talk kann viele Ver­bin­dun­gen ohne eigenen TURN-Server aufbauen. Sobald die Anwendung jedoch re­gel­mä­ßig über un­ter­schied­li­che Netzwerke, Mo­bil­funk­ver­bin­dun­gen, Un­ter­neh­mens­fire­walls oder komplexe NAT-Um­ge­bun­gen genutzt wird, ver­bes­sert ein eigener TURN-Server die Zu­ver­läs­sig­keit deutlich.

Für kleinere und mittlere In­stal­la­tio­nen ist ein separater VPS in vielen Fällen die sinn­volls­te Lösung. Er lässt sich un­ab­hän­gig von der ei­gent­li­chen Nextcloud-In­stal­la­ti­on verwalten und er­mög­licht es, coturn auf dem von Nextcloud emp­foh­le­nen Port 443 zu betreiben. Bei größeren In­stal­la­tio­nen mit vielen gleich­zei­tig aktiven Ge­sprä­chen sollte dagegen ins­be­son­de­re die ver­füg­ba­re Netz­werk­band­brei­te be­rück­sich­tigt werden. Hier kann ein leis­tungs­fä­hi­ger VPS oder Dedicated Server sinnvoll sein.

Zum Hauptmenü