|
|
| Zeile 160: |
Zeile 160: |
| systemctl enable signaling.service | | systemctl enable signaling.service |
| systemctl start 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
| |
|
| |
| === Debug-/Loglevel einstellen ===
| |
|
| |
| == Test und Benchmarking ==
| |
| === Benchmark client ===
| |
| ==== Installation ====
| |
| Zum Testen des Signaling-Servers wird ein einfaches Client-Programm zur Verfügung gestellt, welches jedoch zuvor kompiliert werden muß:
| |
| $ cd /usr/src/nextcloud-spreed-signaling/src/client
| |
| $ make client
| |
|
| |
| ==== Konfiguration ====
| |
| Das Programm befindet sich im Anschluß im Verzeichnis /usr/src/nextcloud-spreed-signaling/bin/ und kann mit folgenden Optionen ausgeführt werden:
| |
| * -addr <http-Service-Adresse> (Standard ist localhost:28080)
| |
| * -config <Konfigurationsdatei>
| |
| * -maxClients <Anzahl der Client-Verbindungen> (Standardwert ist 100)
| |
|
| |
| ==== Anwendung ====
| |
| '''Wichtig''': Vor dem Ausführen des Programms muß die Konfigurationsdatei des Signaling-Servers dahingehend editiert werden, daß nicht nur das eigentliche Backend zugelassen wird, sondern alle. Dazu muß in der Datei /etc/signaling/server.conf der Eintrag "'''allowall = true'''" vorhanden sein. Nachdem Neustart des Signaling-Servers kann der Test-Client gestartet werden:
| |
| $ sudo systemctl restart signaling
| |
| $ sudo ./client -addr localhost:8080 -config /etc/signaling/server.conf
| |
|
| |
| ==== Bewertung der Ergebinisse ====
| |
| Bei der derzeitigen Implementierung des (laufenden) Signaling-Servers werden jedoch Fehler erzeugt:
| |
| 2021-02-01 12:53:51.717590 I | Using a maximum of 1 CPUs
| |
| 2021-02-01 12:53:51.717978 I | Backend server running on http://95.217.178.11:33031
| |
| 2021-02-01 12:53:51.718066 I | Connecting to [ws://localhost:8080/spreed]
| |
| 2021-02-01 12:53:51.718130 I | Starting 100 clients
| |
| 2021-02-01 12:53:51.720849 I | Unsupported message type: {Id: Type:error Error:Incomplete OCS response Hello:<nil> Bye:<nil> Room:<nil> Message:<nil> Control:<nil> Event:<nil>}
| |
| ...
| |
| 2021-02-01 12:53:51.856629 I | Unsupported message type: {Id: Type:error Error:Incomplete OCS response Hello:<nil> Bye:<nil> Room:<nil> Message:<nil> Control:<nil> Event:<nil>}
| |
| 2021-02-01 12:53:51.857998 I | Clients created
| |
| 2021-02-01 12:53:51.859424 I | Unsupported message type: {Id: Type:error Error:Incomplete OCS response Hello:<nil> Bye:<nil> Room:<nil> Message:<nil> Control:<nil> Event:<nil>}
| |
| 2021-02-01 12:53:54.072980 I | Received bye: &{Reason:hello_timeout}
| |
| ...
| |
| 2021-02-01 12:53:54.090515 I | Received bye: &{Reason:hello_timeout}
| |
|
| |
| Die Ausgabe einer erfolgreichen Programmausführung ist folgend gezeigt (die user-ID's der sample-user wurden stark verkürzt):
| |
|
| |
| $ ./client -addr localhost:8081 -config /etc/signaling/server.conf
| |
| 2021-02-01 13:02:45.432124 I | Using a maximum of 2 CPUs
| |
| 2021-02-01 13:02:45.433055 I | Backend server running on http://192.168.178.63:40305
| |
| 2021-02-01 13:02:45.433136 I | Connecting to [ws://localhost:8081/spreed]
| |
| 2021-02-01 13:02:45.433157 I | Starting 100 clients
| |
| 2021-02-01 13:02:45.448228 I | Registered as MTYxMjE4MDk2NXxaUXQxVEVydXVxLXEwZm1zRZUdHQmyVW (userid sample-user)
| |
| 2021-02-01 13:02:45.450357 I | Registered as MTYxMjE4MDk2NXw1aHRKWU14TWxoWWwyaM2ZhQTy88IIDt (userid sample-user)
| |
| ...
| |
| 2021-02-01 13:02:45.584143 I | Registered as MTYxMjE4MDk2NXxsUXVtblgyM0stanRGWDBDVlU1CaFRYO (userid sample-user)
| |
| 2021-02-01 13:02:45.585374 I | Clients created
| |
| 2021-02-01 13:02:45.585884 I | Registered as MTYxMjE4MDk2NXxMOTJzNkV1UkJMNGlueGR5OjOcJwcQiv (userid sample-user)
| |
| 2021-02-01 13:02:45.586546 I | Registered as MTYxMjE4MDk2NXxkMmNLaHZVamY5OWpsWEJmDYeRaCx7L0 (userid sample-user)
| |
| 2021-02-01 13:02:45.586572 I | All connections established
| |
| 2021-02-01 13:02:55.589250 I | Stats: sent=386158 (38615/sec), recv=386154 (38615/sec), delta=4
| |
| 2021-02-01 13:03:05.587561 I | Stats: sent=766105 (42216/sec), recv=765975 (42202/sec), delta=130
| |
| ...
| |
| 2021-02-01 13:04:15.586929 I | Stats: sent=3377364 (40248/sec), recv=3376924 (40219/sec), delta=440
| |
| 2021-02-01 13:04:25.589070 I | Stats: sent=3754158 (37679/sec), recv=3754115 (37719/sec), delta=43
| |
| ^C2021-02-01 13:04:31.612013 I | Interrupted
| |
| 2021-02-01 13:04:31.612031 I | Waiting for clients to terminate ...
| |
|
| |
|
| [[Kategorie:Nextcloud:Verwaltung:Talk]] | | [[Kategorie:Nextcloud:Verwaltung:Talk]] |
topic kurze Beschreibung
Beschreibung
- Der Signaling-Server (https://github.com/strukturag/nextcloud-spreed-signaling) ermöglicht Clients, die eine direkte Verbindung zueinander aufbauen wollen, den Austausch von Informationen, die dies gewährleisten.
- Möchte sich ein Client A mit einem Client B verbinden, signalisiert er dies dem Signaling-Server.
- Sollte Client B der Verbindungsanfrage zustimmen, übermittelt dieser seine Verbindungsinformationen an den Signaling-Server, der diese an Client A weiterreicht.
- Daraufhin erfolgt der direkte Verbindungsaufbau zwischen den Clients A und B.
Installation
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
Syntax
Parameter
Optionen
Konfiguration
Signaling Server als Systemdienst
- Damit der Signaling Server nicht jedesmal über die Konsole im Vordergrund gestartet werden muss, sollte dieser als Systemdienst installiert werden.
- Dazu stoppen wir erst einmal die Konsolen-Instanz.
- Zunächst legen wir uns einen speziellen User für den Signaling Server an:
groupadd signaling
useradd --system --gid signaling --shell /usr/sbin/nologin --comment "Standalone signaling server for Nextcloud Talk." signaling
- Anschließend wird die Konfigurationsdatei des Servers noch an einen anderen Ort kopiert (damit diese zum Beispiel bei einem Update nicht überschrieben wird).
- Ebenso werden die entsprechenden Berechtigungen gesetzt:
mkdir -p /etc/signaling
cp server.conf /etc/signaling/server.conf
chmod 600 /etc/signaling/server.conf
chown signaling: /etc/signaling/server.conf
- Nun editieren wir noch die Datei für den Systemdienst:
vi dist/init/systemd/signaling.service
[Unit]
Description=Nextcloud Talk signaling server
[Service]
ExecStart=/etc/nextcloud-spreed-signaling/bin/signaling --config /etc/signaling/server.conf
User=signaling
Group=signaling
Restart=on-failure
[Install]
WantedBy=multi-user.target
Der Dienst wird im System registriert und aktiviert:
cp dist/init/systemd/signaling.service /etc/systemd/system/signaling.service
systemctl enable signaling.service systemctl start signaling.service
Anschließend wird der Signaling Server bei jedem Systemstart gestartet.
Anwendungen
Sicherheit
Dokumentation
RFC
Man-Pages
Info-Pages
Projekt-Homepage
Links
Siehe auch
Weblinks
Einzelnachweise
Testfragen
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