Nextcloud/Talk/HPB/Janus: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K Textersetzung - „Man-Pages“ durch „Man-Page“ |
||
(43 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''topic''' - Kurzbeschreibung | |||
= Beschreibung = | |||
== WebRTC == | |||
* WebRTC ('''Web''' '''R'''eal-'''T'''ime '''C'''ommunication), Web Echtzeitkommunikation. | |||
* WebRTC ist ein offener Standard, der durch eine Sammlung von Kommunikationsprotokollen und Programmierschnittstellen definiert wird. | |||
* Dieser Standard ermöglicht es Clients (wie beispielsweise Webbrowsern) eine '''direkte''' Verbindung zueinander aufzubauen. | |||
* Damit die Clients voneinander erfahren, wie sie die direkte Verbindung zueinander aufbauen können, sind die Dienste eines Signaling-Servers notwendig. | |||
; Vorteile | |||
* Keine Softwareinstallation notwendig | |||
** wie beispielsweise es bei Skype oder Zoom | |||
* Schonung von Server-Ressourcen | |||
** WebRTC läuft innerhalb der Browser-Sandbox | |||
** keine Plug-ins oder andere Prozesse notwendig | |||
** dadurch sicherer | |||
== Janus WebRTC gateway == | |||
= Installation = | |||
== Installation == | |||
# '''apt install janus''' | |||
= Syntax = | |||
== Parameter == | |||
== Optionen == | |||
= Konfiguration = | |||
; /etc/janus/janus.jcfg | |||
Hier konfigurieren wir den STUN-Server (coturn), aktivieren die Option „Full Trickle“ und tragen den API-Key ein: | Hier konfigurieren wir den STUN-Server (coturn), aktivieren die Option „Full Trickle“ und tragen den API-Key ein: | ||
Zeile 16: | Zeile 37: | ||
# ... | # ... | ||
; /etc/janus/janus.transport.http.jcfg | |||
Das Interface wird dabei auf „lo“ gesetzt: | Das Interface wird dabei auf „lo“ gesetzt: | ||
Zeile 24: | Zeile 44: | ||
# .. | # .. | ||
; /etc/janus/janus.transport.websockets.jcfg | |||
# ... | # ... | ||
ws_interface = "lo" | ws_interface = "lo" | ||
# ... | # ... | ||
[[Kategorie: | Mit einer Janus-Instanz kann auf verschiedenen Wegen interagiert werden | ||
* HTTP | |||
* Websockets | |||
* [https://www.rabbitmq.com/ RabbitMQ] | |||
* ... | |||
Für jede dieser Möglichkeiten werden im Verzeichnis /etc/janus eigene Konfigurationsdateien angelegt. | |||
# '''cp -i /etc/janus/janus.jcfg.sample /etc/janus/janus.jcfg''' | |||
;/etc/janus/janus.jcfg | |||
... | |||
stun_server = "cloud.foxtom.de" | |||
stun_port = 5349 | |||
... | |||
full_trickle = true | |||
... | |||
turn_server = "cloud.foxtom.de" | |||
turn_port = 5349 | |||
... | |||
turn_rest_api_key = "'''<api-Key>'''" | |||
... | |||
; /etc/janus/janus.transport.http.jcfg | |||
... | |||
interface = "lo" | |||
... | |||
; /etc/janus/janus.transport.websockets.jcfg | |||
Janus-Server soll nur das lokale Interface abhören | |||
... | |||
ws_interface = "lo" | |||
= Anwendung = | |||
== Dienst starten == | |||
* Der Janus-Server kann mit dem Befehl systemctl start/stop manuell gestartet bzw. angehalten werden. | |||
* Eine Ausgabe eventueller Fehler erhält man jedoch nicht. | |||
* Zur Fehlersuche läßt sich das Programm jedoch manuell starten, indem mit der Option '''debug-level''' festgelegt werden kann, wie detailliert die Ausgabe erfolgen soll. | |||
# '''janus --debug-level=<1..7>''' | |||
# '''systemctl start janus''' | |||
== Status prüfen == | |||
* Ist ein entsprechendes Janus-PlugIn nicht installiert, oder dessen Konfigurationsdatei nicht nicht vorhanden, wird eine Fehlermeldung erzeugt. | |||
* In der Konfigurationsdatei /etc/janus/janus.jcfg lässt sich die Verwendung des PlugIns für RabbitMQ abstellen, indem die entsprechende Zeile auskommentiert wird: | |||
# You can choose which of the available transports should be enabled or | |||
# not. Use the 'disable' directive to prevent Janus from loading one | |||
# or more transport: use a comma separated list of transport file names | |||
# to identify the transports to disable. By default all available | |||
# transports are enabled and loaded at startup. | |||
transports: { | |||
'''#'''disable = "libjanus_rabbitmq.so" | |||
} | |||
... | |||
# '''systemctl status janus''' | |||
● janus.service - Janus WebRTC gateway | |||
Loaded: loaded (/lib/systemd/system/janus.service; enabled; vendor preset: enabled) | |||
Active: active (running) since Wed 2021-01-06 23:53:56 CET; 12s ago | |||
Docs: https://janus.conf.meetecho.com/docs/index.html | |||
Main PID: 10220 (janus) | |||
Tasks: 24 (limit: 2296) | |||
Memory: 11.1M | |||
CGroup: /system.slice/janus.service | |||
└─10220 /usr/bin/janus -o | |||
Jan 06 23:53:57 signaling janus[10220]: '''[ERR] [config.c:janus_config_parse:191] -- Error reading configuration file 'janus.transport.rabbitmq.cfg'... error 2 (No such file or directory)''' | |||
Jan 06 23:53:57 signaling janus[10220]: RabbitMQ SSL support disabled | |||
Jan 06 23:53:57 signaling janus[10220]: '''[WARN] RabbitMQ support disabled (Janus API)''' | |||
Jan 06 23:53:57 signaling janus[10220]: '''[WARN] RabbitMQ support disabled (Admin API)''' | |||
Jan 06 23:53:57 signaling janus[10220]: '''[WARN] RabbitMQ support disabled for both Janus and Admin API, giving up''' | |||
Jan 06 23:53:57 signaling janus[10220]: '''[WARN] The 'janus.transport.rabbitmq' plugin could not be initialized''' | |||
Jan 06 23:53:57 signaling janus[10220]: '''[WARN] libnice version outdated: 0.1.14 installed, at least 0.1.15 recommended''' | |||
Jan 06 23:53:57 signaling janus[10220]: HTTP transport timer started | |||
Jan 06 23:54:09 signaling janus[10220]: Creating new session: 7609464843575521; 0x7f1b4c001db0 | |||
Jan 06 23:54:09 signaling janus[10220]: Creating new handle in session 7609464843575521: 3636178337595333; 0x7f1b4c001db0 0x7f1b4c0031a0 | |||
== Debugging == | |||
# '''journalctl -u janus''' | |||
-- Logs begin at Mon 2021-02-01 13:52:30 CET, end at Tue 2021-02-02 11:19:16 CET. -- | |||
Feb 02 08:54:04 signaling janus[21010]: Creating new handle in session 5338086438572651: 2325140291688110; 0x7f9da4048db0 0x7f9da4133dc0 | |||
Feb 02 08:54:04 signaling janus[21010]: [2325140291688110] Creating ICE agent (ICE Full mode, controlled) | |||
Feb 02 08:54:04 signaling janus[21010]: nice_agent_set_relay_info: assertion 'username' failed | |||
Feb 02 08:54:04 signaling janus[21010]: [WARN] Could not set TURN server, is the address correct? (2a01:4f8:231:45cd::2:5349) | |||
Feb 02 08:54:04 signaling janus[21010]: [ERR] [sdp-utils.c:janus_sdp_get_codec_rtpmap:779] Unsupported codec 'none' | |||
Feb 02 08:54:05 signaling janus[21010]: [2325140291688110] The DTLS handshake has been completed | |||
Feb 02 08:54:05 signaling janus[21010]: [janus.plugin.videoroom-0x7f9da41f45c0] WebRTC media is now available | |||
... | |||
=== Debug-/Loglevel einstellen === | |||
* Soll der Janus-Server seine Ausgaben in eine eigene Log-Datei schreiben, kann dies in der Datei /etc/janus/'''janus.jcfg''' konfiguriert werden. | |||
* Die Angabe eines Debug-Levels ist hierbei möglich | |||
... | |||
# The next settings configure logging | |||
#log_to_stdout = false # Whether the Janus output should be written | |||
# to stdout or not (default=true) | |||
#'''log_to_file''' = "/path/to/janus.log" # Whether to use a log file or not | |||
'''debug_level''' = 4 # Debug/logging level, valid values are 0-7 | |||
#debug_timestamps = true # Whether to show a timestamp for each log line | |||
#debug_colors = false # Whether colors should be disabled in the log | |||
#debug_locks = true # Whether to enable debugging of locks (very verbose!) | |||
#log_prefix = "[janus] " # In case you want log lines to be prefixed by some | |||
... | |||
= Sicherheit = | |||
= Dokumentation = | |||
== RFC == | |||
== Man-Page == | |||
== Info-Pages == | |||
== Projekt == | |||
# https://github.com/meetecho/janus-gateway | |||
= Links = | |||
== Siehe auch == | |||
== Weblinks == | |||
[[Kategorie:Nextcloud/Talk]] |
Aktuelle Version vom 6. November 2024, 12:52 Uhr
topic - Kurzbeschreibung
Beschreibung
WebRTC
- WebRTC (Web Real-Time Communication), Web Echtzeitkommunikation.
- WebRTC ist ein offener Standard, der durch eine Sammlung von Kommunikationsprotokollen und Programmierschnittstellen definiert wird.
- Dieser Standard ermöglicht es Clients (wie beispielsweise Webbrowsern) eine direkte Verbindung zueinander aufzubauen.
- Damit die Clients voneinander erfahren, wie sie die direkte Verbindung zueinander aufbauen können, sind die Dienste eines Signaling-Servers notwendig.
- Vorteile
- Keine Softwareinstallation notwendig
- wie beispielsweise es bei Skype oder Zoom
- Schonung von Server-Ressourcen
- WebRTC läuft innerhalb der Browser-Sandbox
- keine Plug-ins oder andere Prozesse notwendig
- dadurch sicherer
Janus WebRTC gateway
Installation
Installation
# apt install janus
Syntax
Parameter
Optionen
Konfiguration
- /etc/janus/janus.jcfg
Hier konfigurieren wir den STUN-Server (coturn), aktivieren die Option „Full Trickle“ und tragen den API-Key ein:
# ... stun_server = "turn.meinedomain.de" stun_port = 5349 # ... full_trickle = true # ... turn_rest_api_key = "<Janus API-Key>" # ...
- /etc/janus/janus.transport.http.jcfg
Das Interface wird dabei auf „lo“ gesetzt:
# ... interface = "lo" # ..
- /etc/janus/janus.transport.websockets.jcfg
# ... ws_interface = "lo" # ...
Mit einer Janus-Instanz kann auf verschiedenen Wegen interagiert werden
- HTTP
- Websockets
- RabbitMQ
- ...
Für jede dieser Möglichkeiten werden im Verzeichnis /etc/janus eigene Konfigurationsdateien angelegt.
# cp -i /etc/janus/janus.jcfg.sample /etc/janus/janus.jcfg
- /etc/janus/janus.jcfg
... stun_server = "cloud.foxtom.de" stun_port = 5349 ... full_trickle = true ... turn_server = "cloud.foxtom.de" turn_port = 5349 ... turn_rest_api_key = "<api-Key>" ...
- /etc/janus/janus.transport.http.jcfg
... interface = "lo" ...
- /etc/janus/janus.transport.websockets.jcfg
Janus-Server soll nur das lokale Interface abhören
... ws_interface = "lo"
Anwendung
Dienst starten
- Der Janus-Server kann mit dem Befehl systemctl start/stop manuell gestartet bzw. angehalten werden.
- Eine Ausgabe eventueller Fehler erhält man jedoch nicht.
- Zur Fehlersuche läßt sich das Programm jedoch manuell starten, indem mit der Option debug-level festgelegt werden kann, wie detailliert die Ausgabe erfolgen soll.
# janus --debug-level=<1..7>
# systemctl start janus
Status prüfen
- Ist ein entsprechendes Janus-PlugIn nicht installiert, oder dessen Konfigurationsdatei nicht nicht vorhanden, wird eine Fehlermeldung erzeugt.
- In der Konfigurationsdatei /etc/janus/janus.jcfg lässt sich die Verwendung des PlugIns für RabbitMQ abstellen, indem die entsprechende Zeile auskommentiert wird:
# You can choose which of the available transports should be enabled or # not. Use the 'disable' directive to prevent Janus from loading one # or more transport: use a comma separated list of transport file names # to identify the transports to disable. By default all available # transports are enabled and loaded at startup. transports: { #disable = "libjanus_rabbitmq.so" } ...
# systemctl status janus ● janus.service - Janus WebRTC gateway Loaded: loaded (/lib/systemd/system/janus.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-01-06 23:53:56 CET; 12s ago Docs: https://janus.conf.meetecho.com/docs/index.html Main PID: 10220 (janus) Tasks: 24 (limit: 2296) Memory: 11.1M CGroup: /system.slice/janus.service └─10220 /usr/bin/janus -o Jan 06 23:53:57 signaling janus[10220]: [ERR] [config.c:janus_config_parse:191] -- Error reading configuration file 'janus.transport.rabbitmq.cfg'... error 2 (No such file or directory) Jan 06 23:53:57 signaling janus[10220]: RabbitMQ SSL support disabled Jan 06 23:53:57 signaling janus[10220]: [WARN] RabbitMQ support disabled (Janus API) Jan 06 23:53:57 signaling janus[10220]: [WARN] RabbitMQ support disabled (Admin API) Jan 06 23:53:57 signaling janus[10220]: [WARN] RabbitMQ support disabled for both Janus and Admin API, giving up Jan 06 23:53:57 signaling janus[10220]: [WARN] The 'janus.transport.rabbitmq' plugin could not be initialized Jan 06 23:53:57 signaling janus[10220]: [WARN] libnice version outdated: 0.1.14 installed, at least 0.1.15 recommended Jan 06 23:53:57 signaling janus[10220]: HTTP transport timer started Jan 06 23:54:09 signaling janus[10220]: Creating new session: 7609464843575521; 0x7f1b4c001db0 Jan 06 23:54:09 signaling janus[10220]: Creating new handle in session 7609464843575521: 3636178337595333; 0x7f1b4c001db0 0x7f1b4c0031a0
Debugging
# journalctl -u janus -- Logs begin at Mon 2021-02-01 13:52:30 CET, end at Tue 2021-02-02 11:19:16 CET. -- Feb 02 08:54:04 signaling janus[21010]: Creating new handle in session 5338086438572651: 2325140291688110; 0x7f9da4048db0 0x7f9da4133dc0 Feb 02 08:54:04 signaling janus[21010]: [2325140291688110] Creating ICE agent (ICE Full mode, controlled) Feb 02 08:54:04 signaling janus[21010]: nice_agent_set_relay_info: assertion 'username' failed Feb 02 08:54:04 signaling janus[21010]: [WARN] Could not set TURN server, is the address correct? (2a01:4f8:231:45cd::2:5349) Feb 02 08:54:04 signaling janus[21010]: [ERR] [sdp-utils.c:janus_sdp_get_codec_rtpmap:779] Unsupported codec 'none' Feb 02 08:54:05 signaling janus[21010]: [2325140291688110] The DTLS handshake has been completed Feb 02 08:54:05 signaling janus[21010]: [janus.plugin.videoroom-0x7f9da41f45c0] WebRTC media is now available ...
Debug-/Loglevel einstellen
- Soll der Janus-Server seine Ausgaben in eine eigene Log-Datei schreiben, kann dies in der Datei /etc/janus/janus.jcfg konfiguriert werden.
- Die Angabe eines Debug-Levels ist hierbei möglich
... # The next settings configure logging #log_to_stdout = false # Whether the Janus output should be written # to stdout or not (default=true) #log_to_file = "/path/to/janus.log" # Whether to use a log file or not debug_level = 4 # Debug/logging level, valid values are 0-7 #debug_timestamps = true # Whether to show a timestamp for each log line #debug_colors = false # Whether colors should be disabled in the log #debug_locks = true # Whether to enable debugging of locks (very verbose!) #log_prefix = "[janus] " # In case you want log lines to be prefixed by some ...