👥

オンプレWeb会議システム構築(JitsiMeet)

に公開

インターネットが使えないイントラネット内で職員同士でWeb会議がしたかったので、オンプレ環境にUbuntuをたてて、OSSのWeb会議システムを構築してみた。

※前の手順では2人目が入ると落ちる不具合があったので、構築し直ししてみた

前提環境

  • イントラ:Active Directory(ドメイン:intra.hoge.jp)
  • 仮想環境:Nutanix
  • サーバOS:Ubuntu 22.04 LTS

※構築中のみサーバがインターネットにつながる必要あり。

構築手順は、基本的には公式ドキュメントを参照
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart

構築手順

1.Ubuntu の構築

仮想マシンのリソース割り当て

構成 割当
vCPU 4
メモリ 12GB
ディスク 50GB

※仮想マシンの作成部分は割愛

2.Ubuntu の初期設定

インターネットにつながる環境で設定を始める
2.1 とりあえず、パッケージの更新

sudo apt update
sudo apt upgrade

2.2 メンテナンスに必要なパッケージをインストール

sudo apt install -y openssh-server

3. Jitsi Meetインストール事前準備

3.1 必要なパッケージとリポジトリの更新
次のパッケージが必要だが、Jitsi Meetのインストール時に自動で入るものもある。

  • gnupg2 自動でインストールされるが、念のため先にいれておく
  • nginx-full 自動でインストールされるが、念のため先にいれておく
  • sudo # sudo を使用する場合のみ必要
  • curl Or wget リポジトリ追加するのに必要
  • OpenJDK 11 自動でインストールされるはずだが、念のため先にいれておく

必要なパッケージをインストール

sudo apt install -y gnupg2
sudo apt install -y nginx-full
sudo apt install -y curl
sudo apt install -y openjdk-11-jdk

アップデートの確認とatpでhttps使えるようにするやつを入れる

sudo apt update
sudo apt install apt-transport-https

universeリポジトリを追加

sudo apt-add-repository universe
sudo apt update

3.2 サーバ名を完全修飾ドメイン名(FQDN)に設定する

sudo hostnamectl set-hostname meetsv.intra.hoge.jp
sudo nano /etc/hosts
+ 127.0.0.1 localhost 192.168.1.101 meetsv.intra.hoge.jp

※SVの[IPアドレス ホスト名.ドメイン]を設定
※IPアドレスは、イントラ向けに公開するIPアドレスを設定

3.3 aptのsources.listの設定

sudo curl -sL https://prosody.im/files/prosody-debian-packages.key -o /etc/apt/keyrings/prosody-debian-packages.key

echo "deb [signed-by=/etc/apt/keyrings/prosody-debian-packages.key] http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/prosody-debian-packages.list

sudo apt install lua5.2

curl -sL https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'

echo "deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list

sudo apt update

3.4 FW(ufw)の設定

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 22/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw enable

ファイアウォールのステータスの確認

sudo ufw status verbose

3.5 TLS証明書の準備(オレオレサーバ証明書の発行)
3.5.1 Workフォルダの作成

cd ~
mkdir work

3.5.2 subjectnames.txtの作成

cd work
nano subjectnames.txt
subjectAltName = DNS:meetsv.intra.hoge.jp, IP:192.168.1.101

※DNS:ホスト名.ドメイン, IP:SVのIPアドレスを設定
※IPアドレスは、イントラ向けにするIPアドレスを設定

3.5.3 証明書の発行

openssl genrsa 2048 > meetsv.intra.hoge.jp.key

openssl req -new -key meetsv.intra.hoge.jp.key -subj "/C=JP/ST=Tokyo/O=digital/CN=meetsv.intra.hoge.jp" > meetsv.intra.hoge.jp.csr

openssl x509 -days 3650 -req -extfile subjectnames.txt -signkey meetsv.intra.hoge.jp.key < meetsv.intra.hoge.jp.csr > meetsv.intra.hoge.jp.crt

※/C=JP /ST=都道府県 /O=組織名 /CN=ホスト名.ドメイン

3.5.4 meetsv.intra.hoge.jp.crtの中身をコピーし、ローカルPC内に保存

more meetsv.intra.hoge.jp.crt

