Jitsi Meet をさくらのクラウドのスタートアップスクリプトで動かす方法

## 概要

Jitsi Meet ( https://jitsi.org/jitsi-meet/) は、ビデオ会議用の WebRTC JavaScript アプリケーションであり、ブラウザやスマートフォン向けの専用アプリから利用できます。 [オープンソース・ソフトウェア（Apache License 2.0）](https://github.com/jitsi/jitsi-meet) として自由に利用できます。

この Jitsi Meet を自動的にセットアップできるのが、さくらのクラウドの「Jitsi Meet スタートアップスクリプト」です。このスタートアップスクリプトを使えば、以下の作業を自動的に行います。

- サーバ作成時、自動的に Jitsi Meet をセットアップする（スタートアップスクリプトは Ubuntu 18.04 LTS が対象）
- 自動的に DNS ゾーン情報を変更し、「https://<ドメイン名>」でアクセス可能になる

また、手作業で、 Let's Encrypt の SSL 証明書を使った暗号化の通信にも対応できます。

## 事前準備

スタートアップスクリプトを使えば、新しいサーバ（とディスク）作成と同時に Jitsi Meet を自動的にセットアップします。そのためには、DNS ゾーンの登録と、API 鍵の作成が必要です。

### DNS アプライアンスに DNS ゾーンを登録

スタートアップスクリプトで作成した Jitsi Meet の環境には、ブラウザで「https://ホスト名/」へアクセスします（例： `meet.example.jp` や `example.jp` など）。ここで利用する「ホスト名」にあたる場所は、あらかじめ DNS アプライアンスに登録が必要です。

**注意点としては、「ホスト名＋ドメイン名」でアクセスしたい場合、DNS アプライアンスでも「ホスト名.ドメイン名」として「ゾーン名」を追加する必要があります。**

以下の例は、 `https://meet.toaru.site/` としてアクセスしたいため、 `meet.toaru.site` のゾーンを追加しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/77191dc4-61df-ae79-920e-57e0360e94c8.png)

ゾーン追加後、表示された名前をダブルクリックすると、「DNSサーバ」が表示されます。 **ここで表示されている DNS サーバを、DNS 登録事業者（レジストラ）のドメイン管理画面から「ネームサーバ」として指定する必要があります。**


DNS アプライアンスに関する一般的な手順は、以下の記事をご覧ください。

- ドメイン名（ゾーン情報）を登録するには - DNS アプライアンス編(1)
  - https://qiita.com/zembutsu/items/a131d62ceb323b7b18c1


注意点：DNS アプライアンスにドメイン登録後、 **リソースレコードは追加しないでください** 。 もし登録済みのドメイン名で利用しようとする場合は、あらかじめ、対象ドメインのリソースレコードを削除しておく必要があります。

### API キーの作成

スタートアップスクリプトの内部操作（起動したサーバの IP アドレスを確認するため、API キーと sacloud CLI を使います）のため、何らかの API キーを事前に作成する必要があります。既に作成済みの場合は、作業は不要です。

- APIキーの新規作成・編集
  - https://manual.sakura.ad.jp/cloud/api/apikey.html#id3

## サーバ作成時、スタートアップスクリプトで Jitsi Meet を選択

スタートアップスクリプトは Ubuntu Server をご利用いただく前提です。

セットアップを進めるには、コントロールパネルの左メニューから「サーバ」をクリックします。そして、「シンプルモード」にチェック印が入っていれば、クリックしてシンプルモードを解除します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/5055e9e3-cf9c-e18f-9f1c-356cea6f7393.png)


それから、サーバプランの「仮想コア」や「メモリ」は特に触りません。1コア、1GB のままで構いません。必要があれば、サーバ作成後にスペックアップもできます。

それから「アーカイブ選択」は「Ubuntu Server 18.04.04 LTS 64bit」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/7f64177e-a924-c373-9f6e-237318af835d.png)


画面を更に下へスクロールし、「ディスクの修正」では、 **管理ユーザのパスワード** を入力します。 **Ubuntu Server の場合、サーバにログインする「ubuntu」ユーザのパスワード** になります。また、「sudo su」で root 権限で作業するときの確認パスワードにもなります。

