Nextcloud Talk im Docker Container, TURN Server auf Docker Host - kein Video

Nextcloud 19.0.0.5
Debian 10

Guten Tag allesamt,

ich versuche - zunehmend verzweifelt - mein Nextcloud Talk in einem Docker Container dazu zu bringen, mit dem auf dem selben Docker Host laufenden TURN Server zu spielen. Dabei geht es mir natĂŒrlich um die Audio / Video FunktionalitĂ€t.

Alles lÀuft per NAT hinter einer Fritzbox. Die Port-Weiterleitung auf den STUN / TURN Standardport in der Fritzbox 3478 ist eingerichtet, also External_IP:3478 -> Docker_Host_IP:3478.

In den Einstellungen von Talk habe ich meinen STUN Zugang ( FQDN:3478 ) hinzugefĂŒgt und den TURN-Server konfiguriert ( FQDN, secret, TCP und UDP ). Wenn ich die Einstellungen teste, ist dieser Test als erfolgreich in der turnserver.log protokolliert, soweit und auch gut ( siehe auch Bild ).

Wenn ich nun einen Anruf starte, versucht der TURN Server eine Audio / Video Verbindung aufzubauen, kann aber offensichtlich die Endpunkte der Verbindung nicht auflösen. Ich werde gleich noch die Logs beifĂŒgen.

In der Doku habe ich gelesen - und das könnte auch hier das Problem sein - dass die Pakete auf der Docker_Host_IP:3478 zum Docker_Nextcloud_IP weitergeleitet werden mĂŒssen. Nur leider steht nicht da, wie


Also hier meine Frage: Hat jemand eine derartige Konfig zum Laufen bekommen?

Link dorthin?

Und um die Frage zu beantworten: Nö, Ich hab’s irgendwann aufgegeben. Mein letzter Versuch war - glaube ich - network_mode: host. Dann benutzt der turnserver im Container direkt die IP des Host und macht kein NAT mehr.

Hallo Reiner_Nippes,

hilf mir bitte auf die SprĂŒnge
 Wie mache ich das?

Ähmm. Sorry. Ich meinte: “Könntest du den Link auf die Doku, die benutzt hast, hier teilen?”

Momang bitte 


Aber vorab: Ich habe auch versucht, ewig mit dem COTURN Docker Container zu basteln, was nicht geklappt hat, inklusive Host-Mode. Mein eigentliches Ziel war genau die gleiche Lösung fĂŒr Jitsi-Meet, welches ich auch auf meinem Server mit Hilfe von docker-jitsi-meet gehostet habe. Auch da lief diese Verbindungsart nicht.

Zur Weißglut brachte mich, dass die Jungs und MĂ€dels von meet.ffmuc.net das Problem offensichtlich gelöst haben denn bei einer Conf auf deren Server funktioniert WerbRTC komplett und tadellos. Also habe ich in deren Chat mal nachgefragt und die Antwort erhalten dass sie sich nicht sicher sind ob ein STUN / TURN so ĂŒber NAT ĂŒberhaupt richtig funktioniert.

Als Folge dessen habe ich diese Variante verworfen und mich wieder daran gemacht, den coturn auf dem Docker Host zum Laufen zu bringen, was ganz offensichtlich schon teilweise funktioniert.

Sch 
 finde ich auf die Schnelle nicht mehr. Aber ich trage die Logs nochmal zusammen und melde mich spÀter dann.

Ich meine, vom Prinzip ist die Ursache des Problems schon klar.

Ich setze die external-ip in der turnserver.conf und beim Starten werden alle vorhandenen möglichen “echten” Listener und Relay Adressen erkannt und der Port 3478 an alle möglichen Adressen gebunden. Mist ist nur, dass die einzig wirklich benötigte Adresse - die des Nextcloud Docker Containers - da nicht dabei ist.

In meinem Fall benutze ich das Docker Subnetz 172.18.1.0/16 fĂŒr Nextcloud und der Container hat die IP 172.18.1.4.

Wenn ich das coturn Log richtig verstehe, wird nun aber als Relay nur die 172.18.1.1 erkannt und der Port 3478 daran gebunden, was ja wohl nicht richtig ist denn das mĂŒsste doch die 172.18.1.4 sein, oder?

Vielleicht geht das wirklich nicht, denn es handelt sich ja quasi um ein “doppeltes” NAT


Man mĂŒsste also eine Lösung finden, wie man dieses “doppelte” NAT (externe_IP -> Docker_Host_IP -> Nextcloud_Container_IP) irgendwie auflösen kann. Ich hab da aber noch keine wirklich gute Idee.

Habs gefunden, steht in der Nextcloud Doku
 :wink:
Der Test mit der Browser Console funktioniert natĂŒrlich auch nicht


Hatte heute im Matrix Nextcloud Kanal einen lÀngeren Chat, in welchem mir jemand darlegte, dass dies alles komplett inklusive Audio / Video unter Docker mit dem NC18-fpm (nexctloud-fpm-alpine:18) funktioniert.

Das ist der Ausschnitt aus der turnserver log wenn ich in der nextcloud Talk Sektion meine Konfiguration [fqdn:3478]:[secret]:[tcp] teste. Sieht echt gut aus. Reicht aber offensichtlich nicht.

In der Nextcloud Doku steht aber auch ja, dass der TURN Server mit Port 3478 Zugriff auf alle Talk Teilnehmer haben muss. Versuche ich aus der Shell des Nextcloud Containers per Nmap die 192.168.178.21:3478 zu erreichen klappt das tadellos. Der Weg zurĂŒck zur IP des Nextcloud Docker Image auf 172.18.1.4:3478 geht aber nicht.

update: hab’s mittlerweile hinbekommen. auf einer ec2 in der aws. das wĂ€re meine konfig. falls du ansible/jinja2 lesen kannst.

@ralfi wenn du bei dir eine zweite debian installation aufsetzen kannst, kannst du ja einfach mal das playbook laufen lassen und schauen, ob die konfig geht.

Hi,

hab ein Weilchen hier micht mehr reingeschaut 
 Danke fĂŒr die Infos.

Ich denke, es liegt wohl an der Netzkonfiguration der Virtualisierungsumgebung bzw. des Container-Layouts. Ein Àhnliches PhÀnomen gibt es auch ja auch bei Jitsi.

Maybe it helps someone:

docker run -d --network=host \

    -v /etc/letsencrypt:/etc/letsencrypt:ro \

    --name=coturn \

    instrumentisto/coturn \

    -n --log-file=stdout \

    --listening-ip=x.x.x.x \

    --listening-ip=x.x.x.x \

    --listening-ip=x:x:x:x:x:x:x:x \

    --min-port=49160 \

    --max-port=49200 \

    --fingerprint \

    --no-multicast-peers \

    --no-tlsv1 \

    --no-tlsv1_1 \

    --realm=sub.domain.tld \

    --external-ip='$(detect-external-ip)' \

    --relay-ip='$(detect-external-ip)' \

    --use-auth-secret \

    --static-auth-secret=<yourverysecretpassword> \

    --total-quota=100 \

    --bps-capacity=0 \

    --cert=/etc/letsencrypt/live/some.domain.tld/fullchain.pem \

    --pkey=/etc/letsencrypt/live/some.domain.tld/privkey.pem \

    --cli-password=<anothersecretpass> \

    --stale-nonce=600