Jitsi-meet
Jitsi はセキュアなビデオ会議ソリューションを簡単に構築・デプロイすることができるオープンソースプロジェクトのセットです。Jitsi の中心は Jitsi Videobridge と Jitsi Meet で、インターネット上で会議を行うことができます。コミュニティの他のプロジェクトを使うことでオーディオ会議やダイアルイン、録音、サイマルキャストなどの機能を有効化できます。
目次
インストール
Jitsi-meet はいくつかのコンポーネントで設定されています。
jitsi-meet
: Web インターフェイス用のファイル。Web サーバーによって提供されるファイル経由でアクセスされます。jitsi-meet-prosody
: jitsi の韻律プラグインjitsi-meet-turnserver
: スタン/ターンサーバーを実行する設定の例jitsi-videobridge
: すべての参加者にビデオストリームを提供するビデオブリッジングサービスjicofo
: Jitsi カンファレンスの焦点は誰が話すかを決定すること- Prosody: セットアップのベースとなる無料の XMPP サーバー
ユーザー間のインターフェースのグラフィカルな概要は、こちら に示されています。
git バージョン、nightly バージョン、または安定バージョンのいずれかを使用できます。
これらを同時にインストールすることは可能ですが、別のポートと韻律の複数のインスタンスを使用する必要があります (プラグインを仮想ホストごとにスコープすることはできません)
通常バージョンか bin バージョンを選択する必要があります。bin 1 は通常のバージョンと競合します (つまり、nightly と nightly-bin は同時にインストールできませんが、stable と nightly は可能です)
1 つだけを使用するようにしてください:
一部のパッケージでは、設定例が /usr/share/doc
にインストールされます。必ず /etc/pacman.conf
でこの行をコメント化してください:
#NoExtract = usr/share/gtk-doc/html/* usr/share/doc/*
スタンドアロンサーバーを実行するには、これらのオプションパッケージが必要です:
設定
サーバー名が example.com
の場合、jitsi の一般的な選択は meet.example.com
になりますが、自由に選択できます。ただし、セキュリティの観点から、独自のサブドメインで Web アプリをホストすることが強く推奨されます。 選択したサブドメインのエントリでサーバーの DNS レコードを更新する必要があります (上記の例では meet
) 残りの部分では、これが完了していることを前提としています。
また、meet.example.com
ドメインの SSL/TLS 証明書も必要です。無料の証明書を取得する方法については、certbot を参照してください。
以下では、次のプレースホルダーが使用されます:
JITSIFQDN
:jitsi-meet
ドメイン、例:meet.example.com
SECRET_JVB_USER
: ビデオブリッジのパスワードSECRET_FOCUS_USER
: 認証者のパスワード
パスワードは、mktemp -u XXXXXXXX
または pwgen
などの安全な方法で取得する必要があります。必ず別の安全なパスワードを使用してください。
設定パス
パッケージ | 設定パス |
---|---|
Stable | |
jitsi-meetAUR jitsi-meet-binAUR |
/etc/webapps/jitsi-meet
|
jitsi-meet-prosodyAUR jitsi-meet-prosody-binAUR |
/usr/lib/jitsi-meet-prosody
|
jitsi-meet-turnserverAUR jitsi-meet-turnserver-binAUR |
/usr/share/doc/jitsi-meet-turnserver
|
jicofoAUR jicofo-binAUR |
/etc/jicofo
|
jitsi-videobridgeAUR jitsi-videobridge-binAUR |
/etc/jitsi-videobridge
|
Nightly | |
jitsi-meet-nightlyAUR jitsi-meet-nightly-binAUR |
/etc/webapps/jitsi-meet-nightly
|
jitsi-meet-prosody-nightlyAUR jitsi-meet-prosody-nightly-binAUR |
/usr/lib/jitsi-meet-prosody-nightly
|
jitsi-meet-turnserver-nightlyAUR jitsi-meet-turnserver-nightly-binAUR |
/usr/share/doc/jitsi-meet-turnserver-nightly
|
jicofo-nightlyAUR jicofo-nightly-binAUR |
/etc/jicofo-nightly
|
jitsi-videobridge-nightlyAUR jitsi-videobridge-nightly-binAUR |
/etc/jitsi-videobridge-nightly
|
Git | |
jitsi-meet-gitAUR | /etc/webapps/jitsi-meet-git
|
jitsi-meet-prosody-gitAUR | /usr/lib/jitsi-meet-prosody-git
|
jitsi-meet-turnserver-gitAUR | /usr/share/doc/jitsi-meet-turnserver-git
|
jicofo-gitAUR | /etc/jicofo-git
|
jitsi-videobridge-gitAUR | /etc/jitsi-videobridge-git
|
ループバック
jitsi-meet コンポーネントがローカル IP を使用して相互に到達できるようにします。ドメインがサーバーの実際の IP を返さない Cloudflare のようなプロキシの背後にある場合でも機能します。
/etc/hosts
内:
127.0.0.1 JITSIFQDN auth.JITSIFQDN ::1 JITSIFQDN auth.JITSIFQDN
git パッケージの設定
If your server name is example.com
then a common choice for your jitsi will be meet.example.com
. You will need to update DNS record for your server with an entry meet
. The remainder assumes that you have done this.
Also you should have SSL/TLS certificates for your meet.example.com
domain, for example see certbot.
The remaining instructions in bash
to make it clear what needs replacing. Pasting the commands into a bash shell with root permissions should give you a working install.
Replace the domain name with your own:
export JITSIFQDN=meet.example.com
Specify correct path to generated certificates:
export JITSIFQDN_CRT=/etc/letsencrypt/live/meet.example.com/fullchain.pem export JITSIFQDN_KEY=/etc/letsencrypt/live/meet.example.com/privkey.pem
Passwords are needed. We set up some shell variables to hold them for later use. You can replace $(mktemp XXXXXXX)
with your own passwords if you want, but the random strings generated by mktemp
should be fine.
export SECRET1=$(mktemp -u XXXXXXXX) export SECRET2=$(mktemp -u XXXXXXXX) export SECRET3=$(mktemp -u XXXXXXXX)
prosody の設定
prosody は前提条件であり、Jitsi サービス用の構成をそれに追加する必要があります。prosody サーバーをまだセットアップしていない場合は、今すぐ prosody と lua52-sec をインストールしてください。prosody 設定の残りの部分では、prosody がローカルにインストールされていることを前提としています。
パッケージ jitsi-meet-prosodyAUR は、簡単にカスタマイズできる設定を提供します。
# cd /etc/prosody # mkdir conf.d # cp /usr/share/doc/jitsi-meet-prosody/prosody.cfg.lua-jvb.example conf.d/jitsi.cfg.lua
次に、これを末尾に追加します:
/etc/prosody/prosody.cfg.lua
Include "conf.d/*.cfg.lua"
設定をカスタマイズします:
/etc/prosody/conf.d/jitsi.cfg.lua
-- replace all occurences of jitmeet.example.com by JITSIFQDN -- replace all occurences of focusUser by focus -- then add or update those section VirtualHost "JITSIFQDN" ssl = { key = "/etc/prosody/certs/JITSIFQDN.key"; certificate = "/etc/prosody/certs/JITSIFQDN.crt"; } VirtualHost "auth.JITSIFQDN" ssl = { key = "/etc/prosody/certs/auth.JITSIFQDN.key"; certificate = "/etc/prosody/certs/auth.JITSIFQDN.crt"; } authentication = "internal_hashed"
/etc/prosody/conf.d/jitsi.cfg.lua
-- Proxy to jicofo's user JID, so that it does not have to register as a component. Component "focus.JITSIFQDN" "client_proxy" target_address = "focus@auth.JITSIFQDN"
ここで、JITSIFQDN および JITSIFQDN の証明書を生成する必要があります。
certbot を使用する場合は、次のコマンドを使用して証明書をインポートできます:
# prosodyctl --root cert import /etc/letsencrypt/live
自己生成した証明書を使用したい場合は、以下を使用できます:
[prosody]$ prosodyctl cert generate JITSIFQDN [prosody]$ prosodyctl cert generate auth.JITSIFQDN # mv /var/lib/prosody/*.{crt,cnf,key} /etc/prosody/certs/ # trust anchor /etc/prosody/certs/JITSIFQDN.crt # trust anchor /etc/prosody/certs/auth.JITSIFQDN.crt # update-ca-trust
ユーザー jvb と focus を登録します:
# prosodyctl register jvb auth.JITSIFQDN SECRET_JVB_USER # prosodyctl register focus auth.JITSIFQDN SECRET_FOCUS_USER # prosodyctl mod_roster_command subscribe focus.JITSIFQDN focus@auth.JITSIFQDN
次に、prosody.service
を 再起動 (または、インストールしたばかりの場合は 起動/有効化) します。
jitsi-videobridge の設定
jitsi-videobridge の設定:
cat > /etc/jitsi-videobridge/jitsi-videobridge.conf <<=== flags="--host=localhost --domain=${JITSIFQDN} --port=5347 --secret=${SECRET1}" ===
ログや SIP コミュニケータの設定を同じフォルダに保持したい場合、以下のように行うことができます。
cat >> /etc/jitsi-videobridge/jitsi-videobridge.conf <<=== VIDEOBRIDGE_DEBUG_OPTIONS="-Djava.util.logging.config.file=/etc/jitsi-videobridge/logging.properties -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jitsi-videobridge -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc ===
cp /opt/jitsi-videobridge/lib/logging.properties /etc/jitsi-videobridge/logging.properties cat > /etc/jitsi-videobridge/sip-communicator.properties <<=== org.jitsi.videobridge.AUTHORIZED_SOURCE_REGEXP=focus@auth.${JITSIFQDN}/.* org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false org.jitsi.videobridge.TCP_HARVESTER_PORT=4443 ===
jitsi-videobridge
サービスを起動・有効化してください。
jicofo の設定
cat > /etc/jicofo/jicofo.conf <<=== flags="--host=localhost --domain=${JITSIFQDN} --secret=${SECRET2} --user_domain=auth.${JITSIFQDN} --user_name=focus --user_password=${SECRET3}" ===
jicofo
サービスを起動・有効化してください。
jitsi-meet の設定
cp /opt/jitsi-meet/config.js /opt/jitsi-meet/config.js.orig cat > /opt/jitsi-meet/config.js <<=== var domainroot = "${JITSIFQDN}" var config = { hosts: { domain: domainroot, muc: 'conference.'+domainroot, bridge: 'jitsi-videobridge.'+domainroot, focus: 'focus.'+domainroot }, useNicks: false, bosh: '//'+domainroot+'/http-bind', } ===
nginx の設定
こちらは最小限の nginx 設定ですが、これは https://ssl-config.mozilla.org/#server=nginx&version=1.16.1&config=intermediate&openssl=1.1.1f&guideline=5.4 からの推奨 HTTPS 設定と Jitsi-meet ドキュメントで推奨される最小設定を単純にマージしたものです。この設定は十分に動作しますが、自分自身のサーバーに適応させることをお勧めします。
sed -i "/^http.*{/a include /etc/nginx/${JITSIFQDN}.conf;" /etc/nginx/nginx.conf
#WARNING - The config file text uses bash escapes. If copying for hand editing, each '\$' needs to be replaced with '$' # and each '${VARIABLE}' needs to be replaced. cat > /etc/nginx/${JITSIFQDN}.conf <<=== # Redirect http to https server { listen 80; listen [::]:80; server_name call.mechadept.nz; return 301 https://\$host\$request_uri; } # Mozilla intermediate config server { listen 443 ssl http2; listen [::]:443 ssl http2; #ssl_certificate /path/to/signed_cert_plus_intermediates; #ssl_certificate_key /path/to/private_key; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; # curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam # ssl_dhparam /path/to/dhparam; # intermediate configuration ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # HSTS (ngx_http_headers_module is required) (63072000 seconds) add_header Strict-Transport-Security "max-age=63072000" always; #} #Merge mozilla config with jitsi recommended one ssl_certificate /etc/letsencrypt/live/${JITSIFQDN}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/${JITSIFQDN}/privkey.pem; error_page 404 /static/404.html; # Jitsi recommended settings below #server { # listen 80; server_name ${JITSIFQDN}; # set the root root /opt/jitsi-meet; index index.html; location ~ ^/([a-zA-Z0-9=\?]+)\$ { rewrite ^/(.*)\$ / break; } location / { ssi on; } # BOSH location /http-bind { proxy_pass http://localhost:5280/http-bind; proxy_set_header X-Forwarded-For \$remote_addr; proxy_set_header Host \$http_host; } # xmpp websockets location /xmpp-websocket { proxy_pass http://localhost:5280/xmpp-websocket; proxy_http_version 1.1; proxy_set_header Upgrade \$http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host \$host; tcp_nodelay on; } } ===
それから nginx
サービスを再起動してください。
ヒントとテクニック
NAT 経由で実行
以下のポートをサーバーに転送する必要があります:
HTTPS:
- TCP/443
Jitsi Videobridge:
- TCP/4443
- UDP/10000