オープンソースのビデオ会議ソフト Jitsi Meet
昨今のコロナ禍対策でテレワークの需要が急増 ビデオ会議、Web会議等 呼び方はいろいろだが有効なツールが数多く存在している ZOOM,Teams, Google Meet 等サーバーを自前で建てることなく無料で使える様です。Jitsi Meet も同様にサーバーは不要ですが、オーブンソースの為、自前でサーバーを立てる事も出来ます。オンプレにサーバーを立てればセキュリティは格段に向上します。OSS無料なのでどんな感じかサーバーを構築してみました。
環境
Azure Ubuntu 18.04.4 LTS メモリ:2ギガ サイズ:Standard B1ms vCPU 数:1
インストールと設定
OSのインストールは割愛
手順1 スワップパーティション追加 とりあえず後で
スワップの確認方法
# free # cat /proc/meminfo # swapon -s
手順2 マシンのホスト名と完全修飾ドメイン名(FQDN)を設定する
root@jitsi:~# hostname jitsi root@jitsi:~# cat /etc/hosts 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts sed -i 's/^127.0.1.1.*$/127.0.1.1 jitsi.example.com jitsi/g' /etc/hosts ←これをやっても何も変わらず root@jitsi:~# cat /etc/hosts 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts root@jitsi:/etc# hostnamectl set-hostname jitsi 一応 ←を実行しておいた # vi /etc/hosts /etc/hosts 手動編集した 127.0.0.1 localhost 127.0.0.1 jitsi.example.com jitsi ← 追加 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
手順3 ファイアウォールの設定 Azureの管理画面で設定
手順4 システムを更新する
root@jitsi:~# apt update apt upgrade -y && sudo shutdown -r now
手順5 OpenJDK Javaランタイム環境(JRE)8をインストールする
root@jitsi:~# apt install -y openjdk-8-jre-headless root@jitsi:~# java -version openjdk version "1.8.0_252" OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~18.04-b09) OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
さらに、JAVA_HOMEを次のように環境変数を設定
root@jitsi:~# echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | sudo tee -a /etc/profile root@jitsi:~# source /etc/profile
手順6 Nginx Webサーバーをインストールする
root@jitsi:~# apt install -y nginx root@jitsi:~# systemctl start nginx.service root@jitsi:~# systemctl enable nginx.service Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable nginx root@jitsi:~# systemctl status nginx ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-06-08 11:22:55 JST; 1min 9s ago Docs: man:nginx(8) Main PID: 5268 (nginx) Tasks: 2 (limit: 2232) CGroup: /system.slice/nginx.service tq5268 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; mq5270 nginx: worker process 6月 08 11:22:55 jitsi systemd[1]: Starting A high performance web server and a reverse proxy server... 6月 08 11:22:55 jitsi systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument 6月 08 11:22:55 jitsi systemd[1]: Started A high performance web server and a reverse proxy server.
手順7 Jitsi Meetをインストールする
最新のUbuntuまたはDebianシステムでは、公式のJitsi debリポジトリを使用してJitsi Meetを簡単にインストールできます。まず、システムにJitsiリポジトリーをセットアップ。
root@jitsi:~# wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add - gpg: 有効なOpenPGPデータが見つかりません。
Jitsi ダウンロードサーバーがダウンしているらしい
4,5時間待って再度トライしたらダウンロードできたっぽい
root@jitsi:~# wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add - OK root@jitsi:~# sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list" root@jitsi:~# apt update -y ヒット:1 http://azure.archive.ubuntu.com/ubuntu bionic InRelease 取得:2 http://azure.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] 取得:3 http://azure.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] 取得:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] 取得:5 https://download.jitsi.org stable/ InRelease [1,882 B] 取得:6 https://download.jitsi.org stable/ Packages [44.0 kB] 298 kB を 3秒 で取得しました (112 kB/s) パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 パッケージはすべて最新です。
Jitsi Meet のインストール(簡単で良くできている感じ)
root@jitsi:~# apt install -y jitsi-meet
SSL証明書のところで一番下の「I want to use my own certificate」ではなく 下から2番目の Let’s encrypt を選択
Let’s Encrypt のインストール
次のスクリプトを使用して、Let’s Encrypt SSL証明書を申請
root@jitsi:~# /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
まず メールアドレスの入力を求められるので入力してエンター
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/jitsi.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/jitsi.example.com/privkey.pem Your cert will expire on 2020-09-06. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le Configuring nginx
Jitsi Meet 調整と機能追加
ユーザー認証機能を追加
prosody は動いている
root@jitsi:~# systemctl status prosody ● prosody.service - LSB: Prosody XMPP Server Loaded: loaded (/etc/init.d/prosody; generated) Active: active (running) since Mon 2020-06-08 16:52:22 JST; 18h ago Docs: man:systemd-sysv-generator(8) Tasks: 1 (limit: 2232) CGroup: /system.slice/prosody.service mq22187 lua5.1 /usr/bin/prosody 6月 08 16:52:22 jitsi systemd[1]: Stopped LSB: Prosody XMPP Server. 6月 08 16:52:22 jitsi systemd[1]: Starting LSB: Prosody XMPP Server... 6月 08 16:52:22 jitsi prosody[22164]: * Starting Prosody XMPP Server prosody 6月 08 16:52:22 jitsi prosody[22164]: ...done. 6月 08 16:52:22 jitsi systemd[1]: Started LSB: Prosody XMPP Server. 6月 08 16:52:22 jitsi prosody[22187]: portmanager: Error binding encrypted port for https: No key present in SSL/TLS 6月 08 16:52:22 jitsi prosody[22187]: portmanager: Error binding encrypted port for https: No key present in SSL/TLS lines 1-15/15 (END)
/etc/prosody/conf.avail/jitsi.example.com.cfg.lua 変更
VirtualHost "jitsi.example.com" -- enabled = false -- Remove this line to enable this host -- authentication = "anonymous" ← 認証方法をパスワードにするためコメントアウト authentication = "internal_plain" ← 認証方法をパスワードに -- Properties below are modified by jitsi-meet-tokens package config
guest.がないとマイク カメラが選択できないらしいので以下追加
VirtualHost "guest.jitsi.example.com" authentication = "anonymous" c2s_require_encryption = false
/etc/jitsi/meet/jitsi.example.com-config.js 変更
var config = {
// Connection
//
hosts: {
// XMPP domain.
domain: 'jitsi.example.com',
anonymousdomain: 'guest.jitsi.example.com', ← 追加
/etc/jitsi/jicofo/sip-communicator.properties 変更
org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.jitsi.example.com
org.jitsi.jicofo.auth.URL=XMPP:jitsi.example.com ← 追加
再起動して設定を有効に
# systemctl restart prosody jicofo jitsi-videobridge2
ユーザーはコマンドで管理するっぽい
ユーザー登録しなくてもクライアントとしてWeb会議に参加できるが、ユーザー登録しておけば会議の主催者としてまた、会議室の作成ができる
root@jitsi:/var/lib/prosody# prosodyctl register user1 jitsi.example.com password root@jitsi:/var/lib/prosody# prosodyctl adduser user1@jitsi.example.com That user already exists
ユーザー一覧
root@jitsi:/var/lib/prosody# ls -l /var/lib/prosody/*/accounts/* -rw-r----- 1 prosody prosody 40 6月 8 16:52 /var/lib/prosody/auth%2ejitsi%2eexample%2ecom/accounts/focus.dat -rw-r----- 1 prosody prosody 40 6月 8 16:52 /var/lib/prosody/auth%2ejitsi%2eexample%2ecom/accounts/jvb.dat -rw-r----- 1 prosody prosody 38 6月 9 13:04 /var/lib/prosody/jitsi%2eexample%2ecom/accounts/user1.dat
初めてアクセスした際の言語を日本語にする
/etc/jitsi/meet/jitsi.example.com-config.js // Default language for the user interface. // defaultLanguage: 'en', defaultLanguage: 'ja',
ログの抑制
ログは /var/log/jitsi jvb.log
とにかくデフォルトのままだとログがでかい。
/etc/jitsi/videobridge/logging.properties 編集
#java.util.logging.ConsoleHandler.level = ALL java.util.logging.ConsoleHandler.level = SEVERE
設定を反映させるために、サービスを再起動
サービス一覧 root@jitsi:/etc/jitsi/videobridge# systemctl list-unit-files --type=service root@jitsi:/etc/jitsi/videobridge# systemctl restart jitsi-videobridge2.service
クライアントPCの負担を減らす (再起動等は不要)
クライアントのCPU負荷が高い様だ ブラウザで動作するWeb会議ソフトのせいか
/etc/jitsi/meet/jitsi.example.com-config.js
// Media
//
// Audio
// Disable measuring of audio levels.
// disableAudioLevels: false,
disableAudioLevels: true, ←追加した
// audioLevelsInterval: 200,
jitsi meet 参加中のクライアント
/etc/jitsi/meet/jitsi.example.com-config.js
disableAudioLevels: true, 追加後 多少CPU負荷減ったかも
jitsi meet 参加中のクライアント
参考: Jitsi Meet 参加してない時のクライアント
クライアントの起動画面
まとめ
CentOS の利用が多いのだが Jitsi Meet は Ubuntu 推奨の様です。が、CentOS の事例も見かけます。インストールしてみての感想はインストールが容易で非常にありがたい!特にインストール作業の流れの中で .sh一発でそのまま Let’s Encrypt のインストール設定が完了した。何度か Let’s Encrypt インストールしたが今回は一番らくちんに感じた。感謝!
Jitsi Meet サーバー起動してビデオ会議やってみた。カメラ設置してリモートと対話できて感動した。時間無制限で無料、なんとも有難い。テレワークで使えそう。
コメント