jitsi-meet をオンプレサーバーにインストールしてWeb会議用のサーバを作成したはなし


Jitsi meet をオンプレサーバにインストールしWeb会議用サーバーを構築する

概要

  • 社内のオンプレサーバーにJitsi meet をインストールしクローズドなWeb会議用サーバーを構築しました。以前はhidden in を使えるようにしたのですが、画面共有もできるようにということでjitsi meet に白羽の屋が立ちました。

要件

  • 社内ネットワーク内に立てたい
  • iOS やAndrdoid 端末 からも使いたい

環境

  • OS:ubuntu 16.04
  • 関連するミドルウェア
    • Webサーバー:NginX
    • DNSサーバー:dnsmasq

やったこと(概要)

  1. ホスト名を決定する & SSL証明書の準備
  2. jitsi-meet インストール & 起動
  3. DNSの設定
    1. 固定IP設定する
    2. dnsmasqの設定
    3. 関係端末のプライマリDNSをこのサーバーに変更する
  4. クライアント端末のCPU負荷を下げるためのあれこれ

やったこと(詳細)

ホスト名を決定する & SSL証明書の準備

  • IPアドレスを指定しての接続はできませんでした。ブラウザでトップ画面の選択はできるのですが、アプリ起動後に「あなたは切断されました。」のメッセージが表示され通話は始まりません。(おそらくSSL証明書にオレオレ証明書を使っているからだと思います。)
  • オレオレ証明書を各端末にインストールすればいいんでしょうけど、端末数が多いと死にます。証明書インストールの手間を省くため今回は証明書を別途準備しました。準備したSSL証明書は任意の場所に置きます。

jitsi-meet インストール & 起動

下記ページを参考にしました。 hostname とSSL証明書のパスは自分の環境に合わせて変更します。 オープンソースなWeb会議システム Jitsi Meet Server インストール

この時点でIPアドレス指定でPC(Windows/Chrome) から接続できました。 ただしSSL証明書の記載内容とURLが一致しないため証明書エラーは残っています。そのためiPadなどからは利用できません。

DNSの設定

  • SSL証明書の記載内容でアクセスできるようにDNSサーバーを構築します。
    (今回は同じサーバーインスタンスに構築)
  • はじめBINDで構築しようとしたのですが、やりたいことにはオーバースペック過ぎたのでDnsmasq を使いました。
    • hosts ファイルに記入するだけで名前解決できるようになるそうです。お手軽。
固定IPを指定

基本はこちらを参考にしつつも最終的には /etc/network/interfacesを下記内容に変更しました。

# IPを固定&対象のIPアドレスを指定
iface enp0s3 inet static
address 192.168.11.88
netmask 255.255.255.0

# DNSサーバーに自分自身を指定
nameserver 192.168.11.88  8.8.8.8

書き換えたあとは network を再起動

/etc/init.d/network restart

# 自分の環境だけかもしれませんが、networkの再起動だけでは反映されなかったのでOSを再起動しました。。
reboot

# 変更されたことを確認
ifconfig
#  192.168.11.88 が設定されていればOK
dnsmasqの設定
sudo apt install -y dnsmasq
# dnsmasq の設定
vim /etc/dnsmasq.conf
# ドメイン&IPの設定
vim /etc/hosts

# 53番ポートを開放
ufw allow 53
# FWを再起動
systemctl restart ufw

# dnsmasq を再起動
systemctl restart dnsmasq

# 設定を確認
dig 【対象のドメイン】
/etc/dnsmasq.conf の編集内容

下記2行を末尾に追記

domain-needed
bogus-priv

あとは関係端末のDNSサーバーにこのサーバー(192.168.88.33)を指定すればおしまいです。 iPadから ドメイン名指定でJitsi-meet サーバにアクセスし、Web会議ができることを確認しました。

クライアント端末のCPU負荷を下げるためのあれこれ

完了と思いきや、「CPU使用率が高いのでどうにかしてほしい」とのこと。。

下記を試しました。

jitsi-meet の設定変更

下記を参考に設定を変更しました

vim /usr/share/jitsi-meet/interface_config.js
+ DISABLE_VIDEO_BACKGROUND: true,


vim /etc/jitsi/meet/【設定したホスト名】.js 
# 数字は行数
 76     // Disable measuring of audio levels.
 77     // audioLevelsInterval: 200,
 78     // disableAudioLevels: false,
 79    disableAudioLevels: true,

109     // Sets the preferred resolution (height) for local video. Defaults to 720.
110     resolution: 180,
111 
112     // w3c spec-compliant video constraints to use for video capture. Currently
113     // used by browsers that return true from lib-jitsi-meet's
114     // util#browser#usesNewGumFlow. The constraints are independent from
115     // this config's resolution value. Defaults to requesting an ideal
116     // resolution of 120p.
117     constraints: {
118         video: {
119             height: {
120                ideal: 180,
121                 max: 180,
122                 min: 45
123             }
124         }
125      },
126 

133     // enableLayerSuspension: false,
134     enableLayerSuspension: true,

# サービス再起動
systemctl restart  jitsi-videobridge2

クライアント側の変更

クライアント側はChromeを使う&下記設定を行うことで、CPU負荷を下げることができました。 Google Chromeが重くなったら起動プロセス数の制限でメモリの使用量を削減!

0 件のコメント :

コメントを投稿