Help us understand the problem. What is going on with this article?

Jitsi Meet(ビデオ会議システム)のサーバを Docker Compose で起動する手順

Jitsi 概要

Jitsi Meet (ジッチ・ミート)とはオープンソース(Apache License 2.0)として開発・利用できるビデオ会議用のシステムです。利用者はブラウザから URL にアクセスするだけで、すぐにビデオ会議が利用できます。ブラウザ以外にも、iOS や Android 対応のアプリが公開されています。

この Jitsi Meet 用のサーバ環境は Docker に対応しています 。自分のドメイン名を使い、自分のサーバ上に Docker Compose で起動する手順をまとめました。 公式ドキュメント をベースに、自分が持つドメイン名のホストで Jitsi Meet を立ち上げるまでの手順です。(なお、ドメイン名を準備しているのは Let's Encrypt の HTTPS 通信にも対応させるためです。単なるセットアップ確認であれば、HTTPS は必須ではありません。)

jitsi-docker.png

事前準備

  • 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」を押せば大丈夫です。

image.png

音声、動画、テキストでのチャットだけでなく、画面共有機能もあります。

Screenshot_2020-04-07 Jitsi Meet(1).png

Enjoy!

その他、今後の考慮点など

  • 必要に応じてファイアウォール等は検討。このままだと、URLが分かるので誰でもアクセスできてしまう
  • Jitsi には認証機能があるようなので、それも試してみたいところ
  • 利用者が増えた時のネットワーク帯域を計測しないと
  • 長期運用する場合、このまま Compose でよいのだろうか
  • 拡張機能として、録画、文章共有、ディクテーション機能があるので試したい

参考情報

zembutsu
料理のレシピ http://cookpad.com/kitchen/8250081
https://pocketstudio.net/
sakura_internet
さくらレンタルサーバ、さくらのVPS、 さくらのクラウド、さくらの専用サーバなどのインターネットサービス・ITプラットフォームを提供しています。
https://www.sakura.ad.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした