Jitsi Meetは、セルフホストできるオープンソースのビデオ会議ソフトウェアです。これは、GoogleMeetやZoomなどの独自のサービスに代わる優れた方法です。
Jitsi Meetは、Nextcloud、Rocket.Chat、Synapse(Matrix実装)などの他のオープンソースツールと統合して、包括的なソリューションを提供できます。
いくつかの制限がありますが、JitsiMeetはサーバー上で無料で使用できます。プレミアム機能については、Jitsi開発者によるJitsi asaServiceを選択できます。自分のサーバーにデプロイすることもできますか?セルフホスティングの部分をお手伝いします。
Dockerを使用したJitsiMeetのデプロイ
Dockerを使用すると、Jitsiのデプロイが非常に簡単になります。 Jitsiをデプロイするための手順を紹介します。リバースプロキシと通常の方法の両方について説明します。
複数のDockerアプリでNginxリバースプロキシを使用する方法NginxリバースプロキシとDockerコンテナーを使用して、同じサーバーに複数のWebサービスをデプロイする方法を学びます。

先に進む前に注意が必要なことがいくつかあります。
Dockerとコンテナーの基本的な知識: これは、すべてのチュートリアルのように必須ではありませんが、持っておくと便利です。
カスタムドメイン: この展開はIPで提供されません。つまり、HTTPSを使用した実際のドメイン(またはサブドメイン)での展開について説明します。 HTTP:// [一部のIP]:[一部のポート]のような展開はテストには問題ありませんが、これらのガイドでは目的を果たしません。
物理サーバーまたはクラウド内のLinuxサーバー: Linodeの使用をお勧めしますが、DigitalOcean、Vultr、UpCloudなどの他のプロバイダーを使用することもできます。 AWSでのデプロイはプラットフォーム固有である可能性があり、ここではそのことについては説明しません。
公式の推奨事項によると、デュアルコアプロセッサを搭載した4 GBのメモリを搭載したサーバーは、約10〜20人のユーザーに適しています。
Linode |開発者向けの独立したオープンクラウド私たちの使命は、クラウドコンピューティングをシンプルで手頃な価格で、すべての人が利用できるようにすることでイノベーションを加速することです。


オプションで、リバースプロキシの設定: 同じサーバーに複数のWebサービスをデプロイできるように、リバースプロキシの背後に配置する場合。 Jitsiがサーバー上で実行される唯一のアプリケーションである場合、リバースプロキシは必要ありません。
ドメイン名を持つだけでは十分ではありません。 DNSレコードも適切に配置されていることを確認する必要があります。このチュートリアルでは、かなり長い間横になっていたドメインopenexperiment.inを使用します。
ドメインのすべてのインスタンスを例からドメインに変更してください。
ドメインを作成してサーバーをデプロイしたら(Jitsiではなく、サーバーのみ)、サーバーのIPアドレス(IPv4とIPv6の両方)を収集し、それぞれにAレコードとAAAAレコードを追加します。それが完了したら、CNAMEレコードも追加する必要があります。特定のサブドメインを追加するか、私のように、ワイルドカードエントリを追加できます(メインドメインでホストしている場合)。
それでも混乱する場合は、以下のスクリーンショットを参照してください。私は実際のIPアドレスをぼかしました(私は非常に秘密です...シーッ)。

