「Jitsi-meet」の版間の差分
(→インストール: 情報を更新) |
(→Matrix ルームについてヘルプを求める: 翻訳を修正) |
||
(同じ利用者による、間の13版が非表示) | |||
45行目: | 45行目: | ||
== 設定 == |
== 設定 == |
||
+ | {{Note|この設定により、誰もが接続できるオープンなサーバーが得られます。理論的根拠については、[https://jitsi.org/blog/security/ Jitsi 哲学] を参照してください。認証については [[Jitsi-meet#ヒントとテクニック|ヒントとテクニック]] を参照してください。}} |
||
− | === git パッケージの設定 === |
||
+ | サーバー名が {{ic|example.com}} の場合、jitsi の一般的な選択は {{ic|meet.example.com}} になりますが、自由に選択できます。ただし、セキュリティの観点から、独自のサブドメインで Web アプリをホストすることが強く推奨されます。 選択したサブドメインのエントリでサーバーの DNS レコードを更新する必要があります (上記の例では {{ic|meet}}) 残りの部分では、これが完了していることを前提としています。 |
||
− | If your server name is {{ic|example.com}} then a common choice for your jitsi will be {{ic|meet.example.com}}. You will need to update DNS record for your server with an entry {{ic|meet}}. The remainder assumes that you have done this. |
||
+ | また、{{ic|meet.example.com}} ドメインの SSL/TLS 証明書も必要です。無料の証明書を取得する方法については、[[certbot]] を参照してください。 |
||
− | Also you should have SSL/TLS certificates for your {{ic|meet.example.com}} domain, for example see [[certbot]]. |
||
+ | 以下では、次のプレースホルダーが使用されます: |
||
− | The remaining instructions in {{ic|bash}} to make it clear what needs replacing. Pasting the commands into a bash shell with root permissions should give you a working install. |
||
+ | * {{ic|JITSIFQDN}}: {{ic|jitsi-meet}} ドメイン、例: {{ic|meet.example.com}} |
||
− | Replace the domain name with your own: |
||
+ | * {{ic|SECRET_JVB_USER}}: ビデオブリッジのパスワード |
||
+ | * {{ic|SECRET_FOCUS_USER}}: 認証者のパスワード |
||
+ | パスワードは、{{ic|mktemp -u XXXXXXXX}} または {{ic|pwgen}} などの安全な方法で取得する必要があります。'''必ず別の安全なパスワードを使用してください。''' |
||
− | export JITSIFQDN=meet.example.com |
||
+ | === 設定パス === |
||
− | Specify correct path to generated certificates: |
||
+ | {| class="wikitable" |
||
− | export JITSIFQDN_CRT=/etc/letsencrypt/live/meet.example.com/fullchain.pem |
||
+ | |- |
||
− | export JITSIFQDN_KEY=/etc/letsencrypt/live/meet.example.com/privkey.pem |
||
+ | ! パッケージ |
||
+ | ! 設定パス |
||
+ | |- |
||
+ | | colspan="2" {{C|'''Stable'''}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet}}<br/>{{AUR|jitsi-meet-bin}} |
||
+ | | {{ic|/etc/webapps/jitsi-meet}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet-prosody}}<br/>{{AUR|jitsi-meet-prosody-bin}} |
||
+ | | {{ic|/usr/lib/jitsi-meet-prosody}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet-turnserver}}<br/>{{AUR|jitsi-meet-turnserver-bin}} |
||
+ | | {{ic|/usr/share/doc/jitsi-meet-turnserver}} |
||
+ | |- |
||
+ | | {{AUR|jicofo}}<br/>{{AUR|jicofo-bin}} |
||
+ | | {{ic|/etc/jicofo}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-videobridge}}<br/>{{AUR|jitsi-videobridge-bin}} |
||
+ | | {{ic|/etc/jitsi-videobridge}} |
||
+ | |- |
||
+ | | colspan="2" {{C|'''Nightly'''}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet-nightly}}<br/>{{AUR|jitsi-meet-nightly-bin}} |
||
+ | | {{ic|/etc/webapps/jitsi-meet-nightly}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet-prosody-nightly}}<br/>{{AUR|jitsi-meet-prosody-nightly-bin}} |
||
+ | | {{ic|/usr/lib/jitsi-meet-prosody-nightly}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet-turnserver-nightly}}<br/>{{AUR|jitsi-meet-turnserver-nightly-bin}} |
||
+ | | {{ic|/usr/share/doc/jitsi-meet-turnserver-nightly}} |
||
+ | |- |
||
+ | | {{AUR|jicofo-nightly}}<br/>{{AUR|jicofo-nightly-bin}} |
||
+ | | {{ic|/etc/jicofo-nightly}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-videobridge-nightly}}<br/>{{AUR|jitsi-videobridge-nightly-bin}} |
||
+ | | {{ic|/etc/jitsi-videobridge-nightly}} |
||
+ | |- |
||
+ | | colspan="2" {{C|'''Git'''}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet-git}} |
||
+ | | {{ic|/etc/webapps/jitsi-meet-git}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet-prosody-git}} |
||
+ | | {{ic|/usr/lib/jitsi-meet-prosody-git}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-meet-turnserver-git}} |
||
+ | | {{ic|/usr/share/doc/jitsi-meet-turnserver-git}} |
||
+ | |- |
||
+ | | {{AUR|jicofo-git}} |
||
+ | | {{ic|/etc/jicofo-git}} |
||
+ | |- |
||
+ | | {{AUR|jitsi-videobridge-git}} |
||
+ | | {{ic|/etc/jitsi-videobridge-git}} |
||
+ | |} |
||
+ | === ループバック === |
||
− | Passwords are needed. We set up some shell variables to hold them for later use. You can replace {{ic|$(mktemp XXXXXXX)}} with your own passwords if you want, but the random strings generated by {{ic|mktemp}} should be fine. |
||
+ | jitsi-meet コンポーネントがローカル IP を使用して相互に到達できるようにします。ドメインがサーバーの実際の IP を返さない Cloudflare のようなプロキシの背後にある場合でも機能します。 |
||
− | export SECRET1=$(mktemp -u XXXXXXXX) |
||
− | export SECRET2=$(mktemp -u XXXXXXXX) |
||
− | export SECRET3=$(mktemp -u XXXXXXXX) |
||
+ | {{ic|/etc/hosts}} 内: |
||
− | ==== prosody の設定 ==== |
||
+ | {{bc|1= |
||
− | {{Pkg|prosody}} is a prerequisite and you will need to add a configuration to it for your Jitsi services. If you do not already have a prosody server set up, install {{Pkg|prosody}} and {{Pkg|lua52-sec}} now. The rest of the prosody configuration assumes you have a local install of prosody. |
||
+ | 127.0.0.1 '''JITSIFQDN''' auth.'''JITSIFQDN''' |
||
+ | ::1 '''JITSIFQDN''' auth.'''JITSIFQDN''' |
||
+ | }} |
||
+ | === prosody の設定 === |
||
− | First make sure there is a subdirectory to hold custom configurations and that prosody loads it: |
||
+ | {{Pkg|prosody}} は前提条件であり、Jitsi サービス用の構成をそれに追加する必要があります。prosody サーバーをまだセットアップしていない場合は、今すぐ {{Pkg|prosody}} と {{Pkg|lua52-sec}} をインストールしてください。prosody 設定の残りの部分では、prosody がローカルにインストールされていることを前提としています。 |
||
− | mkdir -p /etc/prosody/conf.d |
||
− | cat >> /etc/prosody/prosody.cfg.lua <<=== |
||
− | Include "conf.d/*.cfg.lua" |
||
− | === |
||
+ | パッケージ {{AUR|jitsi-meet-prosody}} は、簡単にカスタマイズできる設定を提供します。 |
||
− | Create the prosody config file for your domain: |
||
+ | {{bc|<nowiki> |
||
− | cat > /etc/prosody/conf.d/$JITSIFQDN.cfg.lua <<=== |
||
+ | # cd /etc/prosody |
||
− | VirtualHost "${JITSIFQDN}" |
||
+ | # mkdir conf.d |
||
− | authentication = "anonymous" |
||
+ | # cp /usr/share/doc/jitsi-meet-prosody/prosody.cfg.lua-jvb.example conf.d/jitsi.cfg.lua |
||
− | ssl = { |
||
+ | </nowiki>}} |
||
− | key = "/var/lib/prosody/${JITSIFQDN}.key"; |
||
− | certificate = "/var/lib/prosody/${JITSIFQDN}.crt"; |
||
− | } |
||
− | modules_enabled = { |
||
− | "bosh"; |
||
− | "pubsub"; |
||
− | } |
||
− | c2s_require_encryption = false |
||
− | |||
− | VirtualHost "auth.${JITSIFQDN}" |
||
− | ssl = { |
||
− | key = "/var/lib/prosody/auth.${JITSIFQDN}.key"; |
||
− | certificate = "/var/lib/prosody/auth.${JITSIFQDN}.crt"; |
||
− | } |
||
− | authentication = "internal_plain" |
||
− | admins = { "focus@auth.${JITSIFQDN}" } |
||
− | |||
− | Component "conference.${JITSIFQDN}" "muc" |
||
− | |||
− | Component "jitsi-videobridge.${JITSIFQDN}" |
||
− | component_secret = "${SECRET1}" |
||
− | |||
− | Component "focus.${JITSIFQDN}" |
||
− | component_secret = "${SECRET2}" |
||
− | === |
||
+ | 次に、これを末尾に追加します: |
||
− | Generate the certificates that prosody needs. This is interactive: |
||
+ | {{hc|/etc/prosody/prosody.cfg.lua|2= |
||
− | prosodyctl cert generate $JITSIFQDN |
||
+ | Include "conf.d/*.cfg.lua" |
||
+ | }} |
||
+ | 設定をカスタマイズします: |
||
− | prosodyctl cert generate auth.$JITSIFQDN |
||
+ | {{hc|/etc/prosody/conf.d/jitsi.cfg.lua|2= |
||
− | Register the focus user: |
||
+ | -- replace all occurences of '''jitmeet.example.com''' by '''JITSIFQDN''' |
||
− | |||
+ | -- replace all occurences of '''focusUser''' by '''focus''' |
||
− | prosodyctl register focus auth.$JITSIFQDN $SECRET3 |
||
+ | -- then add or update those section |
||
+ | VirtualHost "'''JITSIFQDN'''" |
||
− | Trust the certificate: |
||
+ | ssl = { |
||
− | |||
− | + | key = "/etc/prosody/certs/'''JITSIFQDN'''.key"; |
|
+ | certificate = "/etc/prosody/certs/'''JITSIFQDN'''.crt"; |
||
+ | } |
||
+ | VirtualHost "auth.'''JITSIFQDN'''" |
||
− | {{ic|prosody}} サービスを[[再起動]]してください。 |
||
+ | ssl = { |
||
+ | key = "/etc/prosody/certs/auth.'''JITSIFQDN'''.key"; |
||
+ | certificate = "/etc/prosody/certs/auth.'''JITSIFQDN'''.crt"; |
||
+ | } |
||
+ | authentication = "internal_hashed" |
||
+ | }} |
||
+ | {{hc|/etc/prosody/conf.d/jitsi.cfg.lua|2= |
||
− | ==== jitsi-videobridge の設定 ==== |
||
+ | -- 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''' の証明書を生成する必要があります。 |
||
− | jitsi-videobridge の設定: |
||
+ | certbot を使用する場合は、次のコマンドを使用して証明書をインポートできます: |
||
− | cat > /etc/jitsi-videobridge/jitsi-videobridge.conf <<=== |
||
− | flags="--host=localhost --domain=${JITSIFQDN} --port=5347 --secret=${SECRET1}" |
||
− | === |
||
+ | # prosodyctl --root cert import /etc/letsencrypt/live |
||
− | ログや 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 |
||
− | === |
||
+ | {{bc|1= |
||
− | cp /opt/jitsi-videobridge/lib/logging.properties /etc/jitsi-videobridge/logging.properties |
||
+ | [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 を登録します: |
||
+ | {{bc|1= |
||
− | cat > /etc/jitsi-videobridge/sip-communicator.properties <<=== |
||
+ | # prosodyctl register jvb auth.'''JITSIFQDN''' '''SECRET_JVB_USER''' |
||
− | org.jitsi.videobridge.AUTHORIZED_SOURCE_REGEXP=focus@auth.${JITSIFQDN}/.* |
||
+ | # prosodyctl register focus auth.'''JITSIFQDN''' '''SECRET_FOCUS_USER''' |
||
− | org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false |
||
+ | # prosodyctl mod_roster_command subscribe focus.'''JITSIFQDN''' focus@auth.'''JITSIFQDN''' |
||
− | org.jitsi.videobridge.TCP_HARVESTER_PORT=4443 |
||
+ | }} |
||
− | === |
||
− | {{ic| |
+ | 次に、{{ic|prosody.service}} を [[再起動]] (または、インストールしたばかりの場合は [[起動/有効化]]) します。 |
− | + | === jitsi-videobridge の設定 === |
|
+ | jitsi-videobridge の設定。'''nightly''' および '''git''' バージョンの場合は、'''-nightly''' または '''-git''' を '''/etc/jitsi-videobridge''' に追加します。 |
||
− | cat > /etc/jicofo/jicofo.conf <<=== |
||
+ | |||
− | flags="--host=localhost --domain=${JITSIFQDN} --secret=${SECRET2} --user_domain=auth.${JITSIFQDN} --user_name=focus --user_password=${SECRET3}" |
||
+ | MUC_NICKNAME の場合は、'''uuidgen''' コマンドを使用します。 |
||
− | === |
||
+ | |||
+ | {{hc|/etc/jitsi-videobridge/sip-communicator.properties|2= |
||
+ | org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.'''JITSIFQDN''' |
||
+ | org.jitsi.videobridge.xmpp.user.shard.PASSWORD='''SECRET_JVB_USER''' |
||
+ | org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.'''JITSIFQDN''' |
||
+ | org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME='''UUIDGEN_RESULT''' |
||
+ | }} |
||
+ | |||
+ | {{ic|jitsi-videobridge.service}} を [[起動/有効化]] してください。 |
||
+ | |||
+ | === jicofo の設定 === |
||
+ | |||
+ | jicofo の設定。nightly および git バージョンの場合は、/etc/jitsi-videobridge に -nightly または -git を追加します。 |
||
+ | |||
+ | {{hc|/etc/jicofo/jicofo.conf|2= |
||
+ | jicofo { |
||
+ | xmpp: { |
||
+ | client: { |
||
+ | client-proxy: "focus.'''JITSIFQDN'''" |
||
+ | xmpp-domain: "'''JITSIFQDN'''" |
||
+ | domain: "auth.'''JITSIFQDN'''" |
||
+ | username: "focus" |
||
+ | password: "'''SECRET_FOCUS_USER'''" |
||
+ | conference-muc-jid = conference.'''JITSIFQDN''' |
||
+ | } |
||
+ | trusted-domains: [ "recorder.'''JITSIFQDN'''" ] |
||
+ | } |
||
+ | bridge: { |
||
+ | brewery-jid: "JvbBrewery@internal.auth.'''JITSIFQDN'''" |
||
+ | } |
||
+ | } |
||
+ | }} |
||
{{ic|jicofo}} サービスを[[起動|起動・有効化]]してください。 |
{{ic|jicofo}} サービスを[[起動|起動・有効化]]してください。 |
||
− | + | === jitsi-meet の設定 === |
|
+ | jitsi-meet Web アプリの設定。'''nightly''' および '''git''' バージョンの場合は、'''-nightly''' または '''-git''' を '''/etc/jitsi-videobridge''' に追加します。 |
||
− | 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', |
||
− | } |
||
− | === |
||
+ | {{hc|/etc/webapps/jitsi-meet/config.js|2= |
||
− | ==== nginx の設定 ==== |
||
+ | var config = { |
||
+ | hosts: { |
||
+ | domain: ''''JITSIFQDN'''', |
||
+ | // ... |
||
+ | muc: 'conference.'''JITSIFQDN'''' |
||
+ | }, |
||
+ | bosh: '//'''JITSIFQDN'''/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 ドキュメントで推奨される最小設定を単純にマージしたものです。この設定は十分に動作しますが、自分自身のサーバーに適応させることをお勧めします。 |
||
+ | [[nginx#TLS]] の説明に従って、TLS を使用して [[nginx]] を設定します。 |
||
− | 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; |
||
− | } |
||
− | } |
||
− | === |
||
+ | {{bc|1= |
||
− | それから {{ic|nginx}} サービスを[[再起動]]してください。 |
||
+ | # cd /etc/nginx |
||
+ | # mkdir sites |
||
+ | # cp /usr/share/doc/jitsi-meet/jitsi-meet.example sites/jitsi.conf |
||
+ | }} |
||
+ | |||
+ | 次に、それをメイン設定に含めます: |
||
+ | {{hc|/etc/nginx/nginx.conf|2= |
||
+ | http { |
||
+ | // ... |
||
+ | // this should be placed near to the close bracket of the http block |
||
+ | include sites/*.conf; |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | 次に、jitsi 設定を自分の設定に変更します: |
||
+ | {{hc|/etc/nginx/sites/jitsi.conf|2= |
||
+ | server { |
||
+ | # ... |
||
+ | server_name '''JITSIFQDN'''; |
||
+ | |||
+ | # ... |
||
+ | # use prosody path directly |
||
+ | ssl_certificate /etc/prosody/certs/'''JITSIFQDN'''.crt; |
||
+ | ssl_certificate_key /etc/prosody/certs/'''JITSIFQDN'''.key; |
||
+ | # or use letencrypt path |
||
+ | ssl_certificate /etc/letsencrypt/live/'''JITSIFQDN'''/fullchain.pem; |
||
+ | ssl_certificate_key /etc/letsencrypt/live/'''JITSIFQDN'''/privkey.pem; |
||
+ | |||
+ | # set the config path |
||
+ | # replace alias /etc/jitsi/meet/jitmeet.example.com-config.js by |
||
+ | location = /config.js { |
||
+ | alias /etc/webapps/jitsi-meet/config.js; |
||
+ | } |
||
+ | # ... |
||
+ | location ~ ^/([^/?&:'"]+)/config.js$ |
||
+ | { |
||
+ | set $subdomain "$1."; |
||
+ | set $subdir "$1/"; |
||
+ | alias /etc/webapps/jitsi-meet/config.js; |
||
+ | } |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | それから {{ic|nginx.service}} を [[再起動]] してください。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
275行目: | 323行目: | ||
*TCP/4443 |
*TCP/4443 |
||
*UDP/10000 |
*UDP/10000 |
||
+ | |||
+ | === SIP への Jitsi ゲートウェイ (Jigasi) === |
||
+ | |||
+ | Jitsi-meet ミーティングを従来の SIP とインターフェースするには、{{AUR|jigasi}} または {{AUR|jigasi-git}} をインストールし、prosody 設定を編集します: |
||
+ | |||
+ | {{hc|/etc/prosody/prosody.cfg.lua|2= |
||
+ | Component "callcontrol.'''JITSIFQDN'''" |
||
+ | component_secret = "'''SECRET_JIGASI_USER'''" |
||
+ | }} |
||
+ | |||
+ | SIP アクセス認証情報を入力します ({{ic|SIPUSER}} {{ic|SIPSERVER}} および {{ic|SIPPASSWORD}}) |
||
+ | |||
+ | {{hc|/opt/jigasi/jigasi-home/sip-communicator.properties|2= |
||
+ | net.java.sip.communicator.impl.protocol.sip.acc1403273890647.ACCOUNT_UID=SIP\:"SIPUSER@SIPSERVER" |
||
+ | net.java.sip.communicator.impl.protocol.sip.acc1403273890647.PASSWORD=SIPPASSWORD |
||
+ | net.java.sip.communicator.impl.protocol.sip.acc1403273890647.SERVER_ADDRESS=SIPSERVER |
||
+ | net.java.sip.communicator.impl.protocol.sip.acc1403273890647.USER_ID=SIPUSER |
||
+ | }} |
||
+ | |||
+ | SIP が接続しているデフォルトのルーム名を変更するには、上記の設定の {{ic|org.jitsi.jigasi.DEFAULT_JVB_ROOM_NAME}} を変更します。 |
||
+ | |||
+ | 次に、jigasi 設定を編集します |
||
+ | |||
+ | {{hc|/etc/jitsi/jigasi/config|2= |
||
+ | JIGASI_HOST=callcontrol.'''JITSIFQDN''' |
||
+ | JIGASI_HOSTNAME=jitsi-videobridge.'''JITSIFQDN''' |
||
+ | JIGASI_SECRET='''SECRET_JIGASI_USER''' |
||
+ | JIGASI_OPTS="" |
||
+ | LOGFILE=/var/log/jitsi/jigasi.log |
||
+ | }} |
||
+ | |||
+ | {{hc|/opt/jitsi-meet/config.js|2= |
||
+ | hosts.call_control = 'callcontrol.meet.jit.si' |
||
+ | }} |
||
+ | |||
+ | 次に、{{ic|jigasi.service}} を [[起動/有効化]] します。 |
||
+ | |||
+ | === ルーム作成時のアクセス制限 === |
||
+ | |||
+ | ビデオ会議室の '''作成''' を認証されたユーザーに制限するには、次の手順を実行します。会議への参加者はまだ認証されていないことに注意してください。 |
||
+ | |||
+ | prosody の jitsi ドメインに認証を追加し、ゲスト用の新しい仮想ホストを追加します: |
||
+ | |||
+ | {{hc|/etc/prosody/conf.d/jitsi.cfg.lua|2= |
||
+ | -- change authentification of your domain |
||
+ | VirtualHost "'''JITSIFQDN'''" |
||
+ | authentification = "internal_plain" |
||
+ | |||
+ | -- add guest virtual host to allow anonymous user to join your room |
||
+ | VirtualHost "guest.'''JITSIFQDN'''" |
||
+ | authentication = "jitsi-anonymous" |
||
+ | c2s_require_encryption = false |
||
+ | modules_enabled = { |
||
+ | -- copy the content of the modules_enabled |
||
+ | -- of the VirtualHost "'''JITSIFQDN'''" |
||
+ | -- remove only the module "muc_lobby_rooms" of the list |
||
+ | -- example: |
||
+ | "bosh"; |
||
+ | "pubsub"; |
||
+ | "ping"; -- Enable mod_ping |
||
+ | "speakerstats"; |
||
+ | "external_services"; |
||
+ | "conference_duration"; |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | {{ic|jitsi-meet}} の設定ファイルを編集します。 |
||
+ | |||
+ | {{hc|/etc/webapps/jitsi-meet/config.js|2= |
||
+ | var config = { |
||
+ | host: { |
||
+ | // anonymous users need to use a dedicated muc without authentication |
||
+ | anonymousdomain: 'guest.'''JITSIFQDN'''', |
||
+ | }, |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | {{ic|jicofo}} の認証を追加します: |
||
+ | |||
+ | {{hc|/etc/jicofo/jicofo.conf|2= |
||
+ | jicofo { |
||
+ | authentication { |
||
+ | enabled = true |
||
+ | type = XMPP |
||
+ | login-url = '''JITSIFQDN''' |
||
+ | enable-auto-login = true |
||
+ | } |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | 次に、目的のユーザーを作成します。 |
||
+ | |||
+ | {{bc|1= |
||
+ | # prosodyctl register <username> '''JITSIFQDN''' <password> |
||
+ | }} |
||
+ | |||
+ | {{ic|jigasi}} を使用している場合のみ (知らない場合は編集しません)、匿名認証を許可しないように SIP インターフェースを編集します: |
||
+ | |||
+ | {{hc|/etc/jitsi/jigasi/sip-communicator.properties|2= |
||
+ | org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false |
||
+ | }} |
||
+ | |||
+ | これらの手順は [https://github.com/jitsi/jicofo#secure-domain このガイド] から引用されています。 |
||
+ | |||
+ | === JWTトークンによるアクセス制限 === |
||
+ | |||
+ | ビデオ会議室の '''作成''' を JWT トークン (認証用の外部サービス) で認証するユーザーに制限するには、次の手順を実行します。会議への参加者はまだ認証されていないことに注意してください。 |
||
+ | |||
+ | これらの依存関係をインストールします: |
||
+ | |||
+ | * {{AUR|lua52-base64}} |
||
+ | * {{Pkg|lua52-basexx}} |
||
+ | * {{AUR|lua52-cjson}} |
||
+ | * {{AUR|lua52-jwtjitsi}} |
||
+ | * {{Pkg|lua52-luaossl}} |
||
+ | |||
+ | prosody の jitsi ドメインに認証を追加し、ゲスト用の新しい仮想ホストを追加します: |
||
+ | |||
+ | {{hc|/etc/prosody/conf.d/jitsi.cfg.lua|2= |
||
+ | -- change authentification of your domain |
||
+ | VirtualHost "'''JITSIFQDN'''" |
||
+ | authentification = "token" |
||
+ | app_id = "APP_ID" |
||
+ | app_secret = "APP_SECRET" |
||
+ | allow_empty_token = false |
||
+ | modules_enabled = { |
||
+ | -- keep existing modules and add |
||
+ | "presence_identity"; |
||
+ | } |
||
+ | c2s_require_encryption = false |
||
+ | |||
+ | -- add guest virtual host to allow anonymous user to join your room |
||
+ | VirtualHost "guest.'''JITSIFQDN'''" |
||
+ | authentication = "jitsi-anonymous" |
||
+ | c2s_require_encryption = false |
||
+ | modules_enabled = { |
||
+ | -- copy the content of the modules_enabled |
||
+ | -- of the VirtualHost "'''JITSIFQDN'''" |
||
+ | -- remove only the module "muc_lobby_rooms" of the list |
||
+ | -- example: |
||
+ | "bosh"; |
||
+ | "pubsub"; |
||
+ | "ping"; -- Enable mod_ping |
||
+ | "speakerstats"; |
||
+ | "external_services"; |
||
+ | "conference_duration"; |
||
+ | "presence_identity"; |
||
+ | } |
||
+ | |||
+ | Component "conference.'''JITSIFQDN'''" "muc" |
||
+ | modules_enabled = { |
||
+ | -- add this to the modules_enabled |
||
+ | "token_verification"; |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | {{ic|jitsi-meet}} の設定ファイルを編集します: |
||
+ | |||
+ | {{hc|/etc/webapps/jitsi-meet/config.js|2= |
||
+ | var config = { |
||
+ | host: { |
||
+ | // anonymous users need to use a dedicated muc without authentication |
||
+ | anonymousdomain: 'guest.'''JITSIFQDN'''', |
||
+ | }, |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | {{ic|jicofo}} の認証を追加します: |
||
+ | |||
+ | {{hc|/etc/jicofo/jicofo.conf|2= |
||
+ | jicofo { |
||
+ | authentication { |
||
+ | enabled = true |
||
+ | type = JWT |
||
+ | login-url = '''JITSIFQDN''' |
||
+ | enable-auto-login = true |
||
+ | } |
||
+ | } |
||
+ | }} |
||
+ | |||
+ | 次に、{{ic|prosody.service}} と {{ic|jicofo.service}} を [[再起動]] (または、インストールしたばかりの場合は [[起動/有効化]]) します。 |
||
+ | |||
+ | これで、JWT トークンを使用してユーザーを認証できるようになりました。 |
||
+ | |||
+ | 仕様はここで読むことができます: [https://github.com/jitsi/lib-jitsi-meet/blob/master/doc/tokens.md Jitsi Meet Tokens] |
||
+ | |||
+ | ここでは、nodejs での簡単な例を示します: |
||
+ | |||
+ | {{bc|<nowiki> |
||
+ | const jwt = require('jsonwebtoken') |
||
+ | const crypto = require('crypto'); |
||
+ | const words = require('random-words') |
||
+ | const yourDomain = "JITSIFQDN" |
||
+ | const appId = "APP_ID" |
||
+ | const appSecret = "APP_SECRET" |
||
+ | const userName = "YOUR_USERNAME" |
||
+ | const userEmail = "YOUR_EMAIL" |
||
+ | |||
+ | function getBody(domain, appId, name, email, room) { |
||
+ | const md5Email = crypto.createHash('md5').update(email).digest("hex"); |
||
+ | const id = crypto.createHash('sha1').update(`${name}:${email}`).digest("hex") |
||
+ | |||
+ | return { |
||
+ | context: { |
||
+ | user: { |
||
+ | avatar: `https:/gravatar.com/avatar/${md5Email}`, |
||
+ | name, |
||
+ | email, |
||
+ | id, |
||
+ | }, |
||
+ | group: 'users' |
||
+ | }, |
||
+ | "aud": "jitsi", |
||
+ | "iss": appId, |
||
+ | "sub": domain, |
||
+ | room, |
||
+ | } |
||
+ | } |
||
+ | |||
+ | const room = process.argv[2] || words({exactly: 3, join: '-'}) |
||
+ | |||
+ | const data = getBody( |
||
+ | yourDomain, |
||
+ | appId, |
||
+ | userName, |
||
+ | userEmail, |
||
+ | room, |
||
+ | ) |
||
+ | |||
+ | const options = { |
||
+ | algorithm: 'HS256', |
||
+ | expiresIn: '2h', |
||
+ | } |
||
+ | |||
+ | const jwtToken = jwt.sign(data, appSecret, options) |
||
+ | |||
+ | console.log(`https://${yourDomain}/${room}?jwt=${jwtToken}`) |
||
+ | </nowiki>}} |
||
+ | |||
+ | === ログの評価 === |
||
+ | |||
+ | パブリックに利用可能な IP アドレスの場合、上記の設定はパブリックビデオ会議サーバーにつながります。サーバーの使用を監視するには、[[journalctl]] を使用して、少なくとも漠然とした使用法を把握できます: |
||
+ | |||
+ | # journalctl --unit=jicofo.service --grep="created new conference" --output cat |
||
+ | |||
+ | 新しいチャットルーム作成のすべてのイベントを表示し、 |
||
+ | |||
+ | # journalctl --unit=jicofo.service --grep="Stopped" --output cat |
||
+ | |||
+ | チャットルームの破壊に関するすべてのイベントを表示します。 |
||
+ | |||
+ | 'member' を grep すると、参加者に関する (匿名の) 情報も得られます。 |
||
+ | |||
+ | === 独自の STUN サーバーを実行する === |
||
+ | |||
+ | デフォルトでは、Jitsi Meet は jitsi.org の STUN サーバーを使用します。{{Pkg|coturn}} を使用し、jitsi-meet の設定で設定することで、独自の STUN サーバーを簡単に実行できます。 |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | === ログを確認してください === |
||
+ | |||
+ | すべてのサービスユニット (つまり、{{ic|prosody.service}}、{{ic|jitsi-videobridge.service}}、{{ic|jicofo.service}}) を [[停止]] し、一度に 1 つずつ [[起動]] して各サービスユニットの [[systemd/ジャーナル|ジャーナル]] 内の新しいメッセージをたどって、何か問題があるかどうかを確認します。ほとんどの問題は、パスワードまたは設定の問題が原因です。 |
||
+ | |||
+ | まったく異なるバージョンからアップグレードした場合、または構成に問題があった場合は、他のバージョンを開始してください。どの部分が間違っているかを探すよりも早いでしょう。 |
||
+ | |||
+ | === Matrix のルームでヘルプを求める === |
||
+ | |||
+ | matrix ルームに参加して、そこで助けを求めることができます: |
||
+ | |||
+ | * [https://matrix.to/#/#jitsimeet:matrix.org?via=matrix.org Jitsi Meet help and testing] |
||
== 参照 == |
== 参照 == |
||
+ | * [https://jitsi.org/ プロジェクトのホームページ] |
||
− | *[https://haste.rys.pw/uzisosiram.bash Notes by C0rn3j] |
||
+ | * [https://community.jitsi.org/ ヘルプコミュニティ] |
||
− | *[https://gitlab.com/C0rn3j/configs/-/tree/master/ansible/serverPlaybooks/roles/meet/files Configurations used in the article] |
||
+ | * [https://github.com/jitsi/jitsi-meet/blob/master/doc/README.md 公式ドキュメント] |
||
+ | * [https://tutorials.celogeek.com/books/jitsi-meet-on-arch-linux Arch Linux チュートリアルの詳細] |
2024年1月10日 (水) 18:45時点における最新版
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
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 の設定。nightly および git バージョンの場合は、-nightly または -git を /etc/jitsi-videobridge に追加します。
MUC_NICKNAME の場合は、uuidgen コマンドを使用します。
/etc/jitsi-videobridge/sip-communicator.properties
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.JITSIFQDN org.jitsi.videobridge.xmpp.user.shard.PASSWORD=SECRET_JVB_USER org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.JITSIFQDN org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=UUIDGEN_RESULT
jitsi-videobridge.service
を 起動/有効化 してください。
jicofo の設定
jicofo の設定。nightly および git バージョンの場合は、/etc/jitsi-videobridge に -nightly または -git を追加します。
/etc/jicofo/jicofo.conf
jicofo { xmpp: { client: { client-proxy: "focus.JITSIFQDN" xmpp-domain: "JITSIFQDN" domain: "auth.JITSIFQDN" username: "focus" password: "SECRET_FOCUS_USER" conference-muc-jid = conference.JITSIFQDN } trusted-domains: [ "recorder.JITSIFQDN" ] } bridge: { brewery-jid: "JvbBrewery@internal.auth.JITSIFQDN" } }
jicofo
サービスを起動・有効化してください。
jitsi-meet の設定
jitsi-meet Web アプリの設定。nightly および git バージョンの場合は、-nightly または -git を /etc/jitsi-videobridge に追加します。
/etc/webapps/jitsi-meet/config.js
var config = { hosts: { domain: 'JITSIFQDN', // ... muc: 'conference.JITSIFQDN' }, bosh: '//JITSIFQDN/http-bind', // ... }
nginx の設定
nginx#TLS の説明に従って、TLS を使用して nginx を設定します。
提供された例をコピーしてみましょう。
# cd /etc/nginx # mkdir sites # cp /usr/share/doc/jitsi-meet/jitsi-meet.example sites/jitsi.conf
次に、それをメイン設定に含めます:
/etc/nginx/nginx.conf
http { // ... // this should be placed near to the close bracket of the http block include sites/*.conf; }
次に、jitsi 設定を自分の設定に変更します:
/etc/nginx/sites/jitsi.conf
server { # ... server_name JITSIFQDN; # ... # use prosody path directly ssl_certificate /etc/prosody/certs/JITSIFQDN.crt; ssl_certificate_key /etc/prosody/certs/JITSIFQDN.key; # or use letencrypt path ssl_certificate /etc/letsencrypt/live/JITSIFQDN/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/JITSIFQDN/privkey.pem; # set the config path # replace alias /etc/jitsi/meet/jitmeet.example.com-config.js by location = /config.js { alias /etc/webapps/jitsi-meet/config.js; } # ... location ~ ^/([^/?&:'"]+)/config.js$ { set $subdomain "$1."; set $subdir "$1/"; alias /etc/webapps/jitsi-meet/config.js; } }
それから nginx.service
を 再起動 してください。
ヒントとテクニック
NAT 経由で実行
以下のポートをサーバーに転送する必要があります:
HTTPS:
- TCP/443
Jitsi Videobridge:
- TCP/4443
- UDP/10000
SIP への Jitsi ゲートウェイ (Jigasi)
Jitsi-meet ミーティングを従来の SIP とインターフェースするには、jigasiAUR または jigasi-gitAUR をインストールし、prosody 設定を編集します:
/etc/prosody/prosody.cfg.lua
Component "callcontrol.JITSIFQDN" component_secret = "SECRET_JIGASI_USER"
SIP アクセス認証情報を入力します (SIPUSER
SIPSERVER
および SIPPASSWORD
)
/opt/jigasi/jigasi-home/sip-communicator.properties
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.ACCOUNT_UID=SIP\:"SIPUSER@SIPSERVER" net.java.sip.communicator.impl.protocol.sip.acc1403273890647.PASSWORD=SIPPASSWORD net.java.sip.communicator.impl.protocol.sip.acc1403273890647.SERVER_ADDRESS=SIPSERVER net.java.sip.communicator.impl.protocol.sip.acc1403273890647.USER_ID=SIPUSER
SIP が接続しているデフォルトのルーム名を変更するには、上記の設定の org.jitsi.jigasi.DEFAULT_JVB_ROOM_NAME
を変更します。
次に、jigasi 設定を編集します
/etc/jitsi/jigasi/config
JIGASI_HOST=callcontrol.JITSIFQDN JIGASI_HOSTNAME=jitsi-videobridge.JITSIFQDN JIGASI_SECRET=SECRET_JIGASI_USER JIGASI_OPTS="" LOGFILE=/var/log/jitsi/jigasi.log
/opt/jitsi-meet/config.js
hosts.call_control = 'callcontrol.meet.jit.si'
次に、jigasi.service
を 起動/有効化 します。
ルーム作成時のアクセス制限
ビデオ会議室の 作成 を認証されたユーザーに制限するには、次の手順を実行します。会議への参加者はまだ認証されていないことに注意してください。
prosody の jitsi ドメインに認証を追加し、ゲスト用の新しい仮想ホストを追加します:
/etc/prosody/conf.d/jitsi.cfg.lua
-- change authentification of your domain VirtualHost "JITSIFQDN" authentification = "internal_plain" -- add guest virtual host to allow anonymous user to join your room VirtualHost "guest.JITSIFQDN" authentication = "jitsi-anonymous" c2s_require_encryption = false modules_enabled = { -- copy the content of the modules_enabled -- of the VirtualHost "JITSIFQDN" -- remove only the module "muc_lobby_rooms" of the list -- example: "bosh"; "pubsub"; "ping"; -- Enable mod_ping "speakerstats"; "external_services"; "conference_duration"; }
jitsi-meet
の設定ファイルを編集します。
/etc/webapps/jitsi-meet/config.js
var config = { host: { // anonymous users need to use a dedicated muc without authentication anonymousdomain: 'guest.JITSIFQDN', }, }
jicofo
の認証を追加します:
/etc/jicofo/jicofo.conf
jicofo { authentication { enabled = true type = XMPP login-url = JITSIFQDN enable-auto-login = true } }
次に、目的のユーザーを作成します。
# prosodyctl register <username> JITSIFQDN <password>
jigasi
を使用している場合のみ (知らない場合は編集しません)、匿名認証を許可しないように SIP インターフェースを編集します:
/etc/jitsi/jigasi/sip-communicator.properties
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
これらの手順は このガイド から引用されています。
JWTトークンによるアクセス制限
ビデオ会議室の 作成 を JWT トークン (認証用の外部サービス) で認証するユーザーに制限するには、次の手順を実行します。会議への参加者はまだ認証されていないことに注意してください。
これらの依存関係をインストールします:
prosody の jitsi ドメインに認証を追加し、ゲスト用の新しい仮想ホストを追加します:
/etc/prosody/conf.d/jitsi.cfg.lua
-- change authentification of your domain VirtualHost "JITSIFQDN" authentification = "token" app_id = "APP_ID" app_secret = "APP_SECRET" allow_empty_token = false modules_enabled = { -- keep existing modules and add "presence_identity"; } c2s_require_encryption = false -- add guest virtual host to allow anonymous user to join your room VirtualHost "guest.JITSIFQDN" authentication = "jitsi-anonymous" c2s_require_encryption = false modules_enabled = { -- copy the content of the modules_enabled -- of the VirtualHost "JITSIFQDN" -- remove only the module "muc_lobby_rooms" of the list -- example: "bosh"; "pubsub"; "ping"; -- Enable mod_ping "speakerstats"; "external_services"; "conference_duration"; "presence_identity"; } Component "conference.JITSIFQDN" "muc" modules_enabled = { -- add this to the modules_enabled "token_verification"; }
jitsi-meet
の設定ファイルを編集します:
/etc/webapps/jitsi-meet/config.js
var config = { host: { // anonymous users need to use a dedicated muc without authentication anonymousdomain: 'guest.JITSIFQDN', }, }
jicofo
の認証を追加します:
/etc/jicofo/jicofo.conf
jicofo { authentication { enabled = true type = JWT login-url = JITSIFQDN enable-auto-login = true } }
次に、prosody.service
と jicofo.service
を 再起動 (または、インストールしたばかりの場合は 起動/有効化) します。
これで、JWT トークンを使用してユーザーを認証できるようになりました。
仕様はここで読むことができます: Jitsi Meet Tokens
ここでは、nodejs での簡単な例を示します:
const jwt = require('jsonwebtoken') const crypto = require('crypto'); const words = require('random-words') const yourDomain = "JITSIFQDN" const appId = "APP_ID" const appSecret = "APP_SECRET" const userName = "YOUR_USERNAME" const userEmail = "YOUR_EMAIL" function getBody(domain, appId, name, email, room) { const md5Email = crypto.createHash('md5').update(email).digest("hex"); const id = crypto.createHash('sha1').update(`${name}:${email}`).digest("hex") return { context: { user: { avatar: `https:/gravatar.com/avatar/${md5Email}`, name, email, id, }, group: 'users' }, "aud": "jitsi", "iss": appId, "sub": domain, room, } } const room = process.argv[2] || words({exactly: 3, join: '-'}) const data = getBody( yourDomain, appId, userName, userEmail, room, ) const options = { algorithm: 'HS256', expiresIn: '2h', } const jwtToken = jwt.sign(data, appSecret, options) console.log(`https://${yourDomain}/${room}?jwt=${jwtToken}`)
ログの評価
パブリックに利用可能な IP アドレスの場合、上記の設定はパブリックビデオ会議サーバーにつながります。サーバーの使用を監視するには、journalctl を使用して、少なくとも漠然とした使用法を把握できます:
# journalctl --unit=jicofo.service --grep="created new conference" --output cat
新しいチャットルーム作成のすべてのイベントを表示し、
# journalctl --unit=jicofo.service --grep="Stopped" --output cat
チャットルームの破壊に関するすべてのイベントを表示します。
'member' を grep すると、参加者に関する (匿名の) 情報も得られます。
独自の STUN サーバーを実行する
デフォルトでは、Jitsi Meet は jitsi.org の STUN サーバーを使用します。coturn を使用し、jitsi-meet の設定で設定することで、独自の STUN サーバーを簡単に実行できます。
トラブルシューティング
ログを確認してください
すべてのサービスユニット (つまり、prosody.service
、jitsi-videobridge.service
、jicofo.service
) を 停止 し、一度に 1 つずつ 起動 して各サービスユニットの ジャーナル 内の新しいメッセージをたどって、何か問題があるかどうかを確認します。ほとんどの問題は、パスワードまたは設定の問題が原因です。
まったく異なるバージョンからアップグレードした場合、または構成に問題があった場合は、他のバージョンを開始してください。どの部分が間違っているかを探すよりも早いでしょう。
Matrix のルームでヘルプを求める
matrix ルームに参加して、そこで助けを求めることができます: