applicationsdockernextcloudVPS

How to Install Nextcloud Talk High Performance Backend with Stun/Turnserver on Ubuntu

Picture from Alexandra_Koch on Pixabay

Changes 18.11.2020:
– Adjust server.conf because typo has changed
– Adjust signaling.service and janus.service because they does not start after reboot
Changes 22.11.2020:
– Adjust janus.jcfg
– change repositoty of janus

Since Nextcloud has released the High Performance Backend as OpenSource under AGPL License, i tried my luck to install it on Ubuntu.

Now I want to share how to do it.

Requirements:

– a VPS with Ubuntu 18.04 or 20.04 LTS minimal Image installed (you can get one here @netcup with 5€ Discount or start at Hetzner Cloud with 20€ start credits)
– shell access and appropriate rights
– One DNS A and possibly AAAA record for our nginx vhost and stun/turn-server (I use signaling.example.com for all three services in this guide)
– Optional – a second DNS A and possibly AAAA record for stun/turnserver

Hardware Requirements:

4 CPU
8 GB RAM
32 GB Disk-Space

See also: Nextcloud Portal

You can also test a smaller server if you don’t have that many users

Step 1: Install Firewall and other packages

First of all, you should install a firewall to secure your VPS (if not installed) and allow incoming traffic to port 80/443 and 22 (ssh) only. For Securing ssh-access you can use fail2ban and passwordless authentication. Many guides for this are out there.

apt install ufw -y
ufw allow http
ufw allow https
ufw allow ssh
ufw allow 5349/tcp
ufw allow 5349/udp
ufw enable

Accept with „y“

Step 2: Install and config stun/turnserver

you have to install the package coturn:

apt install coturn

enable daemonizing for your turnserver:

sed -i '/TURNSERVER_ENABLED/c\TURNSERVER_ENABLED=1' /etc/default/coturn

create a random hex key for your nextcloud talk app and signaling server with:

openssl rand -hex 32

and copy it for later use, then edit /etc/turnserver.conf:

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

copy, paste and adjust the following code:

listening-port=5349
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=output_of_openssl rand -hex 32
realm=signaling.example.com
total-quota=100
bps-capacity=0
stale-nonce
no-loopback-peers
no-multicast-peers

and last, restart and enable coturn:

systemctl restart coturn && systemctl enable coturn

Step 3: Install and config janus

You have to add janus Repository of morph027

Ubuntu 18.04 and 20.04
add repo key:

curl -sL -o /etc/apt/trusted.gpg.d/morph027-janus.asc https://packaging.gitlab.io/janus/gpg.key

add repo:

. /etc/lsb-release; echo "deb [arch=amd64] https://packaging.gitlab.io/janus/$DISTRIB_CODENAME $DISTRIB_CODENAME main" | tee /etc/apt/sources.list.d/morph027-janus.list
apt update
apt install janus

Now generate a random api key for turnserver:

openssl rand -base64 16

and copy the output for later use.

Edit /etc/janus/janus.jcfg

nano /etc/janus/janus.jcfg

go to section nat and enter your stunserver and port, uncomment full_trickle = true, turn_server with port and type and the generated api key:

you can copy, paste and adjust the following:

stun_server = "signaling.example.com"
stun_port = 5349
full_trickle = true
turn_server = "signaling.example.com"
turn_port = 5349
turn_type = "udp"
turn_rest_api_key = "openssl rand -base64 16"

then comment the following lines:

certificates: {
# cert_pem = „/etc/ssl/certs/ssl-cert-snakeoil.pem“
# cert_key = „/etc/ssl/private/ssl-cert-snakeoil.key“
#cert_pwd = „secretpassphrase“
}

adjust janus.service, so that it will start after coturn.service:

nano /lib/systemd/system/janus.service

adjust under Unit-Section:

[Unit]
Description=Janus WebRTC gateway
After=coturn.service
Documentation=https://janus.conf.meetecho.com/docs/index.html

save, enable and restart janus:

systemctl daemon-reload && systemctl restart janus && systemctl enable janus