DNSの変更が有効になるまでしばらく待つ必要がある場合があります。 pingコマンドを使用して確認できます。
ping
サーバーのIPアドレスが次のように表示されるまでドメイン-
❯ ping openexperiment.in -4
PING openexperiment.in (xxx.xxx.xxx.xxx) 56(84) bytes of data.
^C64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=55 time=36.6 ms
--- openexperiment.in ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 36.610/36.610/36.610/0.000 ms
digコマンドを使用してDNSレコードを確認することもできます。
dig openexperiment.in +nocmd +nocomments
次のようなものが表示されるはずです
❯ dig openexperiment.in +nocmd +nocomments
;openexperiment.in. IN A
openexperiment.in. 2970 IN A xxx.xxx.xxx.xxx
;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 07 11:38:20 IST 2021
;; MSG SIZE rcvd: 62
JitsiMeetコンポーネントを理解する
先に進む前に、これらのコンポーネントが何であるか、なぜそれらが重要であるか、そしてこの展開にどのコンポーネントを使用するかを知っておくと役立つと思います。
これを気にしない場合は、明らかにこの記事の展開セクションにスキップしてください。
jitsi / web:latest: ブラウザに表示されるJitsiMeetのWebUIは、この画像の中にあります。 Webサーバー用のNginxとともに。
jitsi / prosody:latest: これはXMPPサーバーであり、オーディオ/ビデオ通話またはテキストチャットを担当します。これはJitsiの心臓部と見なすことができます。
jitsi / jicofo:latest: 参加者とビデオブリッジ間のビデオセッションの管理を担当するXMPPサーバーのフォーカスコンポーネント。つまり、これが会議を管理するものです。これはJitsiのもう1つの必須コンポーネントです。
jitsi / jvb:latest: Jitsi Videobridgeは、着信ビデオチャネルをすべての参加者に中継する責任があります。
これらは運用上のJitsiデプロイメントの必須部分であり、このガイドでのみ使用します。 Jibri、Jigasiのような他のコンポーネントもありますが、それらはオプションなので、ここでは省略します。
十分に読んだら、実践的な作業の時間です。
これをリバースプロキシと一緒にデプロイする場合は、これにアプローチする前にセットアップが完了していることを確認してください。複数のDockerアプリでNginxリバースプロキシを使用する方法Nginxリバースプロキシを使用して同じサーバーに複数のWebサービスをデプロイする方法を学習します。およびDockerコンテナ。

