Jibriサーバ(Ubuntu18.04LTS)インストール

更新日 2020-06-03 (水) 15:30:40

Jibriは会議内でサイレント参加者として機能するモジュール。 Jibriサーバからサイレント参加者として、Jitsiサーバに入る。Jitsi VideobridgeはユーザーのストリームをJibriにルーティングし、そこでライブストリーミングのために記録またはYouTubeに送信する。

Jitsiサーバの構成とJibriサーバの関係

 ----------------           ---------------             --------------------
 |              |           |             |             |                  |
 | Jitsi Meet   |<--------->| Prosody     |<----------->| Video bridge     |
 | web frontend |           | XMPP server |             | SFU media sever  |
 |              |           |             |<---         |                  |
 ----------------           ---------------   |         --------------------
        |                          |          | 
        |                          |          --------
        |                          |                 |
        |                          |                 |    Jibri Server
 -----------------          ---------------          |   -------------------
 |               |          |             |          |   |                 |
 | Web Server    |          | Jicofo      |          --->| Jibri           |
 | Nginx, Apache |          | conferences |              | recording,      |
 |               |          | management  |              | streaming       |
 -----------------          ---------------              -------------------

SFU(Selective Forwarding Unit):音声や映像をサーバー経由で行う技術です。配信者が直接相手に通信するのではなく、サーバーを間に挟むことで、動画の視聴者増加などによる、端末への負荷軽減を可能にする。

Jitsi Meetサーバ側の設定例(Ubuntu16.04ベースの説明を参考)

Jitsi Meetの設定を変更し、Jibriサーバからサイレント参加者として、Jitsiサーバに入るようにする。

設定内容

Step 1

 add the MUC component
 add recorder virtual host

Step 2

 add the Jibri users
 

MUC componentとrecorder virtual hostの追加

/etc/prosody/conf.d/meet.hoge-c.com.cfg.lua

meet.hoge-c.com.cfg.lua -> /etc/prosody/conf.avail/meet.hoge-c.com.cfg.lua

/etc/prosody/conf.avail/meet.hoge-c.com.cfg.lua

Component "internal.auth.meet.hoge-c.com" "muc"
    storage = "none"
    modules_enabled = {
      "ping";
    }
    admins = { "focus@auth.meet.hoge-c.com", "jvb@auth.meet.hoge-c.com" } 
    muc_room_locking = false
    muc_room_default_public_jids = true

VirtualHost "auth.meet.hoge-c.com"
    ssl = {
        key = "/etc/prosody/certs/auth.meet.hoge-c.com.key";
        certificate = "/etc/prosody/certs/auth.meet.hoge-c.com.crt";
    }
    authentication = "internal_plain"

 

最終行に追加

-- Jibri(Edit by JE2ISM)
Component "internal.auth.meet.hoge-c.com" "muc"
    modules_enabled = {
      "ping";
    }
   storage = "null"  	←"none" ?
   muc_room_cache_size = 1000

VirtualHost "recorder.meet.hoge-c.com"
    modules_enabled = {
      "ping";
    }
    authentication = "internal_plain"

prosodyの設定再読み込み

# /etc/init.d/prosody reload
[ ok ] Reloading prosody configuration (via systemctl): prosody.service.

jibriサーバからログインするユーザ作成

JibriがコントロールMUCにログインするために使用するアカウントです(Jibriはステータスを送信し、コマンドを待機します)

# prosodyctl register jibri auth.meet.hoge-c.com ******

2番目のアカウントは、通話に参加するときにJibriがSeleniumのクライアントとして使用するアカウントで、Jitsi Meet Web UIで特別な方法で処理できるようにします

# prosodyctl register recorder recorder.meet.hoge-c.com *****
# ls -l /var/lib/prosody/*/accounts/*
(略)
-rw-r----- 1 prosody prosody 45 May 25 16:04 /var/lib/prosody/auth%2emeet%2eoot suji%2dc%2ecom/accounts/jibri.dat
(略)
-rw-r----- 1 prosody prosody 45 May 25 16:05 /var/lib/prosody/recorder%2emeet%2 ehoge%2dc%2ecom/accounts/recorder.dat

