Nextcloud/Talk/HPB/Signaling-Server
Signaling Server
Zur Installation des Servers wird das Paket golang-go benötigt, welches über die Paketverwaltung installiert werden kann:
apt install golang-go
Installation
Die benötigten Quellpakete werden über GitHub bezogen und hier im Verzeichnis /usr/src abgelegt:
cd /usr/src git clone https://github.com/strukturag/nextcloud-spreed-signaling.git cd /usr/src/nextcloud-spreed-signaling
Der anschließende Befehl make build erstellt das Programm bin/signaling
make build
Konfiguration
Beispielkonfiguration
/usr/src/nextcloud-spreed-signaling/server.conf.in
Diese Datei wird nach /etc/signaling/server.conf kopiert:
mkdir -p /etc/signaling cd /usr/src/nextcloud-spreed-signaling cp server.conf.in /etc/signaling/server.conf
Um den Signaling-Server als Systemdienst installieren zu können, wird ein Benutzer und eine Gruppe angelegt:
groupadd signaling useradd --system --gid signaling --shell /usr/sbin/nologin --comment "Standalone signaling server for Nextcloud Talk." signaling
und die Berechtigungen angepasst:
chmod 600 /etc/signaling/server.conf chown signaling: /etc/signaling/server.conf
Entsprechend den lokalen Begebenheiten wir diese Datei wie folgt editiert:
listen = 127.0.0.1:8080 ... [sessions] hashkey = <Hash-Key> ... blockkey = <Block-Key> ... [backend] backends = backend1 [backend1] url = https://cloud.foxtom.de ... secret = <Nextcloud Secret Key> ... [nats] url = nats://localhost:4222 ... [mcu] type = janus ... url = ws://127.0.0.1:8188 ... [turn] apikey = <api-key> secret = <TURN-Server-Key> servers = turn:cloud.foxtom.de:5349?transport=udp,turn:cloud.foxtom.de:5349?transport=tcp ...
Zum automatischen Starten des Signaling-Servers als Systemdienst werden die folgenden Befehle ausgeführt:
cp dist/init/systemd/signaling.service /etc/systemd/system/signaling.service systemctl enable signaling.service systemctl start signaling.service
Starten des Signaling-Servers
Ist Janus-Server bereits gestartet, kann der Signaling-Server für einen Test direkt aufgerufen werden:
sudo /usr/src/nextcloud-spreed-signaling/bin/signaling --config /etc/signaling/server.conf 2021-01-06 15:11:51.109402 I | main.go:130: Starting up version 64cccab641874b3e688c1eb9029b5bb9215741e5/go1.11.6 as pid 9913 2021-01-06 15:11:51.109824 I | main.go:139: Using a maximum of 1 CPUs 2021-01-06 15:11:51.111647 I | natsclient.go:116: Connection established to nats://localhost:4222 (ND2IPCPXAOZMW5QPQ3R476UVGKI42RUNGIQ7YOHLNHK3QLTS7HXIVIWH) 2021-01-06 15:11:51.111713 I | backend_configuration.go:77: Backend backend1 added for https://cloud.foxtom.de/ 2021-01-06 15:11:51.111723 I | hub.go:177: Using a maximum of 8 concurrent backend connections per host 2021-01-06 15:11:51.111739 I | hub.go:184: Using a timeout of 10s for backend connections 2021-01-06 15:11:51.111759 I | hub.go:270: Not using GeoIP database 2021-01-06 15:11:51.113242 I | mcu_janus.go:289: Connected to Janus WebRTC Server 0.9.2 by Meetecho s.r.l. 2021-01-06 15:11:51.113260 I | mcu_janus.go:293: Found JANUS VideoRoom plugin 0.0.9 by Meetecho s.r.l. 2021-01-06 15:11:51.113269 I | mcu_janus.go:299: Data channels are supported 2021-01-06 15:11:51.113274 I | mcu_janus.go:305: Full-Trickle is enabled 2021-01-06 15:11:51.113280 I | mcu_janus.go:308: Maximum bandwidth 1048576 bits/sec per publishing stream 2021-01-06 15:11:51.113285 I | mcu_janus.go:309: Maximum bandwidth 2097152 bits/sec per screensharing stream 2021-01-06 15:11:51.114259 I | mcu_janus.go:315: Created Janus session 6900302758812903 2021-01-06 15:11:51.114951 I | mcu_janus.go:322: Created Janus handle 7778710372665701 2021-01-06 15:11:51.115064 I | main.go:226: Using janus MCU 2021-01-06 15:11:51.115132 I | hub.go:357: Using a timeout of 10s for MCU requests 2021-01-06 15:11:51.115192 I | backend_server.go:94: Using configured TURN API key 2021-01-06 15:11:51.115250 I | backend_server.go:95: Using configured shared TURN secret 2021-01-06 15:11:51.115315 I | backend_server.go:97: Adding "turn:cloud.foxtom.de:5349?transport=udp" as TURN server 2021-01-06 15:11:51.115372 I | backend_server.go:97: Adding "turn:cloud.foxtom.de:5349?transport=tcp" as TURN server 2021-01-06 15:11:51.115420 I | backend_server.go:104: No IPs configured for the stats endpoint, only allowing access from 127.0.0.1 2021-01-06 15:11:51.115613 I | main.go:302: Listening on 127.0.0.1:8080
Debugging
Log prüfen
Mit dem Befehl journalctl lassen sich die Einträge des Systemd-Logbuchs zum Siganling-Servers ausgeben:
$ sudo journalctl -u signaling -- Logs begin at Mon 2021-02-01 13:01:38 CET, end at Mon 2021-02-01 14:21:47 CET. -- Feb 01 13:01:38 signaling signaling[10668]: client.go:251: Client from 46.90.62.181 has RTT of 127 ms (127.606144ms) Feb 01 13:01:38 signaling signaling[10668]: client.go:251: Client from 91.64.35.249 has RTT of 71 ms (71.768255ms) Feb 01 13:01:38 signaling signaling[10668]: client.go:251: Client from 91.64.2.4 has RTT of 49 ms (49.079442ms) Feb 01 13:01:38 signaling signaling[10668]: client.go:251: Client from 89.249.64.252 has RTT of 60 ms (60.899805ms) Feb 01 13:01:39 signaling signaling[10668]: client.go:251: Client from 217.94.247.3 has RTT of 37 ms (37.689669ms) Feb 01 13:01:39 signaling signaling[10668]: client.go:251: Client from 95.90.232.210 has RTT of 57 ms (57.636709ms) Feb 01 13:01:39 signaling signaling[10668]: client.go:251: Client from 91.64.50.230 has RTT of 54 ms (54.221002ms) ...
Fehlermeldungen sind bei der aktuell laufenden Instanz des Signaling-Servers von dieser Art & nur sporadisch:
Feb 01 13:02:23 signaling signaling[10668]: client.go:271: Error reading from 95.90.245.7: read tcp 127.0.0.1:8080->127.0.0.1:35230: use of closed network connection