Nextcloud/Talk/HPB/Janus: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
K Textersetzung - „'''topic''' kurze Beschreibung“ durch „'''topic''' - Kurzbeschreibung“
 
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' kurze Beschreibung
'''topic''' - Kurzbeschreibung


= Beschreibung =
= Beschreibung =
== WebRTC ==
== WebRTC ==
* WebRTC ist eine Abkürzung für '''Web''' '''R'''eal-'''T'''ime '''C'''ommunication, also Echtzeitkommunikation.  
* 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.  
* 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.  
* 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.
* 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 ==
== Janus WebRTC gateway ==
Zeile 33: Zeile 37:
  # ...
  # ...


Anschließend wird Janus so konfiguriert, dass es nur lokal (das heißt nicht über das Netzwerk) angesprochen werden kann:
; /etc/janus/janus.transport.http.jcfg
vi /etc/janus/janus.transport.http.jcfg


Das Interface wird dabei auf „lo“ gesetzt:
Das Interface wird dabei auf „lo“ gesetzt:
Zeile 41: Zeile 44:
  # ..
  # ..


Das gleiche wird auch für den Websocket gemacht:
; /etc/janus/janus.transport.websockets.jcfg
vi /etc/janus/janus.transport.websockets.jcfg
  # ...
  # ...
  ws_interface = "lo"
  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
* 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
  # '''cp -i /etc/janus/janus.jcfg.sample /etc/janus/janus.jcfg'''


;/etc/janus/janus.jcfg
;/etc/janus/janus.jcfg
Zeile 65: Zeile 72:


; /etc/janus/janus.transport.http.jcfg  
; /etc/janus/janus.transport.http.jcfg  
Janus-Server soll nur das lokale Interface abhören
  ...
  ...
  interface = "lo"  
  interface = "lo"  
Zeile 71: Zeile 77:


; /etc/janus/janus.transport.websockets.jcfg
; /etc/janus/janus.transport.websockets.jcfg
<!-- '''TODO: '''Warum muss das hier nochmals konfiguriert werden? (siehe 3.2) -->


Janus-Server soll nur das lokale Interface abhören
Janus-Server soll nur das lokale Interface abhören
  ...
  ...
  ws_interface = "lo"
  ws_interface = "lo"
== Dateien ==


= Anwendungen =
= Anwendung =
== Dienst starten ==
== Dienst starten ==
<!-- '''TODO: ''' Gibt es eine Möglichkeit, dass ''systemctl start'' direkt eine Statusmeldung ausgibt? -->
* Der Janus-Server kann mit dem Befehl systemctl start/stop manuell gestartet bzw.&nbsp;angehalten werden.  
 
* Eine Ausgabe eventueller Fehler erhält man jedoch nicht.  
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.
* 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>
  # '''janus --debug-level=<1..7>'''


  # systemctl start janus
  # '''systemctl start janus'''


== Status prüfen ==
== Status prüfen ==
<!-- '''TODO: ''' Was bedeutet diese Ausgabe? -->
* 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:
<!-- '''TODO: ''' Wie ist der gemeldete Fehler zu korrigieren? -->
 
<!-- '''TODO: ''' Welche Bedeutung haben die einzelnen Warnungen? -->
 
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
  # You can choose which of the available transports should be enabled or
Zeile 131: Zeile 130:


== Debugging ==
== Debugging ==
 
  # '''journalctl -u janus'''
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. --
  -- 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]: Creating new handle in session 5338086438572651: 2325140291688110; 0x7f9da4048db0 0x7f9da4133dc0
Zeile 146: Zeile 142:


=== Debug-/Loglevel einstellen ===
=== 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.  
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:
* Die Angabe eines Debug-Levels ist hierbei möglich


  ...
  ...
Zeile 161: Zeile 157:
  ...
  ...


=== Log prüfen ===
= Sicherheit =
= Sicherheit =
= Dokumentation =
= Dokumentation =
Zeile 167: Zeile 162:
== Man-Pages ==
== Man-Pages ==
== Info-Pages ==
== Info-Pages ==
== Projekt-Homepage ==
== Projekt ==
# https://github.com/meetecho/janus-gateway
# https://github.com/meetecho/janus-gateway


Zeile 173: Zeile 168:
== Siehe auch ==
== Siehe auch ==
== Weblinks ==
== 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]]
 
 
[[Kategorie:Nextcloud/Talk]]

Aktuelle Version vom 14. September 2024, 21:07 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

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-Pages

Info-Pages

Projekt

  1. https://github.com/meetecho/janus-gateway

Links

Siehe auch

Weblinks