Jitsi-meet

提供: ArchWiki
2024年1月7日 (日) 00:27時点におけるKgx (トーク | 投稿記録)による版 (→‎prosody の設定: 翻訳)
ナビゲーションに移動 検索に移動

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/*

スタンドアロンサーバーを実行するには、これらのオプションパッケージが必要です:

設定

ノート: この設定により、誰もが接続できるオープンなサーバーが得られます。理論的根拠については、Jitsi 哲学 を参照してください。認証については ヒントとテクニック を参照してください。

サーバー名が 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 サーバーをまだセットアップしていない場合は、今すぐ prosodylua52-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

参照