ファイル名:meetsv.intra.hoge.jp.crt
※WinSCPでつないで、meetsv.intra.hoge.jp.crtを取得してもOK

3.5.5 証明書のファイルの移動

sudo cp meetsv.intra.hoge.jp.crt /etc/ssl
sudo cp meetsv.intra.hoge.jp.key /etc/ssl

4. Jitsi Meetのインストール

4.1 インストールコマンドの実行

sudo apt install -y jitsi-meet

4.2 ホスト名.ドメインを入力
ex) meetsv.intra.hoge.jp

4.3 SSL証明書の設定方法:OK → 真ん中を選択


4.4 SSL証明書の指定
3.5で作成したオレオレ証明書を指定(手順書通りにしていれば、そのままOK)


4.5 サポートをいるか? → No

4.6 ログの設定(任意の設定)

sudo nano /etc/jitsi/videobridge/logging.properties
- java.util.logging.ConsoleHandler.level = ALL
+ java.util.logging.ConsoleHandler.level = SEVERE

sudo systemctl restart jitsi-videobridge2.service

4.7 コンフィグの追加設定
インターネットに繋がらない環境では以下の設定をする必要があるらしい。

sudo nano /etc/jitsi/videobridge/jvb.conf

videobridge {
+   health {
+        require-valid-address = false
+    }
    http-servers {
        public {
            port = 9090
        }
    }
    websockets {
        enabled = true
        domain = "meetsv.intra.hoge.jp:443"
        tls = true
    }
}

参考
https://blog.goo.ne.jp/nekoyama-3/e/8fa1eeaef36dd2a9c1192e9973e1639a

https://github.com/jitsi/jitsi-meet/issues/14287

4.8 各サービスの再起動
7に記載のコマンドで再起動しておく。

5. 接続設定

5.1 IPアドレスをイントラからアクセスできるものに変更

5.2 時刻の設定:NTPサーバの指定とタイムゾーンの変更

sudo nano /etc/systemd/timesyncd.conf
- #NTP=
+ NTP=192.168.1.2

#外して時刻同期したいSVを指定
sudo timedatectl set-timezone Asia/Tokyo 
sudo systemctl restart systemd-timesyncd.service
systemctl status systemd-timesyncd

5.3 DNSの登録(ホスト名で接続するための設定):イントラのDNSがADの場合

  • ADにリモートして、DNSの設定を開く
  • 前方参照ゾーンにAレコードを追加

5.4 ADで証明書の配布
5.4.1 GPOの作成
[コンピュータの構成] > [ポリシー] > [Windowsの設定] > [セキュリティの設定] > [公開キーのポリシー] > [信頼されたルート証明機関]
右側の空白部分で右クリックして「インポート」を選択

5.4.2 証明書ファイル meetsv.intra.hoge.jp.crt を指定して、取り込む
5.4.3 GPOを配布したいPCのOUに設定したら、PCを再起動

※個別に配布する場合は、証明書のインストールを実行して信頼されたルート証明期間に配置

6. 接続

・EdgeかChromeで[https://meetsv.intra.hoge.jp]にアクセス。

新しくミーティングを開始して、音声とカメラが使えればOK
※マイクとカメラの許可が求められるので、許可すること

※GPOで制御する場合は、以下のポリシーを有効にし、アクセスするURLを設定する

ユーザーの構成 - ポリシー - 管理用テンプレート - MicrosoftEdge - アクセス許可を要求しなくてもビデオキャプチャデバイスにアクセスできるサイト

7. Jitsi Meet関連のサービス

7.1 各サービスの再起動

sudo systemctl restart prosody.service
sudo systemctl restart jicofo.service
sudo systemctl restart jitsi-videobridge2.service
sudo systemctl restart nginx.servic

7.2 各サービスのステータス

systemctl status prosody.service
systemctl status jicofo.service
systemctl status jitsi-videobridge2.service
systemctl status nginx.service

8. Jitsi Meetのアンインストール方法

8.1 サーバにSSHで接続後、下記コマンドを実行

sudo apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2
sudo rm -rf /etc/jitsi/
sudo rm -rf /var/lib/prosody/
sudo rm -rf /var/log/prosody/
sudo rm -rf /usr/share/jicofo/
sudo rm -rf /usr/share/jitsi-*/

Discussion