AWS上にWebRTCのWeb会議システムを構築する
みなさんこんにちは。
本日のお題
AWS上のEC2に、JitsiというOSSを利用して、Web会議システムをHTTPSで証明して構築する。
構築は、Dockerを利用して、コンテナ管理で構築する。
DL場所
基本は、docker-hubからコマンドで、その時の最新を利用させていただいています。
現在のイメージの状態
このあたりのちょっとしたトピックは、そのうち書きたいと考えています。
[root@meet meet]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jitsi/prosody latest c92c1374d14c 12 days ago 124MB
jitsi/jvb latest 76d12c55f78f 2 weeks ago 419MB
jitsi/jicofo latest 402433635cd9 2 weeks ago 374MB
jitsi/web latest a2fba696f29f 2 weeks ago 262MB
[root@meet meet]#
docker-compose用の定義取得
docker-hubで入手した、コンテナをdocker-compose で動作させるための定義ファイルを準備していきます。
[root@meet meet]# wget https://github.com/jitsi/docker-jitsi-meet/archive/refs/tags/stable-6726-1.tar.gz
[root@meet meet]# ls
stable-6726-1.tar.gz
[root@meet meet]# tar zxf stable-6726-1.tar.gz
[root@meet meet]# ls
docker-jitsi-meet-stable-6726-1 stable-6726-1.tar.gz
[root@meet meet]# rm -rf stable-6726-1.tar.gz
[root@meet meet]# ls
docker-jitsi-meet-stable-6726-1
[root@meet meet]# mv docker-jitsi-meet-stable-6726-1 ./docker-jitsi-meet
インストール手順
インストール(初期設定)は公式手順を利用します。
[root@meet meet]# cd ./docker-jitsi-meet/
[root@meet docker-jitsi-meet]# ls
base CHANGELOG.md env.example examples jibri jicofo jigasi.yml LICENSE prosody release.sh web
base-java docker-compose.yml etherpad.yml gen-passwords.sh jibri.yml jigasi jvb Makefile README.md resources
[root@meet docker-jitsi-meet]# cp env.example .env
このコマンドを実行することで、.envファイルにコンテナイメージの連結に利用するパスワード文字列が追加されます。
[root@meet docker-jitsi-meet]# sh ./gen-passwords.sh
[root@meet docker-jitsi-meet]# mkdir -p ~/.jitsi-meet-cfg/{web/crontabs,web/letsencrypt,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
とりあえず起動
とりあえず起動しました。PORT番号が8443であり、HTTPSで接続したときに、当然ですが、証明書がエラーになりました。
[root@meet docker-jitsi-meet]# docker-compose up -d
[+] Running 4/4
⠿ jvb Pulled 1.8s
⠿ web Pulled 1.8s
⠿ prosody Pulled 1.8s
⠿ jicofo Pulled 1.8s
[+] Running 5/5
⠿ Network docker-jitsi-meet_meet.jitsi Created 0.0s
⠿ Container docker-jitsi-meet-prosody-1 Started 1.5s
⠿ Container docker-jitsi-meet-web-1 Started 1.5s
⠿ Container docker-jitsi-meet-jicofo-1 Started 3.9s
⠿ Container docker-jitsi-meet-jvb-1 Started 3.9s
[root@meet docker-jitsi-meet]#
Jitsi設定ファイルの設定を行います。
とりあえず起動しただけでは、HTTPSに証明書が無かったり、接続PORTが8443だったりと問題があるので、カスタムしていきます。
ファイル(.env)の設定
独自ドメインを設定
[root@meet docker-jitsi-meet]# vi .env
...
-#PUBLIC_URL=https://meet.example.com
+PUBLIC_URL=https://meet.yukkuri.me
...
PORT番号を8443→443に変更
[root@meet docker-jitsi-meet]# vi .env
...
# Exposed HTTPS port
-#HTTPS_PORT=8443
+HTTPS_PORT=443
...
ファイル(docker-compose.yml)の設定
Let's Encriptの証明書を連結
依然作った証明書を連結します。連結は、Dockerのホスト(/home/yukkuri/certificates)とDockerのゲスト(/config/keys)を連結します。
[root@meet docker-jitsi-meet]# vi docker-compose.yml
...
services:
# Frontend
web:
image: jitsi/web:stable-6726-1
restart: ${RESTART_POLICY}
ports:
-# - '${HTTP_PORT}:80'
- '${HTTPS_PORT}:443'
volumes:
- ${CONFIG}/web:/config:Z
- ${CONFIG}/web/crontabs:/var/spool/cron/crontabs:Z
- ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts:Z
+ - /home/yukkuri/certificates/yukkuri.me.crt:/config/keys/cert.crt:Z
+ - /home/yukkuri/certificates/yukkuri.me.key:/config/keys/cert.key:Z
environment:
...
docker-composeの再起動
設定ファイルを編集したので、設定反映のためにコンポーネントを再起動します。
[root@meet docker-jitsi-meet]# docker-compose stop
[+] Running 4/4
⠿ Container docker-jitsi-meet-jicofo-1 Stopped 3.9s
⠿ Container docker-jitsi-meet-jvb-1 Stopped 4.0s
⠿ Container docker-jitsi-meet-web-1 Stopped 3.6s
⠿ Container docker-jitsi-meet-prosody-1 Stopped 3.5s
[root@meet docker-jitsi-meet]# docker-compose up -d
[+] Running 4/4
⠿ Container docker-jitsi-meet-prosody-1 Started 1.3s
⠿ Container docker-jitsi-meet-jicofo-1 Started 3.2s
⠿ Container docker-jitsi-meet-web-1 Started 1.3s
⠿ Container docker-jitsi-meet-jvb-1 Started 3.2s
[root@meet docker-jitsi-meet]#
AWS側のセキュリティグループ設定
AWSで構築しているので、利用するPORTについては、穴あけする必要があります。
以下の設定を追加
- HTTPS (443):クライアントPCからWEB接続
- UDP (10000):クライアントPCからJVB接続用
設定確認
実際に動作を確認します。
Edge バージョン 96.0.1054.62 (公式ビルド) (64 ビット)
Chrome バージョン: 96.0.4664.110(Official Build) (64 ビット)
今後の課題
設定ファイルを解析する必要があります。
ちなみに、現状だと、アクセスし放題、利用し放題になるので、ID/PASSで利用者を絞り込む必要があります。(後日、UPしたい。)
※皆さんに利用してほしいところですが、、、AWS上に展開している都合上、そうなると私の家計が確実に破綻するので、設定完了まではEC2停止ですね。
※AWSのセキュリティグループに自宅のIPだけOKにすればいいんですが、念のため。
今回の所要時間
ざっくりとした、動作確認までで4時間程度かかりました。
ちょっと動かすだけでも、それなりにハードルはありますし、大勢で利用したり、独自に運用するのは、それなりにハードルは高いと思います。
ZOOMも時間が短い場合は、無料ですし、無償のWeb会議システムはたくさんあると思います。
しかし、業務用途だと、自社オンプレじゃないと社内のセキュリティ的に許可されないなど、条件がある場合には使えると予想しています。
HTTPS化の設定のところは結構わかりにくいかなと。
Discussion