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を構成することもできます。 会議室を作成した後は、一意のアドレスとオプションのパスワードを持っている限り、すべてのユーザーが参加できます。
前提条件
このガイドを開始する前に、次のものが必要です。
- Ubuntu 20.04 チュートリアルを使用した初期サーバーセットアップ(root以外のsudo対応ユーザーを含む)に従ってセットアップされた1つのUbuntu20.04サーバー。 必要なサーバーのサイズは、ほとんどの場合、使用可能な帯域幅とサーバーを使用すると予想される参加者の数によって異なります。 次の表は、何が必要かを示しています。
- サーバーを指すように構成されたドメイン名。 DigitalOcean チュートリアルでホスト名を設定する方法に従って、ドメインをDigitalOceanドロップレットにポイントする方法を学ぶことができます。 このガイドでは、ドメイン名jitsi.your_domainの例を使用しています。
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
を変更します。
- sudo hostnamectl set-hostname jitsi.your_domain
実行したコマンドは次のように分類されます。
hostnamectl
:システムのホスト名を管理するためのsystemdツールスイートのユーティリティ。set-hostname
:システムのホスト名を設定します。
次のコマンドを実行して、これが成功したことを確認します。
- hostname
これにより、hostnamectl
コマンドで設定したホスト名が返されます。
Outputjitsi.your-domain
次に、サーバーのホスト名のループバックIPアドレス127.0.0.1
へのローカルマッピングを設定します。 これを行うには、テキストエディタで/etc/hosts
を開きます。
- sudo nano /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 20.04 の初期サーバー設定ガイドに従った場合、UFWファイアウォールを有効にしてSSHポートを開きました。 Jitsiサーバーは、コールクライアントと通信できるように、いくつかのポートを開く必要があります。 また、TLSインストールプロセスでは、証明書要求を認証できるようにポートを開く必要があります。
開くポートは次のとおりです。
80/tcp
:TLS証明書要求で使用されるポート。443/tcp
:会議室作成Webページに使用されるポート。4443/tcp
10000/udp
: Ports that will transmit and receive the encrypted call traffic.
次のufw
コマンドを実行して、これらのポートを開きます。
- sudo ufw allow 80/tcp
- sudo ufw allow 443/tcp
- sudo ufw allow 4443/tcp
- sudo ufw allow 10000/udp
ufw status
コマンドですべて追加されたことを確認してください。
- sudo ufw status
これらのポートが開いている場合は、次の出力が表示されます。
OutputStatus: 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キーをダウンロードします。
- wget https://download.jitsi.org/jitsi-key.gpg.key
apt
パッケージマネージャーは、このGPGキーを使用して、Jitsiリポジトリからダウンロードするパッケージを検証します。
次に、apt-key
ユーティリティを使用して、ダウンロードしたGPGキーをapt
のキーリングに追加します。
- sudo apt-key add jitsi-key.gpg.key
このコマンドでは不要になったため、GPGキーファイルを削除できるようになりました。
- rm jitsi-key.gpg.key
次に、Jitsiリポジトリを含む新しいソースファイルを作成して、Jitsiリポジトリをサーバーに追加します。 新しいファイルを開いて作成します。
- sudo nano /etc/apt/sources.list.d/jitsi-stable.list
次の行をJitsiリポジトリのファイルに追加します。
deb https://download.jitsi.org stable/
エディターを保存して終了します。
最後に、システムアップデートを実行してJitsiリポジトリからパッケージリストを収集し、jitsi-meet
パッケージをインストールします。
- sudo apt update
- 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が提供するこの証明書インストールスクリプトを実行します。
- 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
を開きます。
- sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua
この行を編集します:
authentication = "anonymous"
に
authentication = "internal_plain"
この構成は、新しい訪問者による会議室の作成を許可する前に、ユーザー名とパスワードの認証を強制するようにJitsiMeetに指示します。
次に、同じファイルで、ファイルの最後に次のセクションを追加します。
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
で別の構成ファイルを開きます。
- sudo nano /etc/jitsi/meet/jitsi.your_domain-config.js
この行を編集します:
// anonymousdomain: 'guest.jitsi.your_domain',
に:
anonymousdomain: 'guest.jitsi.your_domain',
ここでも、以前に使用したguest.jitsi.your_domain
ホスト名を使用します。 この構成は、認証されていないゲストに使用する内部ホスト名をJitsiMeetに指示します。
次に、/etc/jitsi/jicofo/sip-communicator.properties
を開きます。
- sudo nano /etc/jitsi/jicofo/sip-communicator.properties
そして、次の行を追加して、構成の変更を完了します。
org.jitsi.jicofo.auth.URL=XMPP:jitsi.your_domain
この構成は、Jitsi Meetプロセスの1つを、現在必要なユーザー認証を実行するローカルサーバーにポイントします。
これで、登録ユーザーのみが会議室を作成できるようにJitsiMeetインスタンスが構成されました。 会議室が作成されると、登録ユーザーでなくても誰でも会議室に参加できます。 必要なのは、一意の会議室のアドレスと、会議室の作成者が設定したオプションのパスワードだけです。
Jitsi Meetが部屋の作成に認証されたユーザーを要求するように構成されたので、これらのユーザーとそのパスワードを登録する必要があります。 これを行うには、prosodyctl
ユーティリティを使用します。
次のコマンドを実行して、サーバーにユーザーを追加します。
- sudo prosodyctl register user your_domain password
ここで追加するユーザーはシステムユーザーではありません。 彼らは会議室を作成することしかできず、SSH経由でサーバーにログインすることはできません。
最後に、Jitsi Meetプロセスを再起動して、新しい構成をロードします。
- sudo systemctl restart prosody.service
- sudo systemctl restart jicofo.service
- sudo systemctl restart jitsi-videobridge2.service
Jitsi Meetインスタンスは、会議室の作成時にダイアログボックスでユーザー名とパスワードを要求するようになりました。
これで、Jitsi Meetサーバーがセットアップされ、安全に構成されました。
結論
この記事では、安全でプライベートなビデオ会議室をホストするために使用できるJitsiMeetサーバーを展開しました。 Jitsiハンドブックの手順を使用して、JitsiMeetインスタンスを拡張できます。