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

Aus Foxwiki
Keine Bearbeitungszusammenfassung
K Textersetzung - „'''topic''' kurze Beschreibung“ durch „'''topic''' - Kurzbeschreibung“
 
(36 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Janus =
'''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 ==
== Installation ==
  apt install janus
  # '''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


== Konfiguration ==
Das Interface wird dabei auf „lo“ gesetzt:
# ...
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.
; /etc/janus/janus.transport.websockets.jcfg
# ...
ws_interface = "lo"
# ...


cp -i /etc/janus/janus.jcfg.sample /etc/janus/janus.jcfg
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.


=== /etc/janus/janus.jcfg ===
# '''cp -i /etc/janus/janus.jcfg.sample /etc/janus/janus.jcfg'''
 
;/etc/janus/janus.jcfg
  ...
  ...
  stun_server = "cloud.foxtom.de"
  stun_server = "cloud.foxtom.de"
Zeile 22: Zeile 71:
  ...
  ...


=== /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"  
  ...
  ...


=== /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"
...


= 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.
* 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.


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


  # 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 88: 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 103: 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 118: Zeile 157:
  ...
  ...


=== Log prüfen ===
= Sicherheit =
 
= Dokumentation =
 
== RFC ==
= TMP =
== Man-Pages ==
=== Nextcloud:Signaling-Server Janus-Server ===
== Info-Pages ==
Die Installation erfolgt hier über einen Befehl:
== Projekt ==
apt install janus
# https://github.com/meetecho/janus-gateway
 
Anschließend müssen hier ebenfalls die Konfigurations-Dateien bearbeitet werden:
vi /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:
= Links =
# ...
== Siehe auch ==
interface = "lo"
== Weblinks ==
# ..


Das gleiche wird auch für den Websocket gemacht:
vi /etc/janus/janus.transport.websockets.jcfg
# ...
ws_interface = "lo"
# ...
= TMP =
== Janus WebRTC gateway ==
<!-- '''TODO: ''' Funktion und Aufgabe des Dienstes beschreiben -->
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. Dieser Standard ermöglicht es Clients (wie beispielsweise Webbrowsern) eine '''direkte''' Verbindung zueinander aufzubauen. Der Vorteil besteht darin, daß 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.
;Weitere Informationen
# https://github.com/meetecho/janus-gateway


siehe '''[[Nextcloud:Talk:HPB:Janus]]'''




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