Jitsi Meetで自分用Web会議サーバーをたてる

年末、暇なためJitsi Meetで自分用Web会議サーバーを作ってみたので、その手順記録。
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart

# Lightsailにサーバーを作る
１．Amazon Lightsailで仮想マシンを作る。
https://lightsail.aws.amazon.com/

インスタンスロケーションの選択: ap-northeast、ゾーンD
インスタンスイメージの選択: Linux/unix、OSのみ、Ubuntu 18.04 LTS
インスタンスプランの選択: $5.0USD（メモリ 1GB、CPU 1個、SSD 40GB）
インスタンスを確認: jitsi-meet

なお、$3.5（メモリ512MB）のインスタンスではメモリ全然足りなかった。。

２．インスタンス作成後、インスタンス管理画面 > ネットワークにて以下の設定を追加。
　・一応、静的IPアドレスを割り当てておく。
　・ファイアウォールのルールは以下の様に設定する。
　　SSH TCP 22
　　HTTP TCP 80
　　HTTPS TCP 443
　　カスタム TCP 5349
　　カスタム UDP 3478
　　カスタム UDP 10000
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/6c7839fe-48d7-d6da-f007-f13188a333c0.png)

３．DNS名を割り当てておく。
Let's Encryptの証明書取得に必要なためDNSのドメインを取得して、先の静的IPアドレスのAレコードを登録しておく。
Lightsailからも作れるらしいのだけど、自分はRoute 53を直接使っている。
今回は例として、FQDNを「jitsi-meet.example.com」とする。

# Jitsi Meetをインストールする

１．仮想マシンの静的IPに対してsshでログインする。ユーザー名はubuntu。

２．以下のコマンドを実行して、OSを準備する。

```
# sudo apt update
# sudo apt install apt-transport-https
# sudo apt-add-repository universe
# sudo apt update
# sudo apt install openjdk-8-jdk
# 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
```


３．Jitsi Meetをインストールする。

```
# sudo apt install jitsi-meet
```

Hostnameを聞かれるので、先に設定したFQDNを入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/53a9504a-f3bb-8ee7-db79-57e4f3425b19.png)

TLS証明書は、とりあえず自己署名証明書を作る、で進める。
サービスの再起動は、自動で（\<Yes\>）。


４．TLS証明書を作る。
Let's Encryptは2010年代最大の発明だと思う。

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

実際に運用するなら、１か月に１回ぐらい```sudo certbot renew```コマンドを実行して証明書更新するのを忘れずに。


# Webミーティングを開く

１．Webブラウザで、DNSに登録したFQDNのサイトを開く。
例えば```https://jitsi-meet.example.com```

２．会議室名がちょっと長くていいなら、そのまま「Go」をクリックして会議室を開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/052c93f9-4574-1ec0-2afd-570d3ab34d97.png)

３．会議室が開く。他の参加者に渡す会議室名はWebブラウザのURLから分かる。というかURL全体をコピーしてそのまま相手に渡すのが良いだろう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/21bae468-cd74-5ab0-af7a-16c8d752f04f.png)


# Webミーティングに参加する
試しに、手持ちのスマホ（Android）から参加してみる。

１．AndroidにJitsi Meetクライアントをインストールする。
Playストアから「jitsimeet」で出てくる。

２．Jitsi Meetを起動する。

３．画面左上の「メニュー」>「設定」を開く。

４．「ミーティング」>「サーバーのURL」に作ったサーバーのURL（例えば```https://jitsi-meet.example.com```）を入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/26e34831-142d-5464-fd1a-c79205b67780.png)

５．ルーム名（上の画面例だと「SpecificDaysSmellGently」）を入力して「作成/参加」をクリックする。

６．PCのWebブラウザ側で、会議室にAndroidのクライアントが接続されたことを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/e0f8524c-071a-5f96-2e12-236dfddb8708.png)

７．画面右下の「メニュー」>「画面共有の開始」と実行することで、スマートフォン側の画面をPC側に転送することができる。PC画面をスマホに転送することもできる。便利。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/1641fe45-e5af-54d5-eaeb-fdba42d1f3be.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/6a5fa7a7-de10-2ee6-2bea-081987b5d311.png)


スマホからの参加は、ちょっと画質悪いがChromeからも可能。

# おわりに
JigasiというのセットアップしてSIPクライアントから会議室につなぐこともできるそう。
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart#adding-sip-gateway-to-jitsi-meet

軽く探してみた感じだと、Voximplant？とかのサービスを使って電話回線から会議室につなぐのもいけそう。
https://voximplant.com/docs/tutorials/jigasi-setup

次の目標はここか。

（追記）Twilioで電話回線を購入してつないだ。
https://qiita.com/rk05231977/items/6b88f1cc66a9c0743491