docker-jitsi-meetリポジトリのクローンを作成します
このリポジトリには、この展開に必要なすべてのファイルが含まれています(明らかにいくつかの変更が加えられています)。
リポジトリのクローンを作成し、PWD
を変更します クローンディレクトリに移動します。
git clone https://github.com/jitsi/docker-jitsi-meet jitsi
cd jitsi
Dockerを使用しているため、いくつかの環境変数を変更する必要があります。設定ファイルの例をコピーすることから始めます。
cp env.example .env
次に、.env
を開きます ファイルを作成し、最初の6つの環境変数を確認します。
これらのコンポーネントはすべて、基本的にコンテナ内で実行されるある種のサーバーであるため、サーバーが実際に本人であるかどうかを確認する方法が必要です。これらの秘密はその理由でそこにあります。クライアントは、接続を確立する前に最初に認証する必要があります。
これらの秘密を自分で設定する必要はありません。あなたの生活を楽にするためのスクリプトがすでにそこにあります。リポジトリディレクトリ内で次のコマンドを実行します
./gen-passwords.sh
実行したら、.env
を再度開くことができます ファイル、および秘密を記入する必要があります。
この展開ではこれらすべてのシークレットは必要ありませんが、そのままにしておくと、削除したりコメントアウトしたりする必要はありません。
ここでは、3つのサブセクションがあります。1つは共通変数の割り当て(リバースプロキシまたはリバースプロキシなし)、もう1つはリバースプロキシ、最後のサブセクションはリバースプロキシなしです。それらはすべて.envファイルに移動します。
共通変数(リバースプロキシと非リバースプロキシの両方の方法)
両方の展開方法に共通する変数は次のとおりです。これらを.envファイルに追加します。
構成: できます これの値を変更しますが、必須ではありません。この変数の値はホスト内のディレクトリであり、永続データを格納するためにコンテナ内にバインドマウントされます。したがって、これを変更するのは完全にあなた次第です。
PUBLIC_URL: ドメインJitsiは(プロトコルを使用して)ホストされます。私の場合、値はhttps://meet.openexperiment.in
です。ENABLE_AUTH: 認証が必要ですか?認証では、ユーザーは会議に参加または作成する前に、ユーザー名とパスワードを入力する必要があります。その場合は、この行のコメントを解除し、1に設定されていることを確認してください。
AUTH_TYPE: ENABLE_AUTHを1に設定する場合は、これを「内部」に設定します。この記事では、LDAPまたはJWT認証については説明しません。
RESTART_POLICY: コンテナのポリシーを再起動します。デフォルトはunless-stopped
。私はalways
が好きです またはon-failure
。
TZ: これをシステムのタイムゾーンに設定します。サーバーはUTCタイムゾーンで実行されているため、変更する必要はありません。
リバースプロキシを使用していない場合は、次の変数を.envファイルに追加する必要があります。
HTTP_PORT 、 HTTPS_PORT: これらをそれぞれ80と443に変更します。これらは、コンテナがバインドしようとしているポートです。
ENABLE_LETSENCRYPT: これを1に設定すると、HTTPSが必要です。
LETSENCRYPT_DOMAIN & LETSENCRYPT_EMAIL: インスタンスがホストされるドメインと、証明書関連の通知のメールID。
ENABLE_HTTP_REDIRECT: これを1に設定すると、HTTPトラフィックをHTTPSにリレーする必要があります。
ENABLE_HSTS: これにより、ある意味でブラウザは信頼できる接続を使用するようになります。これを1に設定します。
リバースプロキシを選択した場合は、次の変数を.envファイルに追加する必要があります。
DISABLE_HTTPS: HTTPSはリバースプロキシのWebサーバーによって処理されるため、Jitsi自体からHTTPSを有効にする必要はありません。
ENABLE_HTTP_REDIRECT: 必須ではありません。これを0に設定します。HTTP/HTTPSはリバースプロキシによって処理されます。
VIRTUAL_HOST & LETSENCRYPT_HOST: これらの変数はデフォルトではありません。これらを追加し、値には、インスタンスがホストされるドメイン名を使用します。詳細については、私のrevereプロキシの記事をお読みください。
[リバースプロキシを使用する場合のみ]作成ファイルを変更します
ファイルdocker-compose.yml
を開きます お気に入りのテキストエディタで。
編集が必要な唯一のサービス定義はWebサービスです。次のリストに従って変更してください
- ポートセクションを削除します。コンテナからホストにポートをバインドする必要がなくなりました。
- リバースプロキシ構成で使用されているのと同じネットワークである別のネットワークを追加します。
- このように作成ファイルの最後にネットワークを定義します
networks:
net:
external: true
ネットワーク名がnet
であると仮定します 、設定したものに変更します。
- 環境変数を追加します
VIRTUAL_HOST
&LETSENCRYPT_HOST
そのように
- VIRTUAL_HOST
- LETSENCRYPT_HOST
すべての編集が完了したら、docker-compose up -d
を使用してJitsiをデプロイできます。 コマンド。
リバースプロキシ方式を選択した場合は、リバースプロキシコンテナが実行されていることを確認してください。
Jitsiサーバーの認証済みユーザーを作成する最後のステップを除いて、JitsiMeetの展開はほぼ完了しています。
認証を有効にした場合(ENABLE_AUTH
を使用) )、Jitsiを使用する前に、ユーザーを登録する必要があります。
そうすることは非常に簡単です。複製されたリポジトリディレクトリに移動し、次のようなコマンドを実行します
docker-compose exec prosody prosodyctl --config=/config/prosody.cfg.lua register [USERNAME] meet.jitsi [PASSWORD]
unregister
を使用してユーザーを削除することもできます ここに示したようなコマンド:
docker-compose exec prosody prosodyctl --config=/config/prosody.cfg.lua unregister [USERNAME] meet.jitsi
最後に、Webブラウザで指定されたURLでJitsiMeetフロントエンドを確認できます。

まだ質問や提案がありますか?コメントをお寄せください。
このチュートリアルが気に入って、このような役立つコンテンツの作成を希望する場合は、Proメンバーシップを選択するか、サポートのために1回限りの寄付を行うことを検討してください:)