/etc/jitsi/jicofo/sip-communicator.properties

org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.meet.hoge-c.com
org.jitsi.jicofo.auth.URL=XMPP:meet.hoge-c.com
(以下を追加)
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.hoge.hoge-c.com
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

jicofo再起動

# /etc/init.d/jicofo restart
[ ok ] Restarting jicofo (via systemctl): jicofo.service.

/etc/jitsi/meet/meet.hoge-c.com-config.js

    // Recording

    // Whether to enable file recording or not.
    // fileRecordingsEnabled: false,
    fileRecordingsEnabled: true,   ←ここ
    // Enable the dropbox integration.
    // dropbox: {
    //     appKey: '<APP_KEY>' // Specify your app key here.


    // Whether to enable live streaming or not.
    // liveStreamingEnabled: false,
    liveStreamingEnabled: true,   ←ここ

    hiddenDomain: 'recorder.vmmeeting.hoge-c.com',   ←ここ

ツールボタンの確認

/usr/share/jitsi-meet/interface_config.js

   TOOLBAR_BUTTONS: [
       'microphone', 'camera', 'closedcaptions', 'desktop', 'fullscreen',
       'fodeviceselection', 'hangup', 'profile', 'info', 'chat', 'recording',
                                                                  ^^^^^^^^^
       'livestreaming', 'etherpad', 'sharedvideo', 'settings', 'raisehand',
        ^^^^^^^^^^^^^
       'videoquality', 'filmstrip', 'invite', 'feedback', 'stats', 'shortcuts',
       'tileview', 'videobackgroundblur', 'download', 'help', 'mute-everyone',
       'e2ee'
   ],

Jibriサーバのインストール

JitsiサーバとJibriサーバは別サーバにインストールした。

OpenJDK-8をインストールするように追加

# echo 'deb http://archive.ubuntu.com/ubuntu bionic universe' > /etc/apt/sources.list.d/openjdk-8.list
# apt update
# apt upgrade

OpenJDK-8をインストールする(必要かは不明)

# apt install openjdk-8-jre-headless
# apt -y install linux-image-extra-virtual
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  linux-image-extra-virtual
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,864 B of archives.
After this operation, 16.4 kB of additional disk space will be used.
Get:1 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-image -extra-virtual amd64 4.15.0.101.91 [1,864 B]
Fetched 1,864 B in 0s (33.2 kB/s)
Selecting previously unselected package linux-image-extra-virtual.
(Reading database ... 67532 files and directories currently installed.)
Preparing to unpack .../linux-image-extra-virtual_4.15.0.101.91_amd64.deb ...
Unpacking linux-image-extra-virtual (4.15.0.101.91) ...
Setting up linux-image-extra-virtual (4.15.0.101.91) ...
                                     ^^^^^^^^^^^^^
# uname -a
Linux vm-jibri2 4.15.0-101-generic #102-Ubuntu SMP Mon May 11 10:07:26 UTC \
               ^^^^^^^^^^ 
2020 x86_64 x86_64 x86_64 GNU/Linux
# reboot
# uname -a
Linux vm-jibri2 4.15.0-101-generic #102-Ubuntu SMP Mon May 11 10:07:26 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
  • バージョンが一致していることを確認する

必要モジュールの確認のロードと確認

# modprobe snd-aloop
# lsmod | grep aloop
snd_aloop              24576  0
snd_pcm                98304  3 snd_ac97_codec,snd_aloop,snd_ens1371
snd                    81920  7 snd_seq_device,snd_timer,snd_ac97_codec,snd_aloop,snd_pcm,snd_rawmidi,snd_ens1371

モジュールの自動ロードの設定