Step 4: Running or Install NATS Server

If your VPS support docker, then you can use docker to run NATS Server:

Install docker if not installed:

curl -sSL https://get.docker.com/ | CHANNEL=stable sh
systemctl enable docker.service
systemctl start docker.service

then run NATS Server:

docker run --restart=always --name=NATSSERVER -d -p 4222:4222 -ti --restart=always nats:latest

when you want to run NATS Server without docker, there is another Repository of morph27.

you have to add its key and its repo:

curl -sL -o /etc/apt/trusted.gpg.d/morph027-nats-server.asc https://packaging.gitlab.io/nats-server/gpg.key
echo "deb [arch=amd64] https://packaging.gitlab.io/nats-server nats main" | tee /etc/apt/sources.list.d/morph027-nats-server.list

install NATS Server:

apt update
apt install nats-server

generate config under /etc/nats/nats.conf

install -d -o nats -g nats /etc/nats
sudo -u nats echo "listen: 127.0.0.1:4222" > /etc/nats/nats.conf

start and enable NATS-Server:

systemctl start nats-server && systemctl enable nats-server

Step 5: Install nextcloud-spreed-signaling Server

now we can install the nextcloud-spreed-signaling server, first of all, we have to install the packages we need to built:

apt install git automake golang build-essential python3 -y

then we clone the git repository and start the build process:

cd /opt
git clone https://github.com/strukturag/nextcloud-spreed-signaling.git
cd nextcloud-spreed-signaling/
make build

then copy the binary to /usr/bin

cp bin/signaling /usr/bin/

now create a dedicated user:

useradd --system --shell /usr/sbin/nologin --comment "Standalone signaling server for Nextcloud Talk." signaling

create the server.conf in /etc/signaling/

mkdir /etc/signaling/
touch /etc/signaling/server.conf
chown signaling: /etc/signaling/server.conf
chmod 600 /etc/signaling/server.conf

and copy the systemd file:

cp dist/init/systemd/signaling.service /etc/systemd/system/signaling.service

and adjust, so that signaling.service start after janus.service:

nano /etc/systemd/system/signaling.service

and change under Unit-Section:

[Unit]
Description=Nextcloud Talk signaling server
After=janus.service

save and then:

systemctl daemon-reload
systemctl enable signaling

create keys for config:

Nextcloud Secret Key

openssl rand -hex 16

Block-Key

openssl rand -hex 16

Hash-Key

openssl rand -hex 16

Now we have five keys at all, as example (do not use these keys)

Turn-Key from Step 2: 2309a206fc4de0f511ce9da52c088171f69193d1f701323d5ab4f733c9853445
api-key from Step 3: Z6ZkKhjwCFa6RMpFU854Fw==
Nextcloud-Secret-Key: 692cdc99256135bcb7849ca1886e2ed6
Block-Key: f702adbf248ab0e752fa76cb46bcba12
Hash-Key: db61d5a8c6bd2b47a3cb0abce3545040

open /etc/signaling/server.conf with your editor

nano /etc/signaling/server.conf

then copy, paste and adjust (change keys to yours) the following config

[http]
listen = 127.0.0.1:8080
[app]
debug = false

[sessions]
hashkey = db61d5a8c6bd2b47a3cb0abce3545040
blockkey = f702adbf248ab0e752fa76cb46bcba12

[backend]
backends = backend-1 #here you can add more backends commaseparated backend-1, backend-2, backend-3
allowall = false
timeout = 10
connectionsperhost = 8

[backend-1]
url = https://nextcloud.example.com
secret = 692cdc99256135bcb7849ca1886e2ed6

#[backend-2]
#url = https://nextcloud2.example.com
#secret = openssl rand -hex 16

#[backend-3]
#url = https://nextcloud3.example.com
#secret = openssl rand -hex 16


[nats]
url = nats://localhost:4222

[mcu]
type = janus
url = ws://127.0.0.1:8188

