著者は、 Open Internet / Free Speech Fund を選択して、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

Jitsi Meet は、WebRTCに基づくオープンソースのビデオ会議アプリケーションです。 Jitsi Meetサーバーは、ブラウザだけを使用してアクセスできる複数人のビデオ会議室を提供し、ZoomまたはSkype電話会議と同等の機能を提供します。 Jitsi会議の利点は、すべてのデータがサーバーを通過するだけであり、エンドツーエンドのTLS暗号化により、誰も通話をスヌープできないことです。 Jitsiを使用すると、個人情報をそのように保つことができます。

このチュートリアルでは、Debian10にJitsiMeetサーバーをインストールして構成します。 デフォルトの構成では、誰でも新しい会議室を作成できます。 これは、インターネット上で公開されているサーバーには理想的ではないため、登録ユーザーのみが新しい会議室を作成できるようにJitsiMeetを構成することもできます。 会議室を作成した後は、一意のアドレスとオプションのパスワードを持っている限り、すべてのユーザーが参加できます。

前提条件

このガイドを開始する前に、次のものが必要です。

  • Debian 10 チュートリアルを使用した初期サーバーセットアップ(root以外のsudo対応ユーザーを含む)に従ってセットアップされた1台のDebian10サーバー。 必要なサーバーのサイズは、ほとんどの場合、使用可能な帯域幅とサーバーを使用すると予想される参加者の数によって異なります。 次の表は、何が必要かを示しています。
  • サーバーを指すように構成されたドメイン名。 ドメインとDNSガイドを参照して、ドメインをDigitalOceanドロップレットにポイントする方法を学ぶことができます。 このガイドでは、ドメイン名jitsi.your-domainの例を使用しています。

Jitsi Meetインスタンスを実行するサーバーを選択するときは、会議室をホストするために必要なシステムリソースを考慮する必要があります。 次のベンチマーク情報は、高品質のビデオ設定を使用してシングルコア仮想マシンから収集されました。

CPU サーバーの帯域幅
2人の参加者 3% 30Kbpsアップ、100Kbpsダウン
3人の参加者 15% 7Mbpsアップ、6.5Mbpsダウン

2人から3人の参加者の間でリソース使用量が急増するのは、クライアントが2人いる場合、Jitsiがクライアント間で直接通話データをルーティングするためです。 3つ以上のクライアントが存在する場合、通話データはJitsiMeetサーバーを介してルーティングされます。

手順1—システムのホスト名を設定する

このステップでは、システムのホスト名を変更して、Jitsi Meetインスタンスに使用する予定のドメイン名と一致させ、そのホスト名をローカルホストIP127.0.0.1に解決します。 Jitsi Meetは、構成ファイルをインストールおよび生成するときに、これらの両方の設定を使用します。

まず、システムのホスト名を、Jitsiインスタンスに使用するドメイン名に設定します。 次のコマンドは、現在のホスト名を設定し、再起動の間にシステムのホスト名を保持する/etc/hostnameを変更します。

  1. sudo hostnamectl set-hostname jitsi.your-domain

実行したコマンドは次のように分類されます。

  • hostnamectlは、システムのホスト名を管理するためのsystemdツールスイートのユーティリティです。
  • set-hostnameはシステムのホスト名を設定します。

次のコマンドを実行して、これが成功したことを確認します。

  1. hostname

これにより、hostnamectlコマンドで設定したホスト名が返されます。

Output
jitsi.your-domain

次に、サーバーのホスト名のループバックIPアドレス127.0.0.1へのローカルマッピングを設定します。 これを行うには、/etc/hostsファイルをテキストエディタで開きます。

  1. sudo nano /etc/hosts

次に、次の行を追加します。

/ etc / hosts
127.0.0.1 jitsi.your-domain

JitsiMeetサーバーのドメイン名を127.0.0.1にマッピングすると、JitsiMeetサーバーは127.0.0.1IPアドレスで相互にローカル接続を受け入れる複数のネットワークプロセスを使用できるようになります。 これらの接続は、ドメイン名に登録されているTLS証明書で認証および暗号化されます。 ドメイン名を127.0.0.1にローカルにマッピングすると、これらのローカルネットワーク接続にTLS証明書を使用できるようになります。

ファイルを保存して終了します。

これで、サーバーにJitsiがインストールに必要なホスト名が設定されました。 次のステップでは、JitsiとTLS証明書インストーラーに必要なファイアウォールポートを開きます。

ステップ2—ファイアウォールの構成

Debian 10 ガイドを使用した初期サーバーセットアップに従って、UFWファイアウォールを有効にし、SSHポートを開きました。 Jitsiサーバーは、コールクライアントと通信できるように、いくつかのポートを開く必要があります。 また、TLSインストールプロセスでは、証明書要求を認証できるようにポートを開く必要があります。

