Google Meet のセルフホスト代替品。Jitsi Meet を Docker で構築してみた

Google Meet、Microsoft Teams、Zoom、Discord のような感じで、音声通話、ビデオ会議、画面共有ができるセルフホスティングツールを探していて、Jitsi Meet というモノを見つけた。

上の公式サイトでは Google アカウントなどでログインすれば部屋を作れるが、セルフホストすればそうしたアカウント作成も不要。URL を知っている人がそのまま入室できる部屋を作れる。

例によって Docker での構築手順があったので試してみた。

# 最新版の Zip ファイルを取得する・本稿執筆時点では `stable-9646` というファイル名だった
$ wget $(curl -s https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep 'zip' | cut -d\" -f4)

# ダウンロードした Zip ファイルを解凍する
$ unzip ./stable-9646

# .env ファイルを用意する
$ cp ./env.example ./.env

# セキュリティ用のパスワードを自動生成させる
$ ./gen-passwords.sh

# コンフィグ用のディレクトリを作成する
$ mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}

# Docker Compose で起動する
$ docker compose up -d

コレで https://localhost:8443 (HTTPS) にアクセスすると、証明書ワーニングが出るが、それを無視してアクセスすれば Jitsi Meet の画面が開いて正常に動作する。終了は $ docker compose down で OK。


ついでに、Serveo のカスタムサブドメインを使って、サイトを公開する方法も解説しておく。

まず .env ファイルの PUBLIC_URL 部分を、割り当てたい Serveo のドメイン名にする。ココでは https://example.serveo.net を使うテイにする。

# ↓ .env ファイルの以下のような行。
# Public URL for the web service (required)
#PUBLIC_URL=https://meet.example.com

# ↓ こんな風にする
PUBLIC_URL=https://example.serveo.net

コレが出来たら $ docker compose up -d で Docker コンテナを起動する。ついで ssh コマンドを使って Serveo とのトンネルを作る。

# 事前に用意しておいた ~/.ssh/serveo 鍵を指定している
# 「example」部分は先ほど決めた Serveo のサブドメイン部分の文字列に合わせる
$ ssh -R example:80:localhost:8000 -i ~/.ssh/serveo serveo.net

公開する Docker 側のポートは 8443 ではなく 8000 (HTTP) を使うのがポイント。コレで https://example.serveo.net にアクセスすれば、正常に HTTPS 化された Jitsi Meet 環境が使える。

ホントに Google Meet みたいな感じで、音声通話、ビデオ通話、画面共有などひととおりの機能が使えて、アカウントの用意も要らないので便利である。