序章

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

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

前提条件

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

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

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

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

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

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

このステップでは、システムのホスト名を変更して、Jitsi Meetインスタンスに使用する予定のドメイン名と一致させ、そのホスト名をローカルホストIPに解決します。 127.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 Jitsi Meetサーバーが、相互のローカル接続を受け入れる複数のネットワーク化されたプロセスを使用できるようにします。 127.0.0.1 IPアドレス。 これらの接続は、ドメイン名に登録されているTLS証明書で認証および暗号化されます。 ドメイン名をローカルにマッピングする 127.0.0.1 これらのローカルネットワーク接続にTLS証明書を使用できるようにします。

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

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

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

Ubuntu 18.04 の初期サーバー設定ガイドに従った場合、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パッケージを実行できます。

まず、JitsiGPGキーをダウンロードします。 wget ダウンロードユーティリティ:

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

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

次に、ダウンロードしたGPGキーを追加します aptを使用したのキーリング apt-key 効用:

  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.your-domain)JitsiMeetインスタンスに使用するもの。

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

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

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

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

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

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

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

まず、Certbotリポジトリをシステムに追加して、最新バージョンのCertbotがあることを確認します。 次のコマンドを実行して、新しいリポジトリを追加し、システムを更新します。

  1. sudo add-apt-repository ppa:certbot/certbot

次に、 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 それは毎週実行されます。

TLSインストーラーはポートを使用しました 80 ドメイン名を管理していることを確認します。 証明書を取得したので、サーバーにポートは必要ありません 80 ポートが開いているため 80 通常の暗号化されていないHTTPトラフィックに使用されます。 Jitsi Meetは、ポートでHTTPS経由でのみWebサイトを提供します 443.

次の方法でファイアウォールのこのポートを閉じます ufw 指図:

  1. sudo ufw delete allow 80/tcp

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

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

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

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

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

まず、開く sudo nano /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. The 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つを、現在必要なユーザー認証を実行するローカルサーバーにポイントします。

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

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

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

  1. sudo prosodyctl register user your_domain password

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

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

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

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

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

結論

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