それから「ホスト名」には、今回利用する「ドメイン名」を記録します。画面では「toaru」というホスト名を入力していますが、ここは任意の名前で構いません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/f9712d21-49b0-2edd-7e5a-cf76b9efeda4.png)


そして、「配置する スタートアップスクリプト」で「Jitsi Meet」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/e0b96ae5-3827-ccc9-fea8-985e49aa9ccb.png)


さらに下にある「スタートアップスクリプト オプション」で「ホスト名」の場所には、DNS アプライアンスに登録した「ゾーン名」を入力します。

ここで注意が必要なのは、たとえば「meet.example.jp」とゾーンを登録した場合、この「meet.example.jp」をホスト名に書く必要があります。あるいは、ホスト名ナシの 「example.jp」してゾーンを登録した場合は「example.jp」です。

もし「room.example.jp」のような別の名前で作成したい場合は、DNS アプライアンスでゾーンの登録を「room.example.jp」になっているかどうか確認し、そうでなければ作り直す必要があります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/acdc5c09-c7b1-7fd5-b495-06806e0dcd6d.png)

なお、先の画像では「toaru.site」というゾーンで登録したので、Jitsi Meet で扱うホスト名も「toaru.site」になります。

それから「APIキー」で利用したい API キーを選びます。

あとは、画面をスクロールし「サーバの情報」で「Jitsi Meet」など、サーバ一覧画面に表示される分かりやすい名前をつけておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/3602946f-93cf-852d-aa46-9e7ae3f8c00e.png)


最後に画面を下までスクロールし、右下にある「作成」を押します。確認画面で再び「作成」をクリックし、サーバ作成を開始します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/e0758d3c-c5eb-3b9f-a2b0-a396febc4f07.png)


あとはサーバが作成完了するまで待ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13002/b7a01ba5-10a9-10df-e77d-4ca75bfc24c7.png)



これでサーバ作成まで完了しました。



## サーバ作成後のスタートアップスクリプト動作確認

サーバ作成が完了すると、スタートアップスクリプトの自動処理がスタートします。進行状況を確認するには、サーバに SSH 接続するか、コンソール画面からサーバの中にログインします。さくらのクラウドの Ubuntu Server は、ログインユーザが「ubuntu」です。また、接続先のサーバ IP アドレス情報は、サーバ一覧画面の「NIC」列から確認できます。

```
$ ssh -l ubuntu <IPアドレス>
```

それから `sudo ls -al /root/.sacloud-api/notes/` で root に切り替えます。パスワードは ubuntu アカウントでログイン時のものです。

```
ubuntu@toaru:~$ sudo  sudo ls -al /root/.sacloud-api/notes/
[sudo] password for ubuntu:
```

それから画面を確認します。

```
ubuntu@toaru:~$ sudo ls -al /root/.sacloud-api/notes/
total 72
drwx------ 2 root root  4096 May 21 11:58 .
drwx------ 3 root root  4096 May 21 11:54 ..
-rwx------ 1 root root  3571 May 21 11:54 113200581151
-rw-r--r-- 1 root root     0 May 21 11:58 113200581151.done
-rw-r--r-- 1 root root 55541 May 21 11:58 113200581151.log
```

このように「数字.done」というファイルが出来ていれば、スタートアップスクリプトの処理が正常終了しました。あとはブラウザから `https://<IPアドレス>/` でアクセスすると、Jitsi Meet の画面が操作できます。

また、 DNS 情報が反映されれば `https://ドメイン名/` でもアクセス可能になります。

処理が進行中かどうかは `sudo tail -f /root/.sacloud-api/notes/<数字>.log` コマンドを実行し、ログを確認すると進行状況などを確認できます。

## Jitsi Meet 動作確認

ブラウザで「https://<ドメイン名>/」 にアクセスします。なお、接続時は SSL の自己書名を行っているため、ブラウザで継続が出ます。

Let's Encrypt の証明書を設定するには、サーバログイン後

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

を実行します。


## 関連文章

- Jitsi Meet | さくらのクラウド ドキュメント
  - https://manual.sakura.ad.jp/cloud/startup-script/public-script/jitsimeet.html#let-s-encrypt