開くポートは次のとおりです。

  • 80/tcpはTLS証明書要求で使用されます。
  • 443/tcpは会議室作成Webページに使用されます。
  • 4443/tcp,10000/udpは、暗号化されたコールトラフィックを送受信するために使用されます。

次のufwコマンドを実行して、これらのポートを開きます。

  1. sudo ufw allow 80/tcp
  2. sudo ufw allow 443/tcp
  3. sudo ufw allow 4443/tcp
  4. sudo ufw allow 10000/udp

ufw statusコマンドですべて追加されたことを確認してください。

  1. sudo ufw status

これらのポートが開いている場合は、次の出力が表示されます。

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 4443/tcp ALLOW Anywhere 10000/udp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6) 4443/tcp (v6) ALLOW Anywhere (v6) 10000/udp (v6) ALLOW Anywhere (v6)

これで、サーバーでJitsiをインストールする準備が整いました。これは、次の手順で完了します。

ステップ3—JitsiMeetをインストールする

このステップでは、Jitsi安定リポジトリをサーバーに追加してから、そのリポジトリからJitsiMeetパッケージをインストールします。 これにより、常に最新の安定したJitsiMeetパッケージを実行できます。

まず、システムがGPG暗号化キーを管理できるようにするgnupgパッケージをインストールします。

  1. sudo apt install gnupg

次に、wgetダウンロードユーティリティを使用してJitsiGPGキーをダウンロードします。

  1. wget https://download.jitsi.org/jitsi-key.gpg.key

aptパッケージマネージャーは、このGPGキーを使用して、Jitsiリポジトリからダウンロードするパッケージを検証します。

次に、apt-keyユーティリティを使用して、ダウンロードしたGPGキーをaptのキーリングに追加します。

  1. sudo apt-key add jitsi-key.gpg.key

GPGキーファイルは不要になったため、削除できるようになりました。

  1. rm jitsi-key.gpg.key

次に、Jitsiリポジトリを含む新しいソースファイルを作成して、Jitsiリポジトリをサーバーに追加します。 エディタで新しいファイルを開いて作成します。

  1. sudo nano /etc/apt/sources.list.d/jitsi-stable.list

次の行をJitsiリポジトリのファイルに追加します。

/etc/apt/sources.list.d/jitsi-stable.list
deb https://download.jitsi.org stable/

編集者を保存して終了します。

最後に、システムアップデートを実行してJitsiリポジトリからパッケージリストを収集し、jitsi-meetパッケージをインストールします。

  1. sudo apt update
  2. sudo apt install jitsi-meet

jitsi-meetのインストール中に、Jitsi Meetインスタンスに使用するドメイン名(たとえば、jitsi.your-domain)を入力するように求められます。

Image showing the jitsi-meet installation hostname dialog

ノート: ホスト名フィールドからカーソルを移動して、 ボタン付きTAB鍵。 プレスENTERいつホスト名を送信するために強調表示されます。

次に、Jitsiで自己署名 TLS証明書を作成して使用するか、既存のTLS証明書を使用するかを尋ねる新しいダイアログボックスが表示されます。

Image showing the jitsi-meet installation certificate dialog

JitsiドメインのTLS証明書がない場合は、最初の新しい自己署名証明書を生成するオプションを選択します。

これで、JitsiMeetインスタンスが自己署名TLS証明書を使用してインストールされました。 これによりブラウザの警告が発生するため、次の手順で署名付きTLS証明書を取得します。

ステップ4—署名されたTLS証明書を取得する

Jitsi Meetは、TLS証明書を使用して通話トラフィックを暗号化し、インターネット上を移動するときに誰も通話を聞くことができないようにします。 TLS証明書は、WebサイトがHTTPSURLを有効にするために使用するものと同じ証明書です。

Jitsi Meetは、Certbotユーティリティを使用するドメイン名のTLS証明書を自動的にダウンロードするプログラムを提供しています。 証明書インストールスクリプトを実行する前に、このプログラムをインストールする必要があります。

まず、次のコマンドを使用してcertbotパッケージをインストールします。

  1. sudo apt install certbot

これで、サーバーはJitsiMeetが提供するTLS証明書インストールプログラムを実行する準備が整いました。

  1. sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

スクリプトを実行すると、次の電子メールアドレスのプロンプトが表示されます。

Output
------------------------------------------------------------------------- This script will: - Need a working DNS record pointing to this machine(for domain jitsi.example.com) - Download certbot-auto from https://dl.eff.org to /usr/local/sbin - Install additional dependencies in order to request Let’s Encrypt certificate - If running with jetty serving web content, will stop Jitsi Videobridge - Configure and reload nginx or apache2, whichever is used - Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks - Add command in weekly cron job to renew certificates regularly You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf) by providing an email address for important account notifications Enter your email and press [ENTER]:

この電子メールアドレスは、証明書発行者 https://letsencrypt.org に送信され、セキュリティおよびTLS証明書に関連するその他の事項について通知するために使用されます。 インストールを続行するには、ここに電子メールアドレスを入力する必要があります。 その後、インストールはそれ以上のプロンプトなしで完了します。

