Jitsi 概要
Jitsi Meet (ジッチ・ミート)とはオープンソース(Apache License 2.0)として開発・利用できるビデオ会議用のシステムです。利用者はブラウザから URL にアクセスするだけで、すぐにビデオ会議が利用できます。ブラウザ以外にも、iOS や Android 対応のアプリが公開されています。
この Jitsi Meet 用のサーバ環境は Docker に対応しています 。自分のドメイン名を使い、自分のサーバ上に Docker Compose で起動する手順をまとめました。 公式ドキュメント をベースに、自分が持つドメイン名のホストで Jitsi Meet を立ち上げるまでの手順です。(なお、ドメイン名を準備しているのは Let's Encrypt の HTTPS 通信にも対応させるためです。単なるセットアップ確認であれば、HTTPS は必須ではありません。)
事前準備
- Jitsi Meet を動かす Linux サーバ環境(本手順は CentOS 7.x を前提としています) ※本手順は 2GB のメモリ環境で試しました
- Docker Engine と Docker Compose のインストール
- DNS サーバ側で、何らかのホスト名をサーバに対して設定(レコードの追加)
- ここでは
meet.toaru.site
というホスト名での設定を想定 - Let's Encrypt で SSL 証明書を利用するため。利用しなくても Jitsi Meet を試せられるものの、ブラウザ側のセキュリティ設定によっては映像・音声通話が出来ない可能性
- ここでは
Jitsi 設定手順
GitHub リポジトリのクローン
まず GitHub 上のリポジトリを git clone
でローカルに保存し、ディレクトリを移動します。
git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meet
Jisti 環境変数用ファイル .env
の編集
次に、設定ファイルを準備するため、サンプル用のファイルをコピーします。なお、このファイル .env
は Docker Compose で起動する時、環境変数として読み込むために使います。
cp env.example .env
それから .env
ファイルを編集します。 vi .env
などでファイルを開きます。編集箇所を上からみていきます。
基本設定
基本設定として、9~18行目までは、次のように書き換えます。
#
# Basic configuration options
#
# Directory where all configuration will be stored
CONFIG=~/.jitsi-meet-cfg ← Let's Encrypt の証明書など、基本的な情報などが格納されるディレクトリ
# Exposed HTTP port
HTTP_PORT=80 ← 一般的な HTTP 用ポートにします
# Exposed HTTPS port
HTTPS_PORT=443 ← 一般的な HTTPS 用ポートにします
# System time zone
TZ=Asia/Tokyo ← タイムゾーンを日本にします
# Public URL for the web service
PUBLIC_URL=https://meet.toaru.site ←このホスト名は皆さんの環境にあわせ変更します。先頭の # を外すのを忘れずにします
Let's Encrypt 設定
Let's Encrypt の設定を追加します(30~36行目)。
#
# Let's Encrypt configuration
#
# Enable Let's Encrypt certificate generation
ENABLE_LETSENCRYPT=1 ←「1」が有効です。先頭の # を消します。
# Domain for which to generate the certificate
LETSENCRYPT_DOMAIN=meet.toaru.site ←こちらは、環境にあわせて書き換えます
# E-Mail for receiving important account notifications (mandatory)
LETSENCRYPT_EMAIL=alice@example.jp ← ここは、皆さんのメールアドレスを入力します(Let's Encrypt の有効期限通知が届きます)
.env
で最低限の編集が必要なのは、以上の項目です。
セキュリティ設定
.env
に含まれるデフォルトのシステム内部パスワードを書き換えるため、次のコマンドを実行します。( 関連情報 )
./gen-passwords.sh
このスクリプト実行により、元々の .env
ファイルは .env.backup
に書き換えます。このバックアップ用ファイル中には暗号化前のパスワードが残っていますが、念のため不要であれば削除しておくことが望ましいでしょう。
設定ファイル等の保存用ディレクトリ作成
それから、設定情報を格納するディレクトリを作成します。
mkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb}
メモ:ここで作成する ~/.jitsi-meet-cfg
ディレクトリは Let's Encrypt の証明書を格納するなど、重要な場所です。一通りの稼働を確認したら、バックアップ用に控えておくのをおすすめします。また、ホスト名を変更した場合など、トラブルシューティングに困ったら、一旦このディレクトリを別名に変えるなどして、再度 Docker Compose の起動を試すとスムーズに起動できる場合もあります。
Docker イメージの取得と確認
それから、Docker Compose で使うイメージをダウンロードします。コマンドを実行すると、必要な Docker イメージを順次ダウンロードします。
docker-compose pull
docker images
コマンドを実行すると、実行に必要な Docker イメージを確認できます。
REPOSITORY TAG IMAGE ID CREATED SIZE
jitsi/jvb latest fd8201652975 11 days ago 276MB
jitsi/jicofo latest 773ffe263260 11 days ago 277MB
jitsi/prosody latest 5734ef478ff3 11 days ago 256MB
jitsi/web latest
Docker Compose で Jitsi の起動
あとは Docker Compose で起動します。
docker-compose up -d
docker-compose ps
コマンドを実行すると、各サービスが稼働中 ( Up ) なのが分かります。
Name Command State Ports
----------------------------------------------------------------------------------------------
dockerjitsimeet_jicofo_1 /init Up
dockerjitsimeet_jvb_1 /init Up 0.0.0.0:10000->10000/udp, 0.0.0.0:4443->4443/tcp
dockerjitsimeet_prosody_1 /init Up 5222/tcp, 5269/tcp, 5280/tcp, 5347/tcp
dockerjitsimeet_web_1 /init Up 0.0.0.0:8443->443/tcp, 0.0.0.0:8000->80/tcp
このコマンドを実行しているバックグラウンドで、 Let's Encrypt 用の証明書発行や、様々な初期設定が進行しています。
どのような処理が進行しているかは 、 docker-compose logs -f
コマンドで確認できます。ここでは web
サービス(Nginxが稼働しています)のログを確認します。
docker-compose logs -f web
ログを辿ると、次のように証明書の取得が成功したり、有効期限などが表示されています。
web_1 | Obtaining a new certificate
web_1 | Performing the following challenges:
web_1 | http-01 challenge for meet.toaru.site
web_1 | Waiting for verification...
web_1 | Cleaning up challenges
web_1 | IMPORTANT NOTES:
web_1 | - Congratulations! Your certificate and chain have been saved at:
web_1 | /etc/letsencrypt/live/meet.toaru.site/fullchain.pem
web_1 | Your key file has been saved at:
web_1 | /etc/letsencrypt/live/meet.toaru.site/privkey.pem
web_1 | Your cert will expire on 2020-07-05. To obtain a new or tweaked
もし - The following errors were reported by the server:
のようなエラーメッセージや nginx: [emerg] open() "/config/nginx/nginx.conf" failed (2: No such file or directory)
というエラーメッセージが出る場合、証明書の作成に失敗しています。 .env
の記述が誤っているか、あるいはファイアウォール等でサーバに HTTP (TCP/80)での通信が出来ない可能性があります。通信に関連する諸設定を確認します。また、ホスト名の記述が間違っている場合は ~/.jitsi-meet-cfg
を別名にするなどして、作り直すのも1つです。
最終的には、次のようなログが表示されれば問題ありません。ログの表示は Ctrl-C
で中断できます。
web_1 | [cont-init.d] 10-config: exited 0.
web_1 | [cont-init.d] done.
web_1 | [services.d] starting services
web_1 | [services.d] done.
ウェブブラウザでアクセス・動作確認
あとは、ブラウザで https://設定したホスト名 にアクセスするだけです。
「新しいミーティングを開始」でミーティング名(ルーム名に相当します)を入力し、「GO」を押せば大丈夫です。
音声、動画、テキストでのチャットだけでなく、画面共有機能もあります。
Enjoy!
その他、今後の考慮点など
- 必要に応じてファイアウォール等は検討。このままだと、URLが分かるので誰でもアクセスできてしまう
- Jitsi には認証機能があるようなので、それも試してみたいところ
- 利用者が増えた時のネットワーク帯域を計測しないと
- 長期運用する場合、このまま Compose でよいのだろうか
- 拡張機能として、録画、文章共有、ディクテーション機能があるので試したい