Jitsi meet をオンプレサーバにインストールしWeb会議用サーバーを構築する
概要
- 社内のオンプレサーバーにJitsi meet をインストールしクローズドなWeb会議用サーバーを構築しました。以前はhidden in を使えるようにしたのですが、画面共有もできるようにということでjitsi meet に白羽の屋が立ちました。
要件
- 社内ネットワーク内に立てたい
- iOS やAndrdoid 端末 からも使いたい
環境
- OS:ubuntu 16.04
- 関連するミドルウェア
- Webサーバー:NginX
- DNSサーバー:dnsmasq
やったこと(概要)
- ホスト名を決定する & SSL証明書の準備
- jitsi-meet インストール & 起動
- DNSの設定
- 固定IP設定する
- dnsmasqの設定
- 関係端末のプライマリDNSをこのサーバーに変更する
- クライアント端末の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 の設定変更
下記を参考に設定を変更しました
- High CPU utilization on client end
- [jitsi-dev] How to change resolution and frame rate (FPS) of Jitsi?
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 件のコメント :
コメントを投稿