Nextcloud/Talk/HPB/Janus: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 2: | Zeile 2: | ||
= Beschreibung = | = Beschreibung = | ||
== | == WebRTC == | ||
* WebRTC ist eine Abkürzung für '''Web''' '''R'''eal-'''T'''ime '''C'''ommunication, also Echtzeitkommunikation. | * WebRTC ist eine Abkürzung für '''Web''' '''R'''eal-'''T'''ime '''C'''ommunication, also Echtzeitkommunikation. | ||
* WebRTC ist ein offener Standard, der durch eine Sammlung von Kommunikationsprotokollen und Programmierschnittstellen definiert wird. | * WebRTC ist ein offener Standard, der durch eine Sammlung von Kommunikationsprotokollen und Programmierschnittstellen definiert wird. | ||
Zeile 12: | Zeile 10: | ||
* WebRTC läuft innerhalb der Browser-Sandbox und ist dadurch auch sicher - es werden keine PlugIns benötigt oder andere Prozesse gestartet. | * WebRTC läuft innerhalb der Browser-Sandbox und ist dadurch auch sicher - es werden keine PlugIns benötigt oder andere Prozesse gestartet. | ||
* Damit die Clients voneinander erfahren, wie sie die direkte Verbindung zueinander aufbauen können, sind die Dienste eines Signaling-Servers notwendig. | * Damit die Clients voneinander erfahren, wie sie die direkte Verbindung zueinander aufbauen können, sind die Dienste eines Signaling-Servers notwendig. | ||
== Janus WebRTC gateway == | |||
= Installation = | = Installation = | ||
== Installation == | == Installation == | ||
apt install janus | # '''apt install janus''' | ||
= Syntax = | = Syntax = | ||
Zeile 21: | Zeile 21: | ||
== Optionen == | == Optionen == | ||
= Konfiguration = | = 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>" | ||
# ... | |||
Anschließend wird Janus so konfiguriert, dass es nur lokal (das heißt nicht über das Netzwerk) angesprochen werden kann: | |||
vi /etc/janus/janus.transport.http.jcfg | |||
Das Interface wird dabei auf „lo“ gesetzt: | |||
# ... | |||
interface = "lo" | |||
# .. | |||
= | Das gleiche wird auch für den Websocket gemacht: | ||
vi /etc/janus/janus.transport.websockets.jcfg | |||
# ... | |||
ws_interface = "lo" | |||
# ... | |||
Mit einer Janus-Instanz kann auf verschiedenen Wegen interagiert werden - über HTTP, Websockets, [https://www.rabbitmq.com/ RabbitMQ] und einigen mehr. Für jede dieser Möglichkeiten werden im Verzeichnis /etc/janus eigene Konfigurationsdateien angelegt. | Mit einer Janus-Instanz kann auf verschiedenen Wegen interagiert werden - über HTTP, Websockets, [https://www.rabbitmq.com/ RabbitMQ] und einigen mehr. Für jede dieser Möglichkeiten werden im Verzeichnis /etc/janus eigene Konfigurationsdateien angelegt. | ||
Zeile 92: | Zeile 76: | ||
... | ... | ||
ws_interface = "lo" | ws_interface = "lo" | ||
== Dateien == | |||
= Anwendungen = | |||
== Dienst starten == | == Dienst starten == | ||
<!-- '''TODO: ''' Gibt es eine Möglichkeit, dass ''systemctl start'' direkt eine Statusmeldung ausgibt? --> | <!-- '''TODO: ''' Gibt es eine Möglichkeit, dass ''systemctl start'' direkt eine Statusmeldung ausgibt? --> | ||
Zeile 177: | Zeile 162: | ||
=== Log prüfen === | === Log prüfen === | ||
= Sicherheit = | |||
= Dokumentation = | |||
== RFC == | |||
== Man-Pages == | |||
== Info-Pages == | |||
== Projekt-Homepage == | |||
# https://github.com/meetecho/janus-gateway | |||
= Links = | |||
== Siehe auch == | |||
== Weblinks == | |||
== Einzelnachweise == | |||
<references /> | |||
= | = Testfragen = | ||
= | <div class="toccolours mw-collapsible mw-collapsed"> | ||
''Testfrage 1'' | |||
<div class="mw-collapsible-content">'''Antwort1'''</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 2'' | |||
<div class="mw-collapsible-content">'''Antwort2'''</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 3'' | |||
<div class="mw-collapsible-content">'''Antwort3'''</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 4'' | |||
<div class="mw-collapsible-content">'''Antwort4'''</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed"> | |||
''Testfrage 5'' | |||
<div class="mw-collapsible-content">'''Antwort5'''</div> | |||
</div> | |||
[[Category:Nextcloud:Verwaltung]] | [[Category:Nextcloud:Verwaltung]] |
Version vom 21. April 2022, 07:32 Uhr
topic kurze Beschreibung
Beschreibung
WebRTC
- WebRTC ist eine Abkürzung für Web Real-Time Communication, also 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.
- Der Vorteil besteht darin, dass keine zusätzliche Software installiert werden muss, wie es etwa bei Skype oder Zoom der Fall ist.
- Des Weiteren werden Server-Ressourcen geschont.
- WebRTC läuft innerhalb der Browser-Sandbox und ist dadurch auch sicher - es werden keine PlugIns benötigt oder andere Prozesse gestartet.
- Damit die Clients voneinander erfahren, wie sie die direkte Verbindung zueinander aufbauen können, sind die Dienste eines Signaling-Servers notwendig.
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>" # ...
Anschließend wird Janus so konfiguriert, dass es nur lokal (das heißt nicht über das Netzwerk) angesprochen werden kann:
vi /etc/janus/janus.transport.http.jcfg
Das Interface wird dabei auf „lo“ gesetzt:
# ... interface = "lo" # ..
Das gleiche wird auch für den Websocket gemacht:
vi /etc/janus/janus.transport.websockets.jcfg # ... ws_interface = "lo" # ...
Mit einer Janus-Instanz kann auf verschiedenen Wegen interagiert werden - über HTTP, Websockets, RabbitMQ und einigen mehr. 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
Janus-Server soll nur das lokale Interface abhören
... interface = "lo" ...
- /etc/janus/janus.transport.websockets.jcfg
Janus-Server soll nur das lokale Interface abhören
... ws_interface = "lo"
Dateien
Anwendungen
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äßt 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
Die Systemd-Protokolle zum Janus-Server lassen sich mit journalctl ausgeben:
$ sudo 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 ebenfalls 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 ...
Log prüfen
Sicherheit
Dokumentation
RFC
Man-Pages
Info-Pages
Projekt-Homepage
Links
Siehe auch
Weblinks
Einzelnachweise
Testfragen
Testfrage 1
Testfrage 2
Testfrage 3
Testfrage 4
Testfrage 5