[turn]
apikey = Z6ZkKhjwCFa6RMpFU854Fw==
secret = 2309a206fc4de0f511ce9da52c088171f69193d1f701323d5ab4f733c9853445
servers = turn:signaling.example.com:5349?transport=udp,turn:signaling.example.com:5349?transport=tcp

then start signaling:

systemctl start signaling

and check status of the service:

systemctl status signaling

and if it listens on port 8080:

netstat -tulpen | grep 8080

go to next step.

Step 6: Install nginx and create vHost for signaling server

Now we will install nginx as reverse proxy for our high performance backend:

apt install nginx python3-certbot-nginx -y

and create the vHost:

nano /etc/nginx/sites-available/signaling

copy, paste and adjust:

server {
    listen 80;
    server_name signaling.example.com;
    }

and activate vhost:

ln -s /etc/nginx/sites-available/signaling /etc/nginx/sites-enabled/signaling

then check with:

nginx -t

and reload

systemctl reload nginx

now use certbot to obtain a certificate:

certbot --authenticator standalone --installer nginx -d signaling.example.com --pre-hook "service nginx stop" --post-hook "service nginx start"

then paste the following config in the vHost-conf:

mv /etc/nginx/sites-available/signaling /tmp/signaling.bak && nano /etc/nginx/sites-available/signaling
upstream signaling {
    server 127.0.0.1:8080;
}

