「Jitsi-meet」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) |
→Matrix ルームについてヘルプを求める: 翻訳を修正 |
||
| (同じ利用者による、間の14版が非表示) | |||
| 6行目: | 6行目: | ||
== インストール == |
== インストール == |
||
''Jitsi-meet'' はいくつかのコンポーネントで設定されています。 |
|||
{{AUR|jitsi-meet-bin}}, {{AUR|jitsi-videobridge-bin}}, {{AUR|jicofo-bin}} をインストールしてください。 |
|||
* {{ic|jitsi-meet}}: Web インターフェイス用のファイル。Web サーバーによって提供されるファイル経由でアクセスされます。 |
|||
また {{AUR|jitsi-meet-git}}, {{AUR|jitsi-videobridge}}, {{AUR|jicofo-git}} をインストールしてください。 |
|||
* {{ic|jitsi-meet-prosody}}: jitsi の韻律プラグイン |
|||
* {{ic|jitsi-meet-turnserver}}: スタン/ターンサーバーを実行する設定の例 |
|||
* {{ic|jitsi-videobridge}}: すべての参加者にビデオストリームを提供するビデオブリッジングサービス |
|||
* {{ic|jicofo}}: Jitsi カンファレンスの焦点は誰が話すかを決定すること |
|||
* [[Prosody]]: セットアップのベースとなる無料の XMPP サーバー |
|||
ユーザー間のインターフェースのグラフィカルな概要は、[https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-manual こちら] に示されています。 |
|||
{{Note|{{AUR|jitsi-meet-git}}, {{AUR|jitsi-videobridge}}, {{AUR|jicofo-git}} パッケージの設定パスとサービスは {{AUR|jitsi-meet-bin}}, {{AUR|jitsi-videobridge-bin}}, {{AUR|jicofo-bin}} パッケージで使われているパスとサービスとは異なっています。}} |
|||
git バージョン、nightly バージョン、または安定バージョンのいずれかを使用できます。 |
|||
{{Note|マニュアルインスールガイドは OS に依存しないものになっており、以下のように証明書の信頼だけ変更してください: |
|||
これらを同時にインストールすることは可能ですが、別のポートと韻律の複数のインスタンスを使用する必要があります (プラグインを仮想ホストごとにスコープすることはできません) |
|||
trust anchor /var/lib/prosody/auth.meet.example.com.crt |
|||
}} |
|||
通常バージョンか bin バージョンを選択する必要があります。bin 1 は通常のバージョンと競合します (つまり、nightly と nightly-bin は同時にインストールできませんが、stable と nightly は可能です) |
|||
1 つだけを使用するようにしてください: |
|||
* [[Jitsi-meet#設定パス|stable]] |
|||
* [[Jitsi-meet#設定パス|nightly]] |
|||
* [[Jitsi-meet#設定パス|git]] |
|||
一部のパッケージでは、設定例が {{ic|/usr/share/doc}} にインストールされます。必ず {{ic|/etc/pacman.conf}} でこの行をコメント化してください: |
|||
{{bc|<nowiki>#NoExtract = usr/share/gtk-doc/html/* usr/share/doc/*</nowiki>}} |
|||
スタンドアロンサーバーを実行するには、これらのオプションパッケージが必要です: |
|||
* {{Pkg|nginx}} |
|||
* {{Pkg|coturn}} |
|||
* {{Pkg|prosody}} |
|||
* {{Pkg|lua52}} |
|||
* {{Pkg|lua52-sec}} |
|||
* {{Pkg|lua52-zlib}} |
|||
* {{AUR|lua52-event}} |
|||
== 設定 == |
== 設定 == |
||
{{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= |
|||
=== |
|||
[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 を登録します: |
|||
cp /opt/jitsi-videobridge/lib/logging.properties /etc/jitsi-videobridge/logging.properties |
|||
{{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. |
|||
{{bc|1= |
|||
cat > /etc/nginx/${JITSIFQDN}.conf <<=== |
|||
# cd /etc/nginx |
|||
# Redirect http to https |
|||
# mkdir sites |
|||
server { |
|||
# cp /usr/share/doc/jitsi-meet/jitsi-meet.example sites/jitsi.conf |
|||
listen 80; |
|||
}} |
|||
listen [::]:80; |
|||
server_name call.mechadept.nz; |
|||
次に、それをメイン設定に含めます: |
|||
{{hc|/etc/nginx/nginx.conf|2= |
|||
return 301 https://\$host\$request_uri; |
|||
http { |
|||
} |
|||
// ... |
|||
// this should be placed near to the close bracket of the http block |
|||
# Mozilla intermediate config |
|||
include sites/*.conf; |
|||
server { |
|||
} |
|||
listen 443 ssl http2; |
|||
}} |
|||
listen [::]:443 ssl http2; |
|||
次に、jitsi 設定を自分の設定に変更します: |
|||
#ssl_certificate /path/to/signed_cert_plus_intermediates; |
|||
{{hc|/etc/nginx/sites/jitsi.conf|2= |
|||
#ssl_certificate_key /path/to/private_key; |
|||
server { |
|||
ssl_session_timeout 1d; |
|||
# ... |
|||
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions |
|||
server_name '''JITSIFQDN'''; |
|||
ssl_session_tickets off; |
|||
# ... |
|||
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam |
|||
# use prosody path directly |
|||
ssl_certificate /etc/prosody/certs/'''JITSIFQDN'''.crt; |
|||
ssl_certificate_key /etc/prosody/certs/'''JITSIFQDN'''.key; |
|||
# intermediate configuration |
|||
# or use letencrypt path |
|||
ssl_protocols TLSv1.2 TLSv1.3; |
|||
ssl_certificate /etc/letsencrypt/live/'''JITSIFQDN'''/fullchain.pem; |
|||
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_certificate_key /etc/letsencrypt/live/'''JITSIFQDN'''/privkey.pem; |
|||
ssl_prefer_server_ciphers off; |
|||
# set the config path |
|||
# HSTS (ngx_http_headers_module is required) (63072000 seconds) |
|||
# replace alias /etc/jitsi/meet/jitmeet.example.com-config.js by |
|||
add_header Strict-Transport-Security "max-age=63072000" always; |
|||
location = /config.js { |
|||
#} #Merge mozilla config with jitsi recommended one |
|||
alias /etc/webapps/jitsi-meet/config.js; |
|||
} |
|||
ssl_certificate /etc/letsencrypt/live/${JITSIFQDN}/fullchain.pem; |
|||
# ... |
|||
ssl_certificate_key /etc/letsencrypt/live/${JITSIFQDN}/privkey.pem; |
|||
location ~ ^/([^/?&:'"]+)/config.js$ |
|||
{ |
|||
error_page 404 /static/404.html; |
|||
set $subdomain "$1."; |
|||
set $subdir "$1/"; |
|||
# Jitsi recommended settings below |
|||
alias /etc/webapps/jitsi-meet/config.js; |
|||
} |
|||
#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; |
|||
} |
|||
} |
|||
=== |
|||
それから {{ic|nginx}} |
それから {{ic|nginx.service}} を [[再起動]] してください。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
| 249行目: | 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.comSECRET_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 ルームに参加して、そこで助けを求めることができます: