Nextcloud Talk mit eigenem TURN-Server
Wer seine eigene Nextcloud betreibt um Dateien sicher ablegen und teilen zu können kennt sicherlich auch die Erweiterung Nextcloud Talk.
Nextcloud Talk ist ein vollständig selbst gehosteter, lokaler Audio/Video- und Chat-Kommunikationsdienst. Es verfügt über Web- und Mobile-Applikationen und ist so konzipiert, dass es ein Höchstmaß an Sicherheit bei einfacher Bedienung bietet.
Was ist das?
Mobile Endgeräte sind meist nicht in einem Netzwerk. Geräte müssen jedoch sowohl ihre interne, als auch ihre externe IP-Adresse kennen. Diese Umsetzung ist Aufgabe eines STUN-Servers und coturn liefert praktischerweise diese Funktion ebenfalls mit.
Sobald Endgeräte hinter Firewalls sind, kann der STUN-Server die Übersetzung der Adressen nicht mehr leisten. In diesen Fällen spricht man von einem Symmetric NAT. Hier wird durch die Firewall verhindert, dass aus dem Internet aufgebaute Verbindungen in das lokale Netzwerk möglich sind. Ein Proxy oder auch TURN-Server genannt ist dann notwendig, über den sämtliche Verbindungen geleitet werden.
Punkt 1: Installation von coturn unter Debian 9
Wir installieren das Paket. coturn kann auch auf dem selben System wie Nextcloud installiert werden. Wenn dies hinter dem heimischen Router ist, muss dort evtl der Firewall Port 5349 geöffnet und auf den coturn Server geleitet werden.
1 | apt-get install coturn |
Punkt 2: coturn aktivieren
In der Datei /etc/default/coturn
aktivieren wir coturn.
1 | TURNSERVER_ENABLED=1 |
Punkt 3: dhparam erstellen
Mit diesem Befehl erstellen wir uns eine dhparam Datei.
1 | openssl dhparam -out /etc/ssl/private/dhparam.pem 4096 |
Punkt 4: Passwort für den TURN-Server generieren
Unsere Nextcloud braucht natürlich die Berechtigung
1 | openssl rand -hex 32 |
Punkt 5: coturn konfigurieren
Die folgende Konfiguration kann übernommen werden. Die markierten Zeilen bitte eurem System anpassen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | listening-ip=<IP-Adresse> tls-listening-port=5349 fingerprint lt-cred-mech use-auth-secret static-auth-secret=<Passwort aus Punkt 4> realm=<Domain wie bsp. cloud.domain.de> total-quota=100 bps-capacity=0 stale-nonce=600 cert=/etc/ssl/private/cloud.domain.de/fullchain.cer pkey=/etc/ssl/private/cloud.domain.de/cloud.domain.de.key dh-file=/etc/ssl/private/dhparam.pem cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384" no-loopback-peers no-multicast-peers no-tlsv1 no-tlsv1_1 no-stdout-log syslog |
Es kann das Nextcloud eigene Zertifikat verwendet werden. Wenn coturn auf dem selben Server installiert wurde bietet sich dies an.
Wie ihr an ein kostenloses Let’s Encrypt Zertifikat kommt habe ich hier beschrieben: Let’s Encrypt via acme.sh für Apache und Nginx
Punkt 6: coturn neustarten
Wir übernehmen die Konfiguration mit einem Neustart.
1 | systemctl restart coturn.service |
Punkt 7: Nextcloud Talk Erweiterung
Wir loggen uns in Nextcloud als Admin ein, klicken oben rechts im Menü auf Apps und suchen nach der Erweiterung Talk und aktivieren diese.
Jetzt können wir unter Einstellungen > Talk unsere Domain samt Port als STUN- und TURN-Server eintragen: z.B. cloud.domain.de:5349.
Das generierte Passwort tragen wir im rechten Feld im TURN-Server Bereich ein.
Mit einem Klick auf das Icon, welches hier rot umkreist ist, prüft ihr ob die Einrichtung korrekt war.
Der Test läuft einige Sekunden lang.
Erfolgreich konnte eine Verbindung aufgebaut werden, wenn diese Meldung erscheint.
Das war es auch schon, nun kann die Mobile App installiert werden um eure Familie oder Freunde anzurufen.
Das Betreiben der Dienste, Webseite und Server machen wir gerne, kostet aber leider auch Geld. Unterstütze unsere Arbeit mit einer Spende. |
Danke für die Anleitung. Gerade im Moment suche ich auch für meine Familie eine eigene Lösung.
Ich bin allerdings noch recht neu in der Linux Welt unterwegs und war damals froh, dass Ubuntu LTS in der Installation schon eine integrierte Nextcloud hatte (ich mich weitestgehend an fertige Anleitungen halten konnte).
Funktioniert die beschriebene Methode, vor allem das Übernehmen des Zertifikates auch, wenn Nextcloud als Docker Container läuft?
Beste Grüße und vielen Dank, Stefan
Hallo Stefan,
ja da läuft das genauso. Wenn die Zertifikate im Docker Container selbst laufen wird es schwieriger. Oder hast du einen Nginx als Proxy davor laufen?
Gruß
Also ich habe gerade festgestellt, das Nextcloud bei mir als Snap installiert ist. Soweit ich weiß habe ich Nginx nicht als Proxy davor. Aber allein, das ich das nicht aus dem Stehgreif sagen kann, disqualifiziert mich vermutlich schon 😉
Ich habe gerade festgestellt, dass NC als snap läuft. Meines Wissens habe ich kein Nginx konfiguriert.
Soweit ich weiß habe ich das Letsencript auch über das NC Snap angesteuert. Vermutlich wird es dann schwierig dort heran zu kommen?
Schon mal vielen Dank!
Vielen Dank für die Anleitung. Stimmt es, dass NC in der neuesten Version keine Erfolgsmeldung mehr gibt, wie sie bei Euch dargestellt ist? Bei mir kommt statt dessen ein kleines schwarzes Ausrufezeichen und dann wieder das von Euch rot umkreiste Symbol.
Bin relativer Linux-Anfänger und nicht wirklich firm darin, den Coturn-Server zu überprüfen…
Danke und herzliche Grüße
Hallo Rainer,
ich habe die Anleitung mit frischen Bildern versehen.
Auf diesen siehst du, welche Meldung erscheinen sollte. Getestet habe ich meinen Coturn Server im Chromium Browser.
Gruß
Dominion
Moin,
ich habe beschlossen mich an deine Anleitung zu halten. Ich habe jetzt nur zwei Fragen.
Ich habe mein Server bereits im Internet , brauche ich dann einen zweiten Server oder reicht mein Server aus?
die Zweite Frage ist, wenn ich den Stun-Server einrichten würde auf einen zweiten Server was fällt dann an Traffic an? die gesamte Videotelefonie oder nur das „managen“ zwischen Server und Clienten?
Ich würde mich sehr über eine Erklärung freuen. Weil sonst würde ich einfach ein V-Server für 2 € mieten
Hi,
du kannst coturn auf dem selben Server installieren wie Nextcloud, das sollte kein Problem sein.
Der TURN Dienst ist für P2P Verbindungen gedacht die hinter einer Firewall stehen und bestimmte WebRTC Ports nicht erreichen können oder dürfen.
Der gesamte Videotraffic läuft dann durch coturn.
Anders ist es bei Clients die WebRTC erreichen können, diese nutzen dann nur kurz den STUN Dienst um die öffentliche IP-Adresse aufzulösen.
Gruß
Hey Dominion, dank deiner tollen Anleitung habe ich damals im März – Mitten in Corona – mein eigenes talk zum Laufen gebracht. Es gab damals keine schlauen Anleitungen und du hast mir echt den Weg gezeigt. Danke dafür!
Nun nach einigen Updates läuft diese Config so nicht mehr bei mir – es hat sich nichts geändert aber seit Talk 9.0.2 und 9.0.4 muss irgendetwas passiert sein. Aktuell meldet nextcloud immer „Fehler: Keine funktionierenden ICE-Kandidaten durch den TURN Server zurück gesendet”. Wie gesagt lief alles bestens vorher. Habe nun diverse Sachen versucht gemäss (https://help.nextcloud.com/t/turn-server-coturn-einrichtung-funktioniert-nicht/84763) hat leider alles nichts gebracht.
Hast du schon was davon gehört?
Hi Minocula,
ich kann das Problem nicht nachvollziehen. Bei mir sagt der Test in Nextcloud das alles in Ordnung ist und die Verbindung möglich ist.
Meine coturn Config:
# cat /etc/turnserver.conf
listening-ip=xxxx
listening-ip=xxxxxxxxxx
listening-port=3478
tls-listening-port=5349
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=xxxxxxxxxx
realm=xxxxxxxx
total-quota=100
bps-capacity=0
stale-nonce=600
cert=xxxxxx
pkey=xxxxxx
dh-file=/etc/ssl/private/dhparam.pem
cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384"
no-loopback-peers
no-multicast-peers
no-tlsv1
no-tlsv1_1
no-stdout-log
no-tcp
syslog
Gruß
Dominion
„Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.
You definitely know what youre talking about, why
waste your intelligence on just posting videos to your site when you could
be giving us something informative to read?“
Fine way of describing, and pleasant piece of writing to get information concerning my presentation subject
I simply wanted to say thanks again. I’m not certain the things I would’ve carried out in the absence of these points provided by you regarding such field. It was before a real daunting difficulty in my view, nevertheless considering the very skilled style you treated the issue took me to jump with fulfillment. Extremely grateful for the advice and then expect you comprehend what a great job that you’re putting in training the rest all through your site. Most likely you’ve never met all of us.
Hello
I have problem with wen i trying to configure coturn it shows an error can you help me
and the error is?
„Hallo,
erstmal vielen Dank für so ein cooles Tutorial. Ich habe alles so gemacht, wie du das erzählt hast, und alles hat geklappt. Allerdings funktionierte die Videoübertragung nach dem Neustart des Servers nicht mehr.
Hast du vielleicht eine Idee, woran das liegen könnte?
Vielen Dank im Voraus.
Schöne Grüße aus Mainz, Wladimir“
Ist denn der Test in NC erfolgreich?