オープンソースのビデオ会議やチャット・コミュニケーションシステムなどの情報です。
Jitsi Meet (Jitsi)
Jitsi : https://jitsi.org/
Jitsi Meet : https://jitsi.org/jitsi-meet/
Jisi Meet のインストールなどは ここから
Jisti Meet の暗号化について(2020年10月17日現在)
Slack代替えとして有望なオープンソースのメッセージングシステムです。Matrixのクライアント環境として開発されています。
エンドツーエンドの暗号化ができる。
Element: Matrixクライアント https://element.io/
Element(旧名:Riot)のインストール・技術情報: ここから
Matrix : 分散型コミュニケーション(Decenterlized Communication)サーバーシステム https://matrix.org/
Riot: Matrixクライアント https://about.riot.im/
Matrixのインストール・技術情報: ここから
Riotのインストール・技術情報: ここから
Jitsi Meetはオープンソースのビデオ会議システムJitsiのDebian/Ubuntu用のシステム環境です。
Jitsiは、End to End Scryption (暗号化)されたシステムで、操作が容易です。
Jitsi Meet Blog : https://jitsi.org/blog/category/jitsi-meet/
Document : https://github.com/jitsi/jitsi-meet/blob/master/doc/README.md
Jitsi Meet Wiki : https://github.com/jitsi/jitsi-meet/wiki
Jitsi Jicofo(Conference Focus / managing media sessions) : https://github.com/jitsi/jicofo
Prosody (XMPP Communication Server) : https://prosody.im/
日本語での資料
https://rohhie.net/an-open-source-web-conferencing-system-jitsi-server-installation/
参考にしたサイト
インストール環境 Debian 10 (上記資料はUbuntuですが、Debian10でも同じ手順でOKでした)
ドメイン名とそのドメイン名をインストールするサーバーのホスト名(FQDN:fully qualified domain name)と同じに設定する
例えば ホスト名 meet FQDN は meet.example.com
sudo hostnamectl set-hostname meet.example.com
sudo sed -i 's/^127.0.1.1.*$/127.0.1.1 meet.example.com meet/g' /etc/hosts
確認
hostname
hostname -f
ufwコマンドで設定します。
sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw allow in 10000:20000/udp
sudo ufw enable
システムの更新とシャットダウンおよび再起動
sudo apt update
sudo apt upgrade -y && sudo shutdown -r now
Jitsi Meet jitsi-meet_2.0.4548-1 (2020年5月19日)では、jitsi-videobridge2_2.1-197-g38256192-1でJavaはJDK-8を使っているので、openJDK のJRE8 をインストールします。
参考にしたサイト: Debian 10にOpenJDK 8をインストール
https://qiita.com/witchcraze/items/47d44df81f1b152bab8c
https://linuxize.com/post/install-java-on-debian-10/
sudo apt update
sudo apt install apt-transport-https ca-certificates wget dirmngr gnupg software-properties-common
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
sudo apt update
sudo apt install adoptopenjdk-8-hotspot
java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Debian-3deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Debian-3deb10u1, mixed mode, sharing)
sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 自動モード
1 /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java 1081 手動モード
2 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 1
update-alternatives: /usr/bin/java (java) を提供するためにマニュアルモードで /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java を使います
java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.252-b09, mixed mode)
JAVA_HOMEの設定
echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | sudo tee -a /etc/profile
source /etc/profile
sudo apt install -y nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
レポジトリの設定
cd
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
sudo apt update -y
Jitsi Meetのインストール
sudo apt install -y jitsi-meet
インストールの途中でFQDN(meet.example.com)を入力します。
SSL証明書の設定で、デフォルトの「Generate a new self-signed certificate (You will later get a chance to obtain a Let's Encrypt certificate) 」で実行
インストール終了後に、Let's Encrypt SSL証明書を適用させます。
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
途中でLet's Encrypt からの連絡先メールアドレス(自分のアドレスで)を入力
インストール手順: https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker
ポートやUTCはデフォルトで、独自ドメイン名だけ設定したほうが、安定したインストールになるようです。
docker compose の最新版をインストールして docker compose up -d ではワーニングが表示されますが、そのまま実行します。 古いdocker-compose up -d コマンドでもインストールできますが、障害が起こる場合があります。
apache2でのReverseProxyの設定サンプル(Debian12)
<VirtualHost *:8000> DocumentRoot /home/docker/jitsimeet/jitsi-docker-jitsi-meet-aae3756 ServerName meet.xxx.xxx ServerAdmin xxxxx@xxxxx ErrorLog /var/log/apache2/debian1/meet-xxx.error.log CustomLog /var/log/apache2/debian1/meet-xxxx.access.log combined <Directory /home/docker/jitsimeet/jitsi-docker-jitsi-meet-aae3756> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> <IfModule mod_proxy.c> ProxyRequests Off <Proxy *> Require all granted </Proxy> ProxyPass / http://localhost:8000/ ProxyPassReverse / http://localhost:8000/ </IfModule> </VirtualHost>
待機室、ログインパスワードなどは、一度インストール後に、prosody dockerイメージにログインしてprocodyコマンドで実行する方法が、コマンドエラーが少ないように思います。
参考にしたURL:https://library.ahadiani.ca/en/Docker/Jitsi
Docker版のインストールが完了後、.envファイルを修正します。
ENABLE_AUTH=1
ENABLE_GUESTS=1
AUTH_TYPE=internal
その後、prosody にログインしてprosodyctlコマンドを実行します。もしprosodyctlコマンドでエラーが起きた場合は、docker-compose downとdocker-compose up -d を実行して、再度、prosodyctlコマンドを実行してユーザー名とパスワードを登録します。
docker-compose exec prosody /bin/bash prosodyctl --config /config/prosody.cfg.lua register ユーザー名 meet.jitsi パスワード
https://meet.example.com で動作確認
インストール完了した状態は、URLを訪問した人は、だれでも会議が作成できるので、セキュリティ対策として作成者とそのパスワードで制限します。
詳細はここから: https://www.digitalocean.com/community/tutorials/how-to-install-jitsi-me...
※ authentication = "internal_plain" は authentication = "internal_hashed" に変更します。ホストがパスワードを作れるようにするため。
上記の「Step 5 — Locking Conference Creation」を参考にしてください。
sudo nano /etc/prosody/conf.avail/meet.example.com.cfg.lua
編集 /etc/prosody/conf.avail/meet.example.com.cfg.lua
...
authentication = "anonymous"
...
次のように
...
authentication = "internal_hashed"
...
※このauthenticationについてはprosodyのマニュアル(https://prosody.im/doc/authentication)に説明がありますが、Jitsi Meet上での動作についてはまだ不明ですが。
同じファイルの最後に以下を追加
...
VirtualHost "guest.meet.example.com"
authentication = "anonymous"
c2s_require_encryption = false
別のファイルを編集 Open another configuration file at /etc/jitsi/meet/meet.example.com-config.js
sudo nano /etc/jitsi/meet/meet.example.com-config.js
...
// anonymousdomain: 'guest.example.com',
...
変更
...
anonymousdomain: 'guest.meet.example.com',
...
次に編集するファイル /etc/jitsi/jicofo/sip-communicator.properties
sudo nano /etc/jitsi/jicofo/sip-communicator.properties
以下の行を2行目に追加します。
org.jitsi.jicofo.auth.URL=XMPP:meet.example.com
ユーザー名とパスワードを追加
sudo prosodyctl register user meet.example.com password
※もしユーザー名を削除する場合は sudo prosodyctl deluser ユーザー名@meet.example.com
Jitsi Meet 再起動
sudo systemctl restart prosody.service
sudo systemctl restart jicofo.service
sudo systemctl restart jitsi-videobridge2.service
上記の設定は、同様に、次のサイト https://jitsi.github.io/handbook/docs/devops-guide/secure-domain も参考にします。
/etc/jitsi/meet/meet.example.com-config.js の enableWelcomePage: true を false に設定する
// Whether to use a welcome page or not. In case it's false a random room$
// will be joined when no room is specified.$
enableWelcomePage: true,$ <----- false
sudo prosodyctl --help
prosodyctl - Manage a Prosody server
Usage: /usr/bin/prosodyctl COMMAND [OPTIONS]
Where COMMAND may be one of:
例えば、一度登録したユーザーのパスワードを変更する場合は、prosodyctl passwd ユーザー名@JID(URL名) を実行して変更するパスワードを入力します。
Prosodyは認証機能をサポートしています。参考にしたページ: https://prosody.im/doc/authentication
providerの設定で変更可能
例えば、 authentication = "internal_hashed" -- Default
Hashed or Plain ? https://prosody.im/doc/plain_or_hashed
以下のサイトを参考にインストール
https://nerdonthestreet.com/wiki?find=Host+a+Jitsi+Meet+Server
以下のサイトを参考にインストール
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
注意事項:
2023年6月23日現在、Debian12でのJitsiMeetはインストール完了しますが、会議開始後、すぐに再接続するProsodyの設定エラーのような (Can’t connect to meeting - New install of Jitsi Meet)、障害が起きています。
以下のサイトを参考にインストール
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
注意事項:
Docker版のインストールは以下のURLを参考にします。
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker/
ユーザー/パスワードの設定方法 参考にしたページ: https://library.ahadiani.ca/en/Docker/Jitsi
上記Docker版のインストール後に、以下の設定を追加します。
.envファイルの設定
ENABLE_AUTH=1 ENABLE_GUESTS=1 AUTH_TYPE=internal
以下のコマンドでDocker内のProsodyへユーザー名とパスワードを登録します。
docker-compose exec prosody /bin/bash prosodyctl --config /config/prosody.cfg.lua register ユーザー名 meet.jitsi パスワード
Docker版のjitsiMeet を再起動します。
docker-compose down docker-compose up -d
この設定では、最初にJitiMeetに接続した人がホストになるか確認してきます。登録したユーザー名とパスワードを入力して、ホストになり、JitiMeetの会議を作成・オンラインルームを公開することができます。この公開したオンラインルームには、そのURLを知っている人は参加できます。
Q: サイト訪問者がroom作成ページにアクセスするのをブロックするには
出典:2018年11月 https://community.jitsi.org/t/how-to-request-authentication-before-the-meeting-room-is-initialized/15625/5
A: jicofo config で設定して、そのコンポーネント(jicofo)を再スタート sudo systemctl restart jicofo.service
Q: roomから出て、誰かがモデレーターから外れると自動でモデレーター権限を付与できない、という設定は可能でしょうか?
出典:2017年5月 https://community.jitsi.org/t/jitsi-users-users-to-login-before-joining-a-room-prosody/12508/5
A: この設定は現在サポートされていません。モデレーターがroomから出ると、ほかの一人がモデレーターになります。また、prosodyモジュールには、すべての参加者へモデレーター権限を与える、オプション設定があります。たぶん、そのオプションをOFFにすると、できるかもしれません。
Q: モデレーターの権限について知りたい?
出典: https://community.jitsi.org/t/how-to-what-is-a-meeting-moderator/73139
A: モデレーターの権限
A: モデレーターのデフォルトインストール時の設定内容
A: モデレーターのデフォルトインストール(Secure Domain セットアップで)時の設定内容
A: もし、mod_muc_allowners.lua を有効した場合
Q: JitsiMeetの録画をインストールしたい
A: この設定は、Debian10のJitsiMeetサーバーに、録画機能(Jibri)をインストールする手順です。一般的には、JitsiMeetのサーバーとJibriサーバーは別のサーバーにインストールするようですが。
この設定で、Youtubeのライブ配信もできました。
また、XMPPで使うTCPポート 5222, 5223, 5347 をオープンにします。Ubuntu 16.04へのJibriインストールを参考に
上記の設定ではDebia10のJavaがデフォルトは11なのでJitsiMeetのサーバーのインストールではそのままでOKです。Debian10のサーバーにJitsiMeetサーバーをインストールした際のJitsiMeetのソースにJava8関連が入っております。ただし、jibriをインストールする場合は、Javaの8をインストールして、そのJava8を実行させるときに、Java8への絶対パスで実行させる設定を行います。つまり、デフォルトではJava11ですが、Jibriの時だけJava8を使う環境設定になります。
Debian10にJava8をインストール:
Q: RMTPサーバーでストリーミング配信させたい
A: Jibriは録画とストリーミングができ、デフォルトではYoutubeライブ配信でストリーミングする設定になっています。Jibriで、Youtubeではなく、RMTPサーバーでストリーミング配信させる場合は、以下の記事を参考に設定します。
参考資料: Easy way to create a Jitsi cluster based on Debian Buster
Q: 接続ユーザー数とサーバースペックについて
A: JitsiMeetに接続するユーザー数とサーバースペックは、クラウド環境により異なりますが、さくらのクラウド(石狩第1ゾーン、2021年1月21日)の場合
推測ですが、ユーザー数が増えた場合は、CPUコアを増やしたほうが良いと思います。ユーザー接続があると、スレッドを作るようなので、コア数を多くすることで安定した接続が維持できるようです。
さくらのクラウドでは、スレッドを多く使うので、コア数が多いほうがユーザー増加に対応できます。「コア占有プラン」では、2021年2月2日の時点でテスト、それほど、差がありませんでした。
Q: カメラやマイクのないPC(デスクトップや古いノートPC)の場合
Google Chromeでアクセスすると、参加者の映像が表示しない、参加者名だけの黒い画面しか表示しない。どうしたらカメラ映像が表示されるか。
A: PCにマイクやカメラが接続されていない場合は、自動的にカメラ映像もOFFとなり、黒くなります。もし、マイクやカメラがないPCで会議参加者のカメラ表示などを見たい場合は、GoogleChrome設定でカメラや音声を有効にすることで他の参加者の画像が表示されます。
Q: Google Analyticsの設定について
A: Google Analyticsの設定は、以下のページを参考にしました。 ただし、Create a analytics-ga.min.js file in / etc / jitsi / meet / lib folder はミスがあり、/ etc / jitsi / meet / libs が正しいディレクトリ名です。
ファイル名 analytics-ga.min.js ファイルを次のディレクトリに作成 /etc/jitsi/meet/libs
次のページから参照 : https://developers.google.com/analytics/devguides/collection/analyticsjs/
以下のスクリプトを analytics-ga.min.js ファイルに記載します。AnalyticsのIDも記載し保存します。
<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXX-Y', 'auto');
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
/etc/jitsi/meet にある meet.ドメイン名-config.js ファイルに記載されている以下の箇所を設定します。
scriptURLs: [
“libs/analytics-ga.min.js”, // google-analytics
// “https://example.com/my-custom-analytics.js 5”
],
ApacheおよびNginxを再起動
Matrix通信プロトコルは、ユーザーがアプリに関係なく互いに通信できるようにすることを目的としています。分散型システムマトリックスは、HTTP標準に基づいており、個々のクライアントとサーバー間のインターフェイスの詳細です。
2020年
Matrix: Das steckt hinter dem neuen Messenger von Bundeswehr und Behörden
2019年
Whatsapp-Alternative – Frankreich wandert in die Matrix (フランス政府でWhatsappの代替えとして採用)
Matrix通信プロトコルで稼働するメッセージングシステムで、Slackの代替えになります。
Riotの概要: https://about.riot.im/
2020年
2019年
2016年
Open Source und verschlüsselt: Das steckt hinter dem Slack-Rivalen Riot(オープンソースで暗号化....)