はじめに
オープンソースな音声、ビデオ通話システムのJitsiを利用したアプリを構成する際に、
ネットワーク上の制約でjitsi-meetとjitsi-videobridgeを別のサーバーで動作させる必要があり、
えっさほいさすることになったので忘備録的にきろくさせてください。
構成
こんな感じです。便宜上WebサーバーとVideoサーバーと呼んでいます。
Webサーバー側の設定
nginx
nginxは環境に合わせよしなに設定します。
jitsi-meet
jitsi-meetのconfig.jsに取得済みのドメイン(仮にdontaku-hakata.co.jp)を記載します。
var config = {
hosts: {
domain: dontaku-hakata.co.jp,
// その他の設定...
Videoサーバー側の設定
/etc/hosts
名前解決に制約があったので、/etc/hostsに取得済みのドメイン(仮にdontaku-hakata.co.jp)と対応させてWebサーバーのIPアドレスを記載します。
127.0.0.1 localhost
WebサーバーのIP dontaku-hakata.co.jp
jitsi-videobridge
videobridgeを起動する際にホスト、取得済みのドメイン(仮にdontaku-hakata.co.jp)、サブドメイン、Webサーバーと通信するポート、videobridgeのシークレットをオプションとして指定して起動します。
シェルスクリプトにしました。
#!/bin/bash
mkdir -p /var/log/videobridge
bash videobridgeのパス/jvb.sh --host=dontaku-hakata.co.jp --domain=dontaku-hakata.co.jp --subdomain=videobridge --port=任意のポート --secret=videobridge_secret >> /var/log/videobridge/videobridge.log 2>&1
jicofo
jicofoを起動する際にvideobridgeと同様のオプションに加え、
auth用にドメインを指定して起動します。
こちらもシェルにしました。
#!/bin/bash
mkdir -p /var/log/jicofo
bash jicofoのパス/jicofo.sh --host=dontaku-hakata.co.jp --domain=dontaku-hakata.co.jp --secret=jicofo_secret --user_domain=auth.dontaku-hakata.co.jp >> /var/log/jicofo/jicofo.log 2>&1
/root/.sip-communicator/sip-communicator.properties
/root/.sip-communicator/sip-communicator.propertiesに取得済みのドメイン(仮にdontaku-hakata.co.jp)を指定します。STUNサーバーは
以下のように指定します。
org.jitsi.videobridge.STATISTICS_TRANSPORT=pubsub
org.jitsi.videobridge.PUBSUB_SERVICE=dontaku-hakata.co.jp
org.jitsi.videobridge.PUBSUB_NODE=sharedStatsNode
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=STUNサーバーの設定
prosody
prosody起動時に読み込まれる設定ファイルでホストを指定し、videobridgeとjicofoをマウントします。
VirtualHost "dontaku-hakata.co.jp"
authentication = "anonymous"
ssl = {
SSLの設定
}
modules_enabled = {
"bosh";
"pubsub";
}
VirtualHost "auth.dontaku-hakata.co.jp"
ssl = {
SSLの設定
}
authentication = "internal_plain"
// jicofoとvideobridgeをマウントする
Component "conference.dontaku-hakata.co.jp" "muc"
Component "videobridge.dontaku-hakata.co.jp"
component_secret = "videobridge_secret"
Component "focus.dontaku-hakata.co.jp"
component_secret = "jicofo_secret"
動作確認して完了です。
Webサーバー側にブラウザから接続(仮にdontaku-hakata.co.jp)し、音声/ビデオが疎通していれば完了です。