メインコンテンツに移動

オープンソースのWeb会議システムを導入します。Jitsi Meetをインストールして実際に動作確認します。OSSのWEB会議システム『Jitsi』は豊田市役所にて採用されているという記事を見たことがあります。

https://jitsi.github.io/handbook/

やり方はハンドブックに書いてあるのでこれを参考にして進めます。Oracle Cloudに作成したインスタンスにSSH接続をしてリモートで作業をします。このインスタンスはOSがUbuntu20.04でまだ作成したばかりでなにも設定はしていません。CentOSなどへの導入方法がハンドブックにはないので作成した次第です。CentOSではDockerによるインストールは可能みたいです。

https://minokamo.tokyo/2022/01/02/4268/

https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart

それでは作業をしていきましょう。
ページには次のパッケージが必要になると記載がありますが、Jitsi Meetをインストールする過程で同時にインストールされます。最初は気づかずNGINXを自分でインストールして進めていました。

gnupg2
nginx-full
sudo#sudoを使用する場合にのみ必要
curl#またはwget以下の「Jitsiパッケージリポジトリを追加する」

Jitsiをインストールするために事前準備が必要です。順番に進めていきます。
システムが最新であり、必要なパッケージがインストールされていることを確認します。

apt update
apt install apt-transport-https

Ubuntuシステムでは、JitsiはUbuntuのuniverseパッケージリポジトリからの依存関係を必要とするので次のコマンドを入力します。

apt-add-repository universe
apt update

root@instance-20220318-2137:~# apt-add-repository universe
'universe' distribution component is already enabled for all sources.

配布コンポーネントは、すべてのソースですでに有効になっていました。

ハンドブックにはオプションとして記載されていますが、該当するのでホストの設定をします。Oracle CloudでパブリックIPアドレスとドメイン名の紐づけをしてから行います。

hostnamectl set-hostname meet.betelgeuse.work

さらにホストファイルに自分の環境に合わせた記述をします。

vi /etc/hosts

記述内容
127.0.0.1 localhost
129.153.36.51 meet.betelgeuse.work

PINGが通るか確認します。

ping "$(hostname)"

root@instance-20220318-2137:~# ping "$(hostname)"
PING meet.betelgeuse.work (129.153.36.51) 56(84) bytes of data.
64 bytes from meet.betelgeuse.work (129.153.36.51): icmp_seq=1 ttl=63 time=0.501 ms
64 bytes from meet.betelgeuse.work (129.153.36.51): icmp_seq=2 ttl=63 time=0.723 ms
64 bytes from meet.betelgeuse.work (129.153.36.51): icmp_seq=3 ttl=63 time=0.548 ms
64 bytes from meet.betelgeuse.work (129.153.36.51): icmp_seq=4 ttl=63 time=0.482 ms
64 bytes from meet.betelgeuse.work (129.153.36.51): icmp_seq=5 ttl=63 time=0.463 ms
64 bytes from meet.betelgeuse.work (129.153.36.51): icmp_seq=6 ttl=63 time=0.460 ms
64 bytes from meet.betelgeuse.work (129.153.36.51): icmp_seq=7 ttl=63 time=0.493 ms

Prosodyパッケージのリポジトリを追加します。Prosodyは近代的なXMPP通信サーバーです。Extensible Messaging and Presence Protocol (XMPP) (旧称 Jabber)は、オープンソースのインスタントメッセンジャーのプロトコルおよび、クライアント、サーバの総称である。次のコマンドでProsodyリポジトリが追加され、ロビー機能などに必要な最新のProsodyがインストールされます。

echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

root@instance-20220318-2137:~# echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
deb http://packages.prosody.im/debian focal main
root@instance-20220318-2137:~# wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
--2022-03-19 05:10:34-- https://prosody.im/files/prosody-debian-packages.key
Resolving prosody.im (prosody.im)… 46.43.15.35, 2001:41c9:1:424::35
Connecting to prosody.im (prosody.im)|46.43.15.35|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 1686 (1.6K) [application/octet-stream]
Saving to: ‘STDOUT’

  • 100%[===================>] 1.65K --.-KB/s in 0s

2022-03-19 05:10:34 (423 MB/s) - written to stdout [1686/1686]

OK

また、次のコマンドでjitsiリポジトリがパッケージソースに追加され、JitsiMeetパッケージが利用可能になります。システムの更新も忘れずに行います。

curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null

sudo apt update

root@instance-20220318-2137:~# curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3114 100 3114 0 0 9761 0 --:--:-- --:--:-- --:--:-- 9761
root@instance-20220318-2137:~# echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null

Jitsi Meetサーバーへのトラフィックを許可するには、ファイヤーウォールで一般的なポート、ネットワークビデオ、オーディオ通信用のポートを開く必要があります。ファイヤーウォールの設定をします。最初はアクティブではなかったので設定は必要ありませんが、この際有効にして必要なポートだけを開放することにします。有効にするとスタートアップ時に設定が反映されます。SSH接続をしているのでポート番号22の追加は重要です。忘れると接続できなくなります。

ufw status
ufw status enable
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10000/udp
ufw allow 22/tcp
ufw allow 3478/udp
ufw allow 5349/tcp
ufw status numbered

root@instance-20220318-2137:~# ufw status
Status: inactive
root@instance-20220318-2137:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

いよいよJitsi Meetのインストールです。

apt install jitsi-meet

グラフィカルな画面が表示されます。最初は、先ほど決めた完全修飾ドメイン名を入力します。SSLに対応した設定もやってくれるみたいです。

Let's Encrypt証明書はコマンドで生成します。

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

ここまでで設定は完了したのでブラウザでアクセスしてみます。接続できません。ファイヤーウォールの設定はリブート後に有効になることを思い出しました。再起動してアクセスするとjitsi meetの会議画面が表示されました。しかし、SSLでのアクセスができません。もう一度コマンドを入力して確認します。先ほどメールアドレスを入力し忘れていたようです。

ただし、これでは誰でもミーティングが可能となるので制限をかけます。下記のディレクトリに自分の設定したホスト名の入ったファイルがあります。これをエディタで開いて編集します。

cd /etc/prosody/conf.avail/
vi meet.betelgeuse.work.cfg.lua

anonymousをinternal_hashedに変更します。

さらにProsodyでユーザーとパスワードを作成します。

prosodyctl register [username] meet.betelgeuse.work [password]

作成後はjitsi関連のサービスを再起動します。ブラウザでミーティングに参加しようとするとユーザーとパスワードを入力する画面が表示されます。

service jicofo restart
service prosody restart 
service nginx restart

アンインストール方法は下記になります。

apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2

jigasiとjitsi-videobridgeが正しくアンインストールされない場合があります。

これが発生した場合は、アンインストールコマンドをもう一度実行するだけで問題ありません。失敗の理由は、アンインストールスクリプトがデーモンを停止するプロセスよりも速い場合があるためです。アンインストールコマンドを2回実行すると、これが修正されます。それまでに、jigasiまたはjitsi-videobridgeデーモンはすでに停止しています。