開発者ドキュメント

How To Install Jitsi Meet on Ubuntu 20.04

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

序章

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

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

前提条件

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

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

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

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

手順1を開始する前に、root以外のsudo対応ユーザーとしてサーバーにログインします。

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

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

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

  1. sudo hostnamectl set-hostname jitsi.your_domain

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

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

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

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

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

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

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

次の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パッケージを実行できます。

まず、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)を入力するように求められます。

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

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

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

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

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

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

Jitsi Meetは、ドメインのTLS証明書を自動的にダウンロードするためのスクリプトを提供します。 次のコマンドを使用して、/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.shでJitsiMeetが提供するこの証明書インストールスクリプトを実行します。

  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.your_domain) - 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 に送信され、セキュリティや証明書に関連するその他の事項について通知するために使用されます。 インストールを続行するには、ここに電子メールアドレスを入力する必要があります。

このスクリプトは、ユーザー入力を必要とせずに、JitsiサーバーのSSL証明書のインストールと構成を完了します。

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

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

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

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

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

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

この行を編集します:

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

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

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

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

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

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

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

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

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

この行を編集します:

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

に:

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

ここでも、以前に使用したguest.jitsi.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:jitsi.your_domain

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

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

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ハンドブックの手順を使用して、JitsiMeetインスタンスを拡張できます。

モバイルバージョンを終了