# echo "snd-aloop" >> /etc/modules

chormeのインストール

# wget -qO - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
OK
# echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
# apt update
# apt -y install google-chrome-stable
(略)
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/google-chrome (google-chrome) in auto mode
Processing triggers for libgdk-pixbuf2.0-0:amd64 (2.36.11-2) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...

chormeドライバのインストール

# CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`
# wget http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip
# apt -y install unzip
# unzip chromedriver_linux64.zip -d /usr/local/bin/
Archive:  chromedriver_linux64.zip
  inflating: /usr/local/bin/chromedriver

jibriのインストール

# wget -qO - http://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
OK
# echo "deb https://download.jitsi.org unstable/" > /etc/apt/sources.list.d/jitsi-unstable.list
# apt update
# apt -y install jibri
(略)

Processing triggers for systemd (237-3ubuntu10.41) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for fontconfig (2.12.6-0ubuntu2) ...
Processing triggers for menu (2.1.47ubuntu2.1) ...
Processing triggers for dictionaries-common (1.27.2) ...

jibriの設定

/etc/jitsi/jibri/config.json

    // Where recording files should be temporarily stored
    "recording_directory":"/srv/recordings",    ←ここ
    // The path to the script which will be run on completed recordings
    "finalize_recording_script_path": "/path/to/finalize_recording.sh",
    "xmpp_environments": [
        {
            // A friendly name for this environment which can be used
            //  for logging, stats, etc.
            "name": "prod environment",
            // The hosts of the XMPP servers to connect to as part of
            //  this environment
            "xmpp_server_hosts": [
                "vmmeeting.hoge-c.com"    ←ここ
            ],
            // The xmpp domain we'll connect to on the XMPP server
            "xmpp_domain": "vmmeeting.hoge-c.com",    ←ここ
            // Jibri will login to the xmpp server as a privileged user
            "control_login": {
                // The domain to use for logging in
                "domain": "auth.vmmeeting.hoge-c.com",    ←ここ
                // The credentials for logging in
                "username": "jibri",    ←ここ
                "password": "******"    ←ここ
            },
            // Using the control_login information above, Jibri will join
            //  a control muc as a means of announcing its availability
            //  to provide services for a given environment
            "control_muc": {
                "domain": "internal.auth.vmmeeting.hoge-c.com",    ←ここ
                "room_name": "JibriBrewery",
                "nickname": "jibri-nickname"
            },
            // All participants in a call join a muc so they can exchange
            //  information.  Jibri can be instructed to join a special muc
            //  with credentials to give it special abilities (e.g. not being
            //  displayed to other users like a normal participant)
            "call_login": {
                "domain": "recorder.vmmeeting.hoge-c.com",    ←ここ
                "username": "recorder",    ←ここ
                "password": "*******"    ←ここ
            },

録画保存フォルダの作成

# mkdir /srv/recordings
# chown jibri:jibri /srv/recordings

jibriサービス起動

# service jibri restart
# service jibri status
● jibri.service - Jibri Process
   Loaded: loaded (/etc/systemd/system/jibri.service; disabled; vendor preset: e
   Active: active (running) since Wed 2020-05-27 15:33:48 JST; 16s ago
 Main PID: 6604 (java)
    Tasks: 36 (limit: 2290)
   CGroup: /system.slice/jibri.service
           mq6604 java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging.

May 27 15:33:48 vm-jibri2 systemd[1]: Started Jibri Process.
May 27 15:33:50 vm-jibri2 launch.sh[6604]: SLF4J: Failed to load class "org.slf4
May 27 15:33:50 vm-jibri2 launch.sh[6604]: SLF4J: Defaulting to no-operation (NO
May 27 15:33:50 vm-jibri2 launch.sh[6604]: SLF4J: See http://www.slf4j.org/codes

OS起動時に自動起動するように設定

#  systemctl enable jibri.service

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-06-03 (水) 15:30:40 (37d)