(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【JitsiMeet】Dockerを利用してイントラネットにビデオチャット音声通話システムを導入する

スポンサーリンク

はじめに

JitsiMeetというOSSが画期的に便利だったのでインターネットに接続していない環境(アイランド環境)に導入しました。
環境としてはRHEL環境にdocker-composeが入っていることを想定しています。Dockerを利用せずともインストールは可能ですが、本アプリは内部にデータをため込まないのでDockerと相性がいいと思います。

本記事の流れはWindows環境にて動作検証を行い、そのコンテナイメージ及び設定ファイルをLinux環境に持ち込みましたが環境によっては適宜読み替えてください。

環境情報
  • Windows10(インターネットに接続している)
  • RedHatEnterpriseLinux7(インターネットに接続していない)

インターネット接続端末で動作検証

WindowsやMacのようなPCにてdockerコマンドを利用するためにDockerDesktopをインストールします。

docker-composeコマンドを打てるようになれば、以下サイトの「In order to quickly run Jitsi Meet on a machine running Docker and Docker Compose, follow these steps」とあるように記載のステップに従ってコンテナを立ち上げます。

起動後は以下のようにプロセスがあがり

$ docker-compose ps
           Name               Command   State                        Ports
------------------------------------------------------------------------------------------------
docker-jitsi-meet_jicofo_1    /init     Up
docker-jitsi-meet_jvb_1       /init     Up      0.0.0.0:10000->10000/udp, 0.0.0.0:4443->4443/tcp
docker-jitsi-meet_prosody_1   /init     Up      5222/tcp, 5269/tcp, 5280/tcp, 5347/tcp
docker-jitsi-meet_web_1       /init     Up      0.0.0.0:8443->443/tcp, 0.0.0.0:8000->80/tcp

下記をブラウザで開けば

https://localhost:8443

以下のようにシステムが利用できます。

f:id:mtiit:20200521215358p:plain
音声通話システムが利用可能

コンテナイメージをtarファイル化

動作が確認できれば/docker-jitsi-meetディレクトリ全体をアイランド環境に持ち込みますが

$ docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
jitsi/jvb                latest              994bef25ebeb        13 days ago         278MB
jitsi/jicofo             latest              64799ed3ad2f        13 days ago         290MB
jitsi/prosody            latest              7d4876346cb0        13 days ago         249MB
jitsi/web                latest              aa613fa07b69        13 days ago         481MB

上記のイメージも手動で持ち込む必要があります。要はdocker-compose.ymlだけではインターネットにイメージを取得しにいくからです。

手順は以下記事を参照ください。

アイランド環境

ここではdocker環境が既に入っていることを想定しています。
アイランド環境にdockerを入れることもまた一手間いりますが、私は以下のようにrpmを集めて

checkpolicy-2.5-6.el7.x86_64.rpm
container-selinux-2.19-2.1.el7.noarch.rpm
containerd.io-1.2.2-3.3.el7.x86_64.rpm
device-mapper-persistent-data-0.7.3-3.el7.x86_64.rpm
docker-ce-18.09.2-3.el7.x86_64.rpm
docker-ce-cli-18.09.2-3.el7.x86_64.rpm
docker-compose-Linux-x86_64
elrepo-release-7.0-3.el7.elrepo.noarch.rpm
kernel-lt-4.4.174-1.el7.elrepo.x86_64.rpm
libseccomp-2.3.1-3.el7.x86_64.rpm
libsemanage-python-2.5-11.el7.x86_64.rpm
lvm2-2.02.177-4.el7.x86_64.rpm
policycoreutils-python-2.5-22.el7.x86_64.rpm
setools-libs-3.3.8-2.el7.x86_64.rpm

以下コマンドでインストールしました。

# find /tmp -name "*.rpm"|xargs yum localinstall -y

/docker-jitsi-meetディレクトリ全体+イメージのtarファイル4つを配置すれば同じように

# docker-compose up -d

にて稼働します。

あとはサーバのIPアドレスが10.11.12.13であれば

https://10.11.12.13:8443

にて同サービスが利用できます。

一点注意として本来であれば以下のように画面共有機能が利用できますが

f:id:mtiit:20200521221504p:plain
左から画面共有、挙手、チャット
ブラウザによっては画面共有のアイコンが表示されない場合があります。

コードを見れば分かりますが

// Desktop sharing

// The ID of the jidesha extension for Chrome.
desktopSharingChromeExtId: null,

// Whether desktop sharing should be disabled on Chrome.
// desktopSharingChromeDisabled: false,

// The media sources to use when using screen sharing with the Chrome
// extension.
desktopSharingChromeSources: [ 'screen', 'window', 'tab' ],

// Required version of Chrome extension
desktopSharingChromeMinExtVersion: '0.1',

ブラウザのバージョンにて要件があるようです。

少なくとも以下のバージョンに上げれば

バージョン: 83.0.4103.61(Official Build) (64 ビット)

画面共有機能は利用できました。

終わりに

本ツールですが、音声通話やチャット機能はもちろん画面共有が利用できます。
対面で会議をしづらいこのご時世では発言者の画面をシェアしながら遠隔から会議を行えるこのようなツールは社内システムとして展開すれば喜ばれると思います。

本手順では証明書を入れていないので「このサイトへの接続は保護されません」と出てしまうのでこの点はご注意ください。