完了すると、Jitsi Meetインスタンスは、ドメイン名に署名付きTLS証明書を使用するように構成されます。 インストーラーが毎週実行される/etc/cron.weekly/letsencrypt-renewに更新スクリプトを配置したため、証明書の更新も自動的に行われます。

これで、Jitsi Meetサーバーが稼働し、テストに使用できるようになりました。 ブラウザを開き、ドメイン名を指定します。 新しい会議室を作成し、他の人を招待することができます。

Jitsi Meetのデフォルト設定では、JitsiMeetサーバーのホームページにアクセスするすべての人が新しい会議室を作成できます。 これは、サーバーのシステムリソースを使用して会議室を実行するため、許可されていないユーザーには望ましくありません。 次のステップでは、登録ユーザーのみが会議室を作成できるようにJitsiMeetインスタンスを構成します。

ステップ5—会議の作成をロックする

このステップでは、登録ユーザーのみが会議室を作成できるようにJitsiMeetサーバーを構成します。 編集するファイルはインストーラーによって生成され、ドメイン名で構成されます。

次の例では、ドメイン名の代わりに変数your_domainが使用されます。

まず、テキストエディタで/etc/prosody/conf.avail/your_domain.cfg.luaを開きます。

  1. sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua

この行を編集します:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "anonymous"
...

次のように:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "internal_plain"
...

この構成は、新しい訪問者による会議室の作成を許可する前に、ユーザー名とパスワードの認証を強制するようにJitsiMeetに指示します。

次に、同じファイルで、ファイルの最後に次のセクションを追加します。

/etc/prosody/conf.avail/your_domain.cfg.lua
...
VirtualHost "guest.your_domain"
    authentication = "anonymous"
    c2s_require_encryption = false

この構成により、匿名ユーザーは、認証されたユーザーによって作成された会議室に参加できます。 ただし、ゲストが入室するには、ゲストが一意のアドレスとオプションのパスワードを持っている必要があります。

ここでは、ドメイン名の前にguest.を追加しました。 たとえば、jitsi.your-domainの場合、guest.jitsi.your-domainを入力します。 guest.ホスト名は、JitsiMeetによって内部的にのみ使用されます。 ブラウザに入力したり、DNSレコードを作成したりする必要はありません。

テキストエディタを使用して、/etc/jitsi/meet/your_domain-config.jsで別の構成ファイルを開きます。

  1. sudo nano /etc/jitsi/meet/your_domain-config.js

この行を編集します:

/etc/jitsi/meet/your_domain-config.js
...
        // anonymousdomain: 'guest.example.com',
...

次のように:

/etc/jitsi/meet/your_domain-config.js
...
        anonymousdomain: 'guest.your_domain',
...

繰り返しになりますが、前に使用したguest.your_domainホスト名を使用することにより、この構成はJitsiMeetに認証されていないゲストに使用する内部ホスト名を指示します。

次に、/etc/jitsi/jicofo/sip-communicator.propertiesを開きます。

  1. sudo nano /etc/jitsi/jicofo/sip-communicator.properties

そして、次の行を追加して、構成の変更を完了します。

/etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:your_domain

この構成は、Jitsi Meetプロセスの1つを、現在必要なユーザー認証を実行するローカルサーバーにポイントします。

これで、登録ユーザーのみが会議室を作成できるようにJitsiMeetインスタンスが構成されました。 会議室が作成されると、登録ユーザーでなくても誰でも会議室に参加できます。 必要なのは、一意の会議室のアドレスと、会議室の作成者が設定したオプションのパスワードだけです。

Jitsi Meetが部屋の作成に認証されたユーザーを要求するように構成されたので、これらのユーザーとそのパスワードを登録する必要があります。 これを行うには、prosodyctlユーティリティを使用します。

次のコマンドを実行して、サーバーにユーザーを追加します。

  1. sudo prosodyctl register user your_domain password

ここで追加するユーザーは、システムユーザーではなくです。 彼らは会議室を作成することしかできず、SSH経由でサーバーにログインすることはできません。

最後に、Jitsi MeetおよびNginxプロセスを再起動して、新しい構成をロードします。

  1. sudo systemctl restart prosody.service
  2. sudo systemctl restart jicofo.service
  3. sudo systemctl restart jitsi-videobridge2.service
  4. sudo systemctl restart nginx

Jitsi Meetインスタンスは、会議室の作成時にダイアログボックスでユーザー名とパスワードを要求するようになりました。

Image showing the Jitsi username and password box

これで、Jitsi Meetサーバーがセットアップされ、安全に構成されました。

結論

この記事では、安全でプライベートなビデオ会議室をホストするために使用できるJitsiMeetサーバーを展開しました。 Jitsi Meet Wiki の手順を使用して、JitsiMeetインスタンスを拡張できます。