server {
    server_name signaling.example.com;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/signaling.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/signaling.example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

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;
    }

}
server {
    if ($host = signaling.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    server_name signaling.example.com;
    return 404; # managed by Certbot


}

and check an reload nginx:

nginx -t

if ok

systemctl reload nginx

Step 7: Configure nextcloud to use stun/turn and signaling server

Now we are ready to add turn/stun- and signaling-server to our Nextcloud

Go to Settings, Talk and enter the following:

And then enjoy your High Performance Backend.

Problems with the tutorial? Then comment below or contact me per Mail or Mastodon.

If you want a managed nextcloud, then look here.

I will be happy if you would support my work here.

Happy nextclouding and do not forget to share ?

Sources:
Morph27
Struktur AG
Picture from Alexandra_Koch on Pixabay

This Guide was tested on:
netcup
Hetzner Cloud

48 Gedanken zu „How to Install Nextcloud Talk High Performance Backend with Stun/Turnserver on Ubuntu

  1. Hallo Markus,

    ich habe Deine Anleitung mit Interesse gelesen. Schade daß es diese noch nicht gab, als ich das High-Perfomance-Backend aufgesetzt habe. Ich habe das ganze Setup aber zum laufen gebracht und es ist produktiv im Einsatz. Jedoch gibt es immer wieder Probleme bei den Videokonferenzen, daß jemand kein Bild sieht, der Ton stottert usw. Es sind Konferenzen i.d.R. mit ca. 15…20 Teilnehmern, veilleicht noch eine zweite Konferenz mit 5 Teilnehmern.
    Meine Frage nun: Hast du Erfahrung, welche Hardware man benötigt, um z.B. 3 paralelle Konferenzen mit jeweils 15..20 Teilnehmern problemlos führen zu können? Braucht man dazu mehrere Server (und: geht das überhaupt?). Einmal war es auch so, daß es immer schlechter wurde. Erst nach einem Server Neustart ging alles wieder. Kann das sein, dass der Signalling Server sich so „festfährt“ daß es eines Neustarts bedarf?
    Wir haben folgenden Rootserver bei Hetzner gemietet:
    Intel® Core™ i9-9900K octa-core
    2 * 1 TB NVMe SSD
    128 GB DDR4 RAM
    Bandbreite: 1 GBit/s
    Darauf läuft nichts ausser Nextcloud mit Apache und der Signalling Server, auch mit Apache und ein STUN/TURN Server (coturn).
    Es wäre sehr hilfreich, wenn du uns sagen könntest, ob wir mit unserem Setup jemals an’s Ziel kommen 50 oder gar 100 Teilnehmer problemlos per Videokonferenz zu verbinden, oder was nötig wäre, um das zu erreichen.
    Viele Grüsse – Erwin

    1. Hallo Erwin, laut nextcloud soll ein Server mit 4 CPU, 8GB RAM und 1Gbit/s Bandbreite für 150 concurrent User ausreichen. Also mehrere Konferenzen. Was ich beobachte, ist dass RAM und Bandbreite gefordert ist. CPU ist jetzt nicht so auffällig. Hast Du ein Monitoring der Ressourcen im Einsatz? Wenn ja, da mal schauen wie die Auslastung aussieht. Bezüglich der Aussetzer etc. Schau mal im syslog, ob da auffällige Einträge sind. Manchmal ist da auch irgendwo ne „Schleife“.

      Gruß Markus

      1. Hallo Markus, Danke für die schnelle Antwort. Monitoring habe ich erst jetzt aufgesetzt und noch nicht lange im Einsatz. Es sieht so aus, als wäre der Server weit entfernt von seinen Limits, aber ich werde das noch weiter beobachten. Aber wie gesagt gibt es trotzdem immer wieder Ausfälle, daß jemand kein Bild vom anderen sieht. Das syslog, ja, es gobt ja vielerelei Logs – turn.log, signaling.log, nats-server.log, janus.log und natürlich das syslog – aber aus dem endlos vielen Zeilen werde ich auch nicht recht schlau, ob da nun was schief geht oder alles passt. Hast du denn einen Videokonferenz Server mit Nextcloud Talk im Einsatz und Erfahrungen mit grösseren Teilnehmerzahlen. Klappt da alles oder gibt es auch bei dir immer wieder Abbrüche bzw. Probleme? Viele Grüsse – Erwin

  2. Ich habe den signaling Server installiert ohne größere Probleme bekomme jetzt aber eine nginx Fehlermeldung „/usr/share/nginx/html/owa/auth/logon.aspx“ failed (2: No such file or directory), client: komische ip, server: signaling server, request: „GET /owa/auth/logon.aspx?url=https%3a%2f%2f1%2fecp%2f HTTP/1.1“, host: „signaling ip“

    1. Hi, das ist keine Fehlermeldung, die mit dem signaling-server zu tun hat. Da hat jemand Deinen Server gescannt und versucht auf das OWA (Exchange) zuzugreifen. Ganz normales Angriffsmuster, wenn man prüfen möchte, was so alles auf einem Webserver läuft.

      1. Danke für die schnell Antwort dann muss das Problem wohl woanders liegen. Das einrichten in der Nextcloud hat ohne Probleme geklappt aber ich keine Anrufe starten wenn ich auf starten drücke dann läde es einfach nur dauerhaft aber nichts passiert

  3. HI!
    I have used youre guide „How to Install Nextcloud Talk High Performance Backend with Stun/Turnserver on Ubuntu“

    Im running nextcloud 20.0.2 on a separate ubuntu server.

    I can send text messages.
    I can call but i cant hear anything and the call is unsable.
    Can you advise me what to do!
    //Ulf

  4. edit /etc/janus/janus.transport.http.jcfg and set interface = „lo“ in the general section
    edit /etc/janus/janus.transport.websockets.jcfg and set interface = „lo“ in the general section
    restart janus service: systemctl restart janus (do not forget to enable on boot: systemctl enable janus)

    Damit ging es dann. Das es Lokal angesprochen wird, scheint ziemlich wichtig zu sein.

  5. Hey.
    Ich habe alles nach Anleitung gemacht und habe bei UFW auch die freigaben und im log steht signaling[1803]: client.go:252: Client from 31.17.249.109 has RTT of 57 ms (57.5086ms)
    Aber ich kann keine Anrufe machen. Ich habe auf typos geaachtet und bin verzweifelt
    https://pastebin.com/ak7sPBFw meine configs

  6. Hallo, ich habe folgende Fehlermeldung und finde keine Lösung
    bitte um einen Ratschlag was ich da versuchen kann

    Nov 20 09:42:17 hpb janus[8230]: [FATAL] [ice.c:janus_ice_set_stun_server:853] No response to our STUN BINDING test
    Nov 20 09:42:17 hpb janus[8230]: [FATAL] [janus.c:main:3820] Invalid STUN address signaling.redacted.at:5349

  7. Ich danke Dir. Thema Backend hatte ich schon auf dem Schirm, aber leider noch keine Zeit. Ist jetzt aber eingearbeitet.
    Mit der Nextcloud Talk App habe ich es gerade noch mal getestet, läuft auch. Hast Du mal nach dem Fehler gesucht. Vielleicht Debian spezifisch?

    Gruß Markus

  8. Hallo Markus,

    danke für die tolle Anleitung.

    Ich habe die Installation auf einem Debian 10 durchgeführt und soweit sieht auch alles gut aus. Alle Services laufen, die Ports sind aktiv und die Firewall ist eingerichtet. Alle notwendigen Einstellungen und Config-Dateien habe ich nun auch schon mehrfach überprüft.
    Meine Nextcloud kann ich unter „Einstellungen“ auch richtig verbinden.

    Wenn ich dann aber auf die Talk App in Nextcloud wechsle oder den Android-Client starte bekomme ich die Meldung
    “ Fehler beim Aufbau der Signaling-Verbindung. “
    Weiters sehe ich danach im Syslog des Server jedes Mal
    „signaling[20119]: client.go:271: Error reading from x.x.x.x: websocket: close 1006 (abnormal closure): unexpected EOF“

    Ein lokaler Test am Server mit dem client funktioniert problemlos.

    Janus habe ich in Version 0.9.2 installiert.

    Hast du dazu noch eine Idee was Probleme machen könnte?

    PS: die Backend Einstellungen in der Datei server.conf des Signaling Servers haben sich mittlerweile etwas verändert. Hier sollte man in einer generellen [bachend] Variable die einzelnen erlaubten Backends definieren: #backends = backend1, backend2
    und diese dann als einzelne Punkte in der Config hinzufügen.

  9. Hi Markus (und Christian),

    Sorry betreffen der „Verwechslung“, war ein klassischer Verschreiber. Natürlich meinte ich Markus. Also inzwischen funktioniert der Signaling Server perfekt. Habe mich noch in die BEschreibung der Konfig Datei eingelesen. Da ich inzwischen 3 verschiedene Nextclouds auf den SIgnaling Server „loslasse“ musste ich die irgendwie trennen und auch durch andere Secrets absichern. Das sieht dann so aus:

    [backend]
    backends = backend-1, backend-2, backend-3
    allowall = false
    timeout = 10
    connectionsperhost = 8

    [backend-1]
    url = https://cloud.nextcloud1.com
    secret = [secret für Nextcloud1]

    [backend-2]
    url = https://cloud.nextcloud2.com
    secret = [secret für Nexcloud 2]

    [backend-3]
    url = https://cloud.nextcloud3.com
    secret = [secret für Nextcloud 3]

    So funktioniert das einwandfrei und es kann auch nicht zu Konflikten kommen, wenn in den verschiedenen Nextclouds gleich bezeichnete Chaträume vorkommen.

    Einziger Schönheitsfehler im Moment: Wenn ich den Signaling Server reboote, dann startet Janus nicht. Den muss ich dann von Hand starten. Warum habe ich noch nicht herausgefunden.

    Betrieben wird der Signaling Server in einer vmware Umgebung mit 10Gbit/s Intranet und 1Gbit/s Internet Anschluss. Bis jetzt absolut störungsfrei auch längere Meetings bis bis zu 10 Teilnehmern haben wir geprobt. Ohne Ruckler oder Ausfall. Wirklich coole Sache.

    Gruss
    Reto

    1. Moin Reto,

      super Sache, das freut mich und hilft sicherlich auch anderen 🙂

      Bezüglich janus.service:

      Versuche mal die services anzupassen:

      nano /etc/systemd/system/signaling.service

      dann unter [Unit]:
      [Unit]
      Description=Nextcloud Talk signaling server
      After=janus.service

      und

      nano /lib/systemd/system/janus.service

      wieder unter [Unit]

      [Unit]
      Description=Janus WebRTC gateway
      After=coturn.service

      dann

      systemctl daemon-reload

      dann sollte nach einem Reboot auch der janus.service starten.

      Ich baue das noch in den Artikel ein.

      Gruß
      Markus

      1. Hallo Markus,
        Das funktioniert perfekt. Habe es gerade beim 2. ausprobiert. Besten Dank für den Hinweis und die Konfiguration.
        Gruss
        Reto

  10. Hallo Markus,

    erstmal ein großes Kompliment für deine ausführliche Anleitung. So detailliert findet man solche kaum im Netz, danke dafür!
    Bei meiner Installation bin ich komplett nach deiner Anleitung gegangangen. Auf dem Signaling Server scheinen die Dienste auch alle korrekt zu laufen. Auch die Welcome Seite wird angezeigt: https://signaling.mydomain.com/standalone-signaling/api/v1/welcome
    Trotzdem lädt die Talk-App endlos und verbindet sich letztlich einfach nicht. Wenn in den Talk Einstellungen ausschließlich über Turn und CoTurn getalked wird, funktioniert alles. Sobald ich die signaling Server informationen hinzufüge, bekomme ich bei den Einstellungen nur Erfolgsmeldungen angezeigt, trotzdem lädt die Talk App dann endlos. Die einzige meldung, die im Log zu sehen ist, ist die folgende:

    POST https://signaling.mydomain.com/standalone-signaling/api/v1/room/kzjfjibx` resulted in a `403 Forbidden` response:
    Authentication check failed

    Spricht aus meiner sicht für ein Berechtigungsfehler? Für Tipps und Hinweise wäre ich sehr dankbar.

    Viele Grüße!
    Andre

    1. Hallo Andre,
      danke für Dein Feedback 🙂
      Das deutet darauf hin, dass das Secret für Signaling nicht korrekt eigetragen ist. Bitte noch mal prüfen.
      in der /etc/signaling/server.conf unter [Backend] das secret muss identisch mit dem „Shared Secret“ (ganz unten) in der Nextcloud-Weboberfläche sein.

      Gruß
      Markus

      1. Hallo Markus,
        tatsächlich hab ich den falschen key dort eingetragen (copy-paste Fehler). Vielen Dank für deine Hilfe. Und nochmals ein riesen Lob an deinen Blog, der ist echt klasse!

        Viele Grüße!
        Andre

  11. Hi,
    in the end of point nr 5, „netstat -tulpen | grep 8080“ – there are no service listening on port 8080.
    „systemctl status signaling“ gives
    ————————————————————————————————————
    ● signaling.service – Nextcloud Talk signaling server
    Loaded: loaded (/etc/systemd/system/signaling.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2020-11-02 22:48:08 CET; 2s ago
    Main PID: 12226 (signaling)
    Tasks: 9 (limit: 4617)
    Memory: 2.0M
    CGroup: /system.slice/signaling.service
    └─12226 /usr/bin/signaling –config /etc/signaling/server.conf

    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: main.go:130: Starting up version 9206a56113064b8e44b0de12d5128f8e88617679/go1.13.8 as pid 12226
    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: main.go:139: Using a maximum of 3 CPUs
    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: natsclient.go:116: Connection established to nats://localhost:4222 (NAF5FB4EGD3GCFD4VFLA3ANLRMIGUYQ2XEHXFO26QHNNGZHLMDIX7JFA)
    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: hub.go:163: WARNING: No shared secret has been set for internal clients.
    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: backend_configuration.go:110: Allowed backend hostnames: [libero2.tillvaxtanalys.se]
    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: hub.go:175: Using a maximum of 8 concurrent backend connections per host
    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: hub.go:182: Using a timeout of 10s for backend connections
    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: hub.go:268: Not using GeoIP database
    Nov 02 22:48:08 signal.MYSERVER.com signaling[12226]: main.go:191: Could not initialize janus MCU (dial tcp 127.0.0.1:8188: connect: connection refused) will retry in 1s
    Nov 02 22:48:09 signal.MYSERVER.com signaling[12226]: main.go:191: Could not initialize janus MCU (dial tcp 127.0.0.1:8188: connect: connection refused) will retry in 2s
    ————————————————————————————————————

    What can be wrong?
    /PelleH

  12. Hallo Markus,
    danke Dir für die super Anleitung. Bei mir hat sich der Janus Server aber erst starten lassen nachdem ich in der /etc/janus/janus.jcfg aus Deiner Anleitung den „turn_server und turn_port auskommentiert hatte.
    #turn_server = „signaling.example.com“
    # turn_port = 5349
    Dank Dir und ich freue mich über weitere tolle Anleitungen.

      1. Hi Markus, thanks for the reply. I have installed and configured everything but I am stuck at the nginx(docker in plesk) for my signaling subdomain. If you have any ideas, it would be great.
        Thanks again.

        1. Hi,

          disable „proxy mode“ and then it should be:


          add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

          location /standalone-signaling/ {
          proxy_pass http://127.0.0.1:8080/;
          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://127.0.0.1:8080/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;
          }

          Markus

  13. Hallo Christian,
    Nach einigen Versuchen habe ich es doch noch geschafft. Der signaling Server funktioniert nun problemlos. Besten Dank für Deine Anleitung! Die einzige die funktioniert auch für Linux Benutzer die das nicht den ganzen Tag machen.

    Ich versuchte noch im /etc/signaling/server.conf eine 2. Nextcloud Instanz zu aktivieren und ergänzte eine weitere Zeile mit allowed = cloud.xyz.com anzugeben. Das scheint aber so nicht zu funktionieren. Wie genau ist der Syntax um mehrere zusätzliche Instanzen an zu fügen ausser mit dem Eintrag allowall = true. Damit funktioniert es zwar, aber dafür kann auch jeder den Server benutzen, vorausgesetzt er kennt den Schlüssel. Müsste doch irgendwie möglich sein. Ich habe leider auch nach einiger suche nichts dazu gefunden. Falls Du mal zeit hast wäre ich dankbar.
    Gruss Reto

      1. Hi Markus,
        Port 5349 is open – this is the first point of your lesson, and the TURN server would not work.
        In the log I get the following error: `403 Forbidden` response:
        Authentication check failed
        I read your answer to Andre. I checked secret share – it matches the one from /etc/signaling/server.conf.
        I will be glad if you have other ideas
        Greetings!

  14. Hallo Christian,
    Besten Dank mal für Dein HowTo zum Thema Signaling Server. Wie ich unten schon schrieb (war ein dummer Fehler), lief das Setup des Standalone TURN/SIGNALING Server nun mehr oder weniger wie erwartet durch. Es gab aber ein paar Ungereimtheiten, welche nun dafür sorgen, dass der Signaling Server nicht korrekt funktioniert.
    In Step6: nginx -t ergibt:
    nginx: [warn] conflicting server name „signaling2.mydomain.com“ on 0.0.0.0:80, ignored
    nginx: [warn] conflicting server name „signaling2.mydomain.com“ on 0.0.0.0:443, ignored
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    In Step 5: netstat -tulpen | grep 8080 gibt nichts zurück. Auf dem Port scheint also nichts zu laufen. Andere Ports die ich checkte sind auf „LISTEN“.

    In Talk Config auf der Nextcod erhalte ich denn einen Fehler im Bereich „Signaling Server“. Wenn SSL aktiv ist erhalte ich:
    Fehler: Ein unbekannter Fehler ist aufgetreten
    Ohne SSL (Haken weg):
    Fehler: Der Server antwortete mit: 404

    beim TURN Server Eintrag erhalte ich beim Test einen Haken, also ok.

    Der Fehler muss irgendwie im Bereich Signalingserver Installation oder NGINX sein. Ich komme im Moment einfach nicht dahinter.

    Gruss
    Reto

  15. Hallo Markus

    Sorry, problem gelöst…. Ich rutschte tatsächlich in die falsche Konsolen session.. Sprich war auf dem falschen Server…
    Gruss Reto

  16. Hallo Markus,
    Ich habe mal Deine Anleitung genommen und das ganze auf einem Ubuntu 20 LTS Schritt für Schritt ausprobiert. Lief alles bestens bis zur Installation des NATS Server.
    Da muss irgendwas am Repo nicht stimmen. Ich erhalte immer die Fehlermeldung:
    E: Unable to locate package nats-server

    Habe es nun auch auf andere Wege, mit anderen TIpps versucht. Kein Erfolg. Kannst Du mir auf die Sprünge helfen?
    Danke Dir.
    Gruss Reto

  17. Moin Markus,

    zunächst einmal möchte ich Dir zu Deiner tollen Arbeit gratulieren. Ich habe bis dato nirgendwo anders ein derart ausführliche Beschreibung gefunden. Ich selber würde gerne auch „endlich“ bei mir das Nextcloud Talk High Performance Backend with Stun/Turnserver ans laufen kriegen, jedoch stoße ich bei mir – wohl mangels umfangreicher Linuxkenntnisse – auf erhebliche Schwierigkeiten.

    Bei mir ist Grundlage jeweils ein OMV5 NAS (Linux Debian 10) mit Nextcloud als Docker Lösung. Gerne würde ich nunmehr auch das Nextcloud Talk High Performance Backend with Stun/Turnserver ans Laufen kriegen und benötige dafür eigentlich ein Docker Image. Ich habe bis dato noch keine step by step Lösung gefunden die mir hilft mein „Projekt“ umzusetzen. Vielleicht könntest Du mir hier ein paar Hilfestellungen oder Tipps geben.

    Vielen Dank im Voraus

    Christian

      1. Moin Markus,

        ich war einige Tage beruflich unterwegs und komme erst jetzt dazu mich wieder bei Dir zu melden.

        Der OMV5 Server steht bei mir vor Ort. OMV5 läuft bei mir auf einem AMD 5 Ryzen 3600 mit 32 GB in einem RAID10 Umfeld (4 x 4 TB NAS Platten). Insoweit wäre von der Hardware für ein ausreichendes Umfeld gesorgt.

        Ich würde mich sehr freuen, wenn Du mir weitere Tipps geben könntest, damit ich doch noch das Nextcloud Talk High Performance Backend with Stun/Turnserver ans laufen kriegen könnte.

        Vielen Dank im Voraus

        Christian

        1. Moin Markus,

          da es doch offensichtlich nicht ganz so einfach ist ein funktionierendes Docker Image zu erstellen habe ich noch eine andere Frage. Kann ich Deine Anleitung auch auf Debian 10 Buster umsetzen?

          Der Hintergrund ist, dass ich OMV5 unter Debian 10 laufen habe. Wenn ich – leider – schon nicht in der Lage bin Deine Anleitung unter Docker umzusetzen, wäe es vielleicht eine Möglichkeit es vielleicht einfach unmittelbar auf Debian 10 zu probieren.

          Über ein kurzes Feedback würde ich mich sehr freuen.

          @Reto Vielen Dank für die Blumen, jedoch stehen diese ausschließlich Markus zu.

          Vielen Dank im Voraus

          Christian

          1. Hi Christian, unter Debian habe ich es noch nicht versucht. Gib mir mal ein paar Tage. Arbeite gerade an eine docker-Lösung. Eventuell könnte Deine Bandbreite noch ein Thema sein. NC empfiehlt 1Gbit/s.
            Gruß Markus

          2. Moin Markus,

            das wäre eine super Sache, wenn Du Dich doch noch an das Docker Image dranmachen würdest.

            Bandbreite in meinem Intranet ist derzeit 2,5 Gbit/s. Internet wird derzeit auf Glasfaser umgerüstet und kann noch angepasst werden. Trotzdem ist natürlich 1Gbit/s ein Wort.

            Viele Grüße

            Christian

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.