Docker版Jitsi Meetの、機能面ではなく、Webページ(フロントエンド)のカスタマイズについて記載します。
サーバー環境は、以前構築した「Docker版Jitsi Meet」を前提としています。
Webページカスタマイズの準備
Jitsi Meet のフロントエンド寄りのConfigファイルとしては、config.js, interface_config.js が用意されています。
(参考)
・Jitsi Meet configuration – Jitsi Meet Handbook
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker/#jitsi-meet-configuration
config.js, interface_config.js は、以前構築した「Docker版Jitsi Meet」の環境では、Dockerホストサーバーの ~/.jitsi-meet-cfg/web/ に存在します。
Jitsi Meet Handbook によれば、config.js, interface_config.js は、コンテナを再起動するたびに再作成される(元に戻ってしまう)ので、設定をカスタマイズする場合は、custom-config.js, custom-interface_config.js ファイルを作成し、そこに、カスタマイズする設定のみ記載してください、とのことです。
それに従って、custom-config.js, custom-interface_config.js ファイルを作成します。
jitsiユーザーでコンテナをインストール、起動しているので、jitsiユーザーで操作します。
$ touch ~/.jitsi-meet-cfg/web/{custom-config.js,custom-interface_config.js}
$ ls -l ~/.jitsi-meet-cfg/web/
drwxr-xr-x 3 root root 4096 6月 9 12:24 acme-certs
drwxr-xr-x 4 root root 4096 6月 9 13:11 acme.sh
-rw-r--r-- 1 root root 4602 6月 9 13:11 config.js
drwxr-xr-x 2 root root 4096 6月 9 12:16 crontabs
-rw-rw-r-- 1 jitsi jitsi 0 6月 9 15:48 custom-config.js
-rw-rw-r-- 1 jitsi jitsi 0 6月 9 15:48 custom-interface_config.js
-rw-r--r-- 1 root root 8110 6月 9 13:11 interface_config.js
drwxr-xr-x 2 root root 4096 6月 9 12:16 keys
drwxrwxr-x 2 jitsi jitsi 4096 6月 9 11:38 letsencrypt
drwxr-xr-x 2 root root 4096 6月 9 12:16 load-test
drwxr-xr-x 3 root root 4096 6月 9 12:24 nginx
フロントエンドは、webコンテナの以下のディレクトリ、ファイルで構成されています。
- /usr/share/jitsi-meet/index.html
- /usr/share/jitsi-meet/title.html
- /usr/share/jitsi-meet/lang (ディレクトリ)
- /usr/share/jitsi-meet/images (ディレクトリ)
- /usr/share/jitsi-meet/css (ディレクトリ)
- /usr/share/jitsi-meet/libs (ディレクトリ)
コンテナ内のファイルは編集しにくいため、上記のディレクトリやファイルをDockerホストのConfigディレクトリにコピーして、docker-compose.yml で、コンテナからホスト上のファイルを参照するよう変更します。
管理しやすいよう、カスタマイズ用ディレクトリ customfiles を作成します。
$ mkdir ~/.jitsi-meet-cfg/web/customfiles
webコンテナ内にある、カスタマイズしたいファイルもしくは、ファイルを含むディレクトリを、作成した ~/.jitsi-meet-cfg/web/customfiles/ 以下にコピーします。
$ docker cp jitsi-meet-web-1:/usr/share/jitsi-meet/index.html \
~/.jitsi-meet-cfg/web/customfiles/
$ docker cp jitsi-meet-web-1:/usr/share/jitsi-meet/title.html \
~/.jitsi-meet-cfg/web/customfiles/
$ docker cp jitsi-meet-web-1:/usr/share/jitsi-meet/lang \
~/.jitsi-meet-cfg/web/customfiles/
$ docker cp jitsi-meet-web-1:/usr/share/jitsi-meet/images \
~/.jitsi-meet-cfg/web/customfiles/
$ docker cp jitsi-meet-web-1:/usr/share/jitsi-meet/css \
~/.jitsi-meet-cfg/web/customfiles/
$ docker cp jitsi-meet-web-1:/usr/share/jitsi-meet/libs \
~/.jitsi-meet-cfg/web/customfiles/
docker-compose.yml で、webコンテナのバインドマウント設定を追記します。
$ cd ~/jitsi-meet/
-- docker-compose.yml
services:
# Frontend
web:
...
volumes:
- ${CONFIG}/web:/config:Z
- ${CONFIG}/web/crontabs:/var/spool/cron/crontabs:Z
- ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts:Z
- ${CONFIG}/web/load-test:/usr/share/jitsi-meet/load-test:Z
- ${CONFIG}/web/customfiles/index.html:/usr/share/jitsi-meet/index.html:Z // 追記
- ${CONFIG}/web/customfiles/title.html:/usr/share/jitsi-meet/title.html:Z // 追記
- ${CONFIG}/web/customfiles/lang:/usr/share/jitsi-meet/lang:Z // 追記
- ${CONFIG}/web/customfiles/images:/usr/share/jitsi-meet/images:Z // 追記
- ${CONFIG}/web/customfiles/css:/usr/share/jitsi-meet/css:Z // 追記
- ${CONFIG}/web/customfiles/libs:/usr/share/jitsi-meet/libs:Z // 追記
...
--
バインドマウントを反映するため、docker compose up -d コマンドを実行して、変更したコンテナのみ再作成、起動します。
$ docker compose up -d
以上でWebページカスタマイズの準備は終了です。
これで、Dockerホスト上の
~/.jitsi-meet-cfg/web/custom-config.js
~/.jitsi-meet-cfg/web/custom-interface_config.js
~/.jitsi-meet-cfg/web/customfiles/*
といったファイルを編集すれば、Webページをカスタマイズできるようになりました。
フロントエンドの作業担当者が、DockerホストサーバーにSFTPで接続し、編集、アップロードしてカスタマイズする、といった作業分担もしやすいと思います。
Webページカスタマイズ
以下の記事などを参考になりました。
・Jitsiのカスタマイズ – スタジオくまかけ
https://kumakake.com/jitsi%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA/
・Jitsi MeetをDocker Compose で起動
https://zenn.dev/nojya/articles/adeb1cd835a105
・Jitsi Meetのトップページをちょっとだけカスタマイズ
https://zenn.dev/8chikuwa3/articles/a502b7b04dfb9c
・How To Customize Jitsi Meet Video Conference Server – TechnologyRSS.com
https://technologyrss.com/how-to-customize-jitsi-meet-video-conference-server/
ページタイトルの変更
ページタイトル(見た目としては、ブラウザのタブに表示される文字列)はデフォルトで「Jitsi Meet」となっています。
これを、ここでは「オンライン会議」に変更するとします。
HTML的には、.jitsi-meet-cfg/web/customfiles/title.html 内の title タグを変更すればよさそうです。
-- 変更前 <title>Jitsi Meet</title> -- -- 変更後 <title>オンライン会議</title> --
index.html, title.html は、ディレクトリではなく、ファイルをバウンドマウントしています。
この場合、Dockerホスト側でファイル内容を変更したとき、inodeが変わってしまうため、コンテナに反映されません。
コンテナに反映するには、コンテナの再起動が必要となります。
$ docker compose stop $ docker compose up -d
ところが、ブラウザでアクセスしてみると、タブの文字列は「Jitsi Meet」のままです。
ブラウザでHTMLソースを確認すると、
<title>オンライン会議</title>
となっているのですが。。
どうやら、.jitsi-meet-cfg/web/customfiles/libs/app.bundle.min.js に、以下のコードが含まれているため、JavaScriptに上書きされてしまうようです。
document.title=interfaceConfig.APP_NAME
このため、
.jitsi-meet-cfg/web/custom-interface_config.js
に以下の1行を追記して、、、
interfaceConfig.APP_NAME = 'オンライン会議';
コンテナを再起動して反映します。
$ docker compose stop $ docker compose up -d
これで無事、ページタイトルが変更されました。
※title.html 内の変更については、これはこれで、SEO的には意味がありそうです。必要に応じて、title.html 内の各種metaタグも変更するとよいでしょう。
トップページのタイトル文言を変更
トップページに表示されている「Jitsi Meet」「安全で高品質なミーティング」といった文言を変更したいとき。
これらの文言は、日本語ローカライズファイル .jitsi-meet-cfg/web/customfiles/lang/main-ja.json で設定されているので、ここで変更します。
-- 変更前
"headerSubtitle": "安全で高品質なミーティング",
"headerTitle": "Jitsi Meet",
--
-- 変更後
"headerSubtitle": "会議名を入力し、【ミーティングを開始】をクリックしてください。",
"headerTitle": "オンライン会議",
--
編集後、コンテナの再起動をしなくても、即時反映されます。
なお、lang/main-ja.json には、メニューやアラート等、ウインドウで表示される各種日本語文言が設定されているため、必要に応じて変更するとよいでしょう。
多言語対応が必要な場合は、該当国の lang/main-xx.json を編集しましょう。
英語の文言は、lang/main.json にあるように見えるのですが、lang/main.json の headerTitle と headerSubtitle を変更しても、なぜか反映されませんでした。
.jitsi-meet-cfg/web/customfiles/libs/app.bundle.min.js のほうを変更すると、反映されました。
"headerSubtitle":"Enter any meeting name in the box below and click \'Start Meeting\'.","headerTitle":"Online Meeting"
※JavaScriptで文言内で記号(‘)を使用する場合は、\ でエスケープが必要。
トップページの背景画像を変更
.jitsi-meet-cfg/web/customfiles/css/all.css に、以下のような背景上部の表示に関する .welcome .header クラスの記述があります。
(実際は、改行やスペースが削除されています。)
.welcome .header {
background-image: linear-gradient(0deg,rgba(0,0,0,.2),rgba(0,0,0,.2)),url(../images/welcome-background.png);
background-position: center;
background-repeat: none;
background-size: cover;
padding: 1rem;
background-color: #131519;
overflow: hidden;
}
ですので、以下のいずれかで、背景画像を変更できるでしょう。
- images/welcome-background.png ファイルを差し替える。
- お好みの背景画像を images/ にアップロードして、all.css の画像ファイル名を書き換える。
- お好みの背景画像を images/ にアップロードし、カスタマイズ用のcssファイルを作成して、index.htmlにリンクを追加する。
3. は、以下のような感じ。
まず、お好みの背景画像を images/welcome-background-custom.png としてアップロードします。
カスタマイズ用のcssファイル custom.css を作成し、、.welcome .header クラスのみ記述します。
画像ファイル名のパスを変更したのと、背景色(background-color)を、チラつき防止のため、新しい背景画像寄りの色にしてみました。
$ vim ~/.jitsi-meet-cfg/web/customfiles/css/custom.css
.welcome .header {
background-image: linear-gradient(0deg,rgba(0,0,0,.2),rgba(0,0,0,.2)),url(../images/welcome-background-custom.png);
background-position: center;
background-repeat: none;
background-size: cover;
padding: 1rem;
background-color: #D3D3D3;
overflow: hidden;
}
index.html で、custom.css へのリンクを追加します。
-- .jitsi-meet-cfg/web/customfiles/css/index.html
...
<link rel="stylesheet" href="css/all.css?v=8542">
<link rel="stylesheet" href="css/custom.css"> // 追記
...
--
title.html の編集と同様、index.html はファイルをバインドマウントしているため、変更を反映するには、コンテナの再起動が必要です。
$ docker compose stop $ docker compose up -d
無事、背景画像が変更されました。
ロゴ画像の変更
トップページの中央上部やや左と、会議ページ左上にある「jitsi」のロゴ画像を変更するには、custom-interface.js とCSSで対応します。
まず、新しいロゴ画像を(ここでは)images/watermark-custom.png としてアップロードします。
続いて、custom-interface_config.js で設定します。
DEFAULT_WELCOME_PAGE_LOGO_URL は、トップページのロゴ画像のURLパス。
DEFAULT_LOGO_URL は、会議ページのロゴ画像のURLパス。
JITSI_WATERMARK_LINK は、ロゴ画像のリンク先。
-- .jitsi-meet-cfg/web/custom-interface_config.js interfaceConfig.DEFAULT_LOGO_URL='images/watermark-custom.png'; interfaceConfig.DEFAULT_WELCOME_PAGE_LOGO_URL=interfaceConfig.DEFAULT_LOGO_URL; interfaceConfig.JITSI_WATERMARK_LINK='https://inaba-serverdesign.jp/'; --
CSSでは、ロゴ画像サイズを指定します。
all.css を変更するか、先ほどのように custom.css を用意したのであれば、そこに追記するとよいでしょう。
waltermark まわりのクラスでロゴ画像のサイズを指定します。
-- ~/.jitsi-meet-cfg/web/customfiles/css/custom.css
.welcome .welcome-watermark .watermark.leftwatermark {
width: 110px;
height: 83px
}
.leftwatermark {
max-width: 110px;
max-height: 83px;
}
custom-interface_config.js を変更したので、コンテナの再起動が必要です。
$ docker compose stop $ docker compose up -d
無事、ロゴ画像が変更されました。
ロゴ画像の削除
ロゴ画像が不要であれば、非表示にしてしまいましょう。
all.css を変更するか、先ほどのように custom.css を用意したのであれば、そこに追記するとよいでしょう。
-- ~/.jitsi-meet-cfg/web/customfiles/css/custom.css
.leftwatermark {
display: none;
}
--
custom-interface_config.js を変更したので、コンテナの再起動が必要です。
$ docker compose stop $ docker compose up -d
ロゴ画像がなくなりました。
トップページ下部のモバイルアプリ情報を削除
トップページの一番下の↑この部分を削除したいとき。
CSSの .welcome .welcome-footer-padded クラスを変更します。
背景の黒を残しつつ、モバイルアプリ情報のみ非表示にする場合。
-- ~/.jitsi-meet-cfg/web/customfiles/css/custom.css
.welcome .welcome-footer-padded {
visibility: hidden;
}
--
背景を白にする場合。
-- ~/.jitsi-meet-cfg/web/customfiles/css/custom.css
.welcome .welcome-footer-padded {
display: none;
}
--
あるいは、custom-interface_config.js の指定でも背景白になります。
-- .jitsi-meet-cfg/web/custom-interface_config.js interfaceConfig.DISPLAY_WELCOME_FOOTER = false; --
その他のカスタマイズ
フロントエンドに明るい方であれば、config.js, interface_config.js と各HTML, CSS, JSファイルを見ていけば、自由ににカスタマイズできるでしょう。
※「Webページカスタマイズの準備」で実施したのは、そのためのバインドマウント設定でした。
Jitsi Meetについて書いた記事まとめ。







