Jitsi server[ジッチ・ミート](Web会議)の インストール (Apache編)

更新日 2020-05-27 (水) 12:02:40

インストールサーバの設定

ハードウエア

  • ESXi仮想マシン
  • CPU 4
  • HDD 32GB
  • メモリ 4GB

OSのインストール

Ubuntu18.04LTS サーバ

インストール時にはOpenSSH Serverをチェックする

以下の内容以外はデフォルトでインストール

Network

  • Subnet: 192.168.0.0/24
  • Address: 192.168.0.176

サーバ名、ログインユーザの登録

  • 「Your name」には名前を入力し(※アカウント名ではないので注意)、
  • 「Your server’s name」には、サーバー名を、
  • 「Pick a username」には、ユーザー名を
  • 「Choose a password」「Confirm your password」には、パスワードを入力し、
  • 「Done」を選択し、Enterキーを押下します。

rootのパスワード作成

$ sudo passwd root
[sudo] password for okada:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

OSの時刻をUTCからJSTに変更

NTP を OFFにする

# timedatectl set-ntp off

Time ZoneをJSTに変更

# timedatectl set-timezone Asia/Tokyo
# timedatectl
                      Local time: Wed 2020-05-27 20:38:19 JST   ←ここ
                  Universal time: Wed 2020-05-27 11:38:19 UTC
                        RTC time: Wed 2020-05-27 11:38:19
                       Time zone: Asia/Tokyo (JST, +0900)   ←ここ
       System clock synchronized: no
systemd-timesyncd.service active: no   ←NTPクライアントOFF
                 RTC in local TZ: no

BIOS時刻を設定

# hwclock --set --date "27 May 2020 11:42"

BIOS時刻をOSに設定

# hwclock --hctosys
# timedatectl
                      Local time: Wed 2020-05-27 11:44:04 JST  ←ここ
                  Universal time: Wed 2020-05-27 02:44:04 UTC
                        RTC time: Wed 2020-05-27 02:44:04
                       Time zone: Asia/Tokyo (JST, +0900)
       System clock synchronized: no
systemd-timesyncd.service active: no
                 RTC in local TZ: no

Ubuntuをjitsi(Web会議)で使用するための設定

ファイアウォールの設定

# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

ファイアウォールでTCPの22,80,443、およびUDPの10000-20000を解放する。

# ufw status
Status: inactive
# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
# ufw allow in ssh
Rule added
Rule added (v6)
# ufw allow in 80/tcp
Rule added
Rule added (v6)
# ufw allow in 443/tcp
Rule added
Rule added (v6)
# ufw allow in 10000:20000/udp
Rule added
Rule added (v6)
# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
10000:20000/udp            ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
10000:20000/udp (v6)       ALLOW       Anywhere (v6)

ファイアウォールでアクセス許可元IPを設定する

# ufw allow from 192.168.0.0/24 to any port ssh
# ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere
[ 4] 10000:20000/udp            ALLOW IN    Anywhere
[ 5] 22/tcp                     ALLOW IN    192.168.0.0/24
[ 6] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 7] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 8] 443/tcp (v6)               ALLOW IN    Anywhere (v6)

不要なものを削除する  

# ufw delete 8

さらに別IPを追加

# ufw allow from YYY.YYY.YYY.YYY to any port ssh
Rule added

確認

# ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 80/tcp                     ALLOW IN    Anywhere
[ 2] 443/tcp                    ALLOW IN    Anywhere
[ 3] 10000:20000/udp            ALLOW IN    Anywhere
[ 4] 22/tcp                     ALLOW IN    XXX.XXX.XXX.XXX/29
[ 5] 22/tcp                     ALLOW IN    192.168.0.0/24
[ 6] 22/tcp                     ALLOW IN    YYY.YYY.YYY.YYY
# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination
ufw-before-logging-input  all  --  0.0.0.0/0            0.0.0.0/0
ufw-before-input  all  --  0.0.0.0/0            0.0.0.0/0

(略)

Chain ufw-user-forward (1 references)
target     prot opt source               destination

Chain ufw-user-input (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            multiport dports  10000:20000

(略)

Chain ufw-user-output (1 references)
target     prot opt source               destination

モジュールをインストールするために鍵を読み込み、リポジトリの登録する。

  • 鍵をダウンロードする。
# wget https://download.jitsi.org/jitsi-key.gpg.key
 --2020-04-02 04:19:34--  https://download.jitsi.org/jitsi-key.gpg.key
Resolving download.jitsi.org (download.jitsi.org)... 130.79.200.22, 2001:660:2402::22
Connecting to download.jitsi.org (download.jitsi.org)|130.79.200.22|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3071 (3.0K) [application/pgp-keys]
Saving to: ‘jitsi-key.gpg.key’

jitsi-key.gpg.key   100%[===================>]   3.00K  --.-KB/s    in  0s

2020-04-02 04:19:35 (55.9 MB/s) - ‘jitsi-key.gpg.key’ saved [3071/3071]

鍵の確認をする。

# gpg jitsi-key.gpg.key
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
pub   rsa4096 2016-06-23 [SC]
      66A9CD0595D6AFA247290D3BEF8B479E2DC1389C
                              ^^^^^^^^^^^^^^^^
uid           Jitsi <dev@jitsi.org>
sub   rsa4096 2016-06-23 [E]
# gpg --search-key dev@jitsi.org
gpg: data source: https://209.244.105.201:443
(1)     Jitsi <dev@jitsi.org>
          4096 bit RSA key EF8B479E2DC1389C, created: 2016-06-23
                           ^^^^^^^^^^^^^^^^
(2)     Jitsi <dev@jitsi.org>
          4096 bit RSA key E57E270828500F4D, created: 2016-06-21, expires: 2021-06-20
Keys 1-2 of 2 for "dev@jitsi.org".  Enter number(s), N)ext, or Q)uit >1
                                                                      ^^^
gpg: key EF8B479E2DC1389C: 2 signatures not checked due to missing keys
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key EF8B479E2DC1389C: public key "Jitsi <dev@jitsi.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1
# gpg --list-sigs dev@jitsi.org
pub   rsa4096 2016-06-23 [SC]
      66A9CD0595D6AFA247290D3BEF8B479E2DC1389C
uid           [ unknown] Jitsi <dev@jitsi.org>
sig 3        D6FF2D8D8030357F 2016-06-23  [User ID not found]
sig          3449EC3AC2EFE8AA 2017-02-06  [User ID not found]
sig 3        EF8B479E2DC1389C 2016-06-23  Jitsi <dev@jitsi.org>
sub   rsa4096 2016-06-23 [E]
sig          EF8B479E2DC1389C 2016-06-23  Jitsi <dev@jitsi.org>
  • 鍵を取得する
# gpg --recv-keys D6FF2D8D8030357F
gpg: key D6FF2D8D8030357F: 3 signatures not checked due to missing keys
gpg: key D6FF2D8D8030357F: public key "Damian Minkov <damencho@jitsi.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1
# gpg --recv-keys 3449EC3AC2EFE8AA
gpg: key 3449EC3AC2EFE8AA: 15 signatures not checked due to missing keys
gpg: key 3449EC3AC2EFE8AA: public key "Ingo Bauersachs <ingo@jitsi.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1
  • 鍵を追加する。
# apt-key add jitsi-key.gpg.key
OK

リポジトリを追加する。

# echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list
Ubuntu18.04の場合のみ追加。OpenJDK-8がインストールできないから 
# echo 'deb http://archive.ubuntu.com/ubuntu bionic universe' > /etc/apt/sources.list.d/openjdk-8.list

システムのアップデートをする。

# apt update
Hit:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:3 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
(略)
Fetched 15.4 MB in 7s (2,098 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
24 packages can be upgraded. Run 'apt list --upgradable' to see them.
# apt upgrade

SSLの証明書について

SSLの証明書はサーバにあるものを使用するのでここでは何もしない

自己証明書を作成でサーバ証明書とサーバ秘密鍵を作成してもよい。


Webサーバのインストール

WebサーバはApacheをインストール(nginxでもよい どちらか一つ)

# apt install apache2
Reading package lists... Done
Building dependency tree
(略)
  • Ubuntu18.04の場合のみ追加。OpenJDK-8をインストール
# apt install openjdk-8-jre-headless
Reading package lists... Done
Building dependency tree
Reading state information... Done
(略)
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
  • インストール確認
# dpkg -l | grep openjdk
ii  openjdk-8-jre-headless:amd64          8u242-b08-0ubuntu3~18.04                         amd64        OpenJDK Java runtime, using Hotspot JIT (headless)

Apacheでsslモジュールの組み込み、設定ファイルの読み込み、再起動

  • SSL モジュールを読み込み
# a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
  systemctl restart apache2
  • 設定を読み込み(証明書変更で必要かも)
# a2ensite default-ssl
Enabling site default-ssl.
To activate the new configuration, you need to run:
  systemctl reload apache2
  • Apacheの再起動
# service apache2 restart
  • モジュールの確認
# apachectl -M
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, 
using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Loaded Modules:
 core_module (static)
 so_module (static)
(略)
 socache_shmcb_module (shared)
 ssl_module (shared)       ←  ここ
 status_module (shared)

ホスト名の確認と変更

ホスト名は/etc/hostnameに、ドメイン名は/etc/hostsに記載する

/etc/hosts

127.0.0.1 localhost meeting meeting.hoge-c.com
# 127.0.1.1 meeting    ←127.0.1.1はバグみたいなのでコメントアウト

/etc/hostname

vm-jitsi

sslの証明書の場所指定

/etc/apache2/sites-available/default-ssl.conf


参考

Apache 2.4.8以降 Apache 2.4.8 から中間CA証明書を指定するSSLCertificateChainFile ディレクティブが廃止されました。中間CA証明書、およびクロスルート証明書(オプション)はサーバ証明書と一つの証明書ファイルとしてまとめて、SSLCertificateFileディレクティブに指定してください。


jitsiのインストール

apt install jitsi-meet
(略)
After this operation, 108 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 lua-expat amd64 1.3.0-4 [12.8 kB]
(略)

      lqqqqqqqqqqqqqqu Configuring jitsi-videobridge2 tqqqqqqqqqqqqqqqk
      x The value for the hostname that is set in Jitsi Videobridge   x
      x installation.                                                 x
      x                                                               x
      x The hostname of the current installation:                     x
      x                                                               x
      x 192.168.0.176________________________________________________ x
      x                                                               x
      x                            <Ok>                               x
      x                                                               x
      mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

サーバ名があるときは「hoge.oge.net」のように入れる

  • Configuring jitsi-meet-web-config
  SSL certificate for the Jitsi Meet instance  

  Generate a new self-signed certificate (You will later get a chance to obt
  I want to use my own certificate  ← こちらを選択
  • Configuring jitsi-meet-web-config
  Full local server path to the SSL key file: ←SSLCertificateKeyFile
  /etc/ssl/private/ssl-cert-snakeoil.key  ←Keyファイルのパス
  Full local server path to the SSL certificate file: ←SSLCertificateFile
  /etc/ssl/certs/ssl-cert-snakeoil.pem    ←証明書ファイルのパス

(略)

done.
done.
Setting up jitsi-meet (2.0.4384-1) ...
Processing triggers for systemd (237-3ubuntu10.38) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...

インストール完了後再起動

アクセス先

https://192.168.0.176/

にChrome(IEはダメ?)でアクセス。(Jitsiが起動するまでApacheの画面が表示する場合がある.少し待つとアクセスできる)

新しいミーテイングを開始に適当名前を入れて「GO」をクリックする 同じ名前の人が会話できる

初期起動4.png

初期起動2.png

  • 会議室にパスワードが作成できる

パスワード作成1.png

パスワード作成2.png

Webページ内容は以下のフォルダ

/usr/share/jitsi-meet

アンインストール

# apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2

# apt autoremove

# reboot

ユーザで会議室の作成にアクセス制限

会議室のホストになることのできるユーザを登録できるようにする。

動作は以下のような感じ。

システム再起動までは同じPCで作業するときは以下のようになる

  • 初めて新しい会議室名を入れて「Go」したときにIDとパスワードが必要になる。ホストが会議室に入ると二人目以降は自由に入ることが出来る。
  • 2つ目以降の会議室をつくるときはパスワードは不要になる
  • ホストが会議室を出ると他のユーザは入ることができない。但し、ホストが退出時に入っているユーザは会議室に残ることが出来る。

(ホスト:一番初めにその会議室に入ったユーザ)

設定

/etc/prosody/conf.avail/meeting.hoge-c.com.cfg.lua

VirtualHost "meeting.hoge-c.com"
        -- enabled = false -- Remove this line to enable this host
        -- 認証方法変更 (Edit by JE2ISM)
        -- authentication = "anonymous"  ←コメントアウト
        authentication = "internal_plain" ←追加(変更)
        -- Properties below are modified by jitsi-meet-tokens package config

(略)

Component "conferenceduration.meeting.hoge-c.com" "conference_duration_com ponent"
    muc_component = "conference.meeting.hoge-c.com"

	
(ファイルの最後に以下を追加)
-- Edit By JE2ISM
VirtualHost "guest.meeting.hoge-c.com"
        authentication = "anonymous"
        modules_enabled = {            ←ここはNATを介して接続したとき3ユーザ目がloginしたとき画像が切れるのを防ぐため
               "turncredentials";       ←ここはNATを介して接続したとき3ユーザ目がloginしたとき画像が切れるのを防ぐため
        }         ←ここはNATを介して接続したとき3ユーザ目がloginしたとき画像が切れるのを防ぐため

        c2s_require_encryption = false

注;「ここはNATを介して接続したとき3ユーザ目がloginしたとき画像が切れるのを防ぐため」の3行が無くても動作するサーバもある。2台のサーバに同じようにJitsi Meetをインストールしたが必要だったのは1台だけ。原因不明

/etc/jitsi/meet/meeting.hoge-c.com-config.js

    hosts: {
        // XMPP domain.
        domain: 'meeting.hoge-c.com',
        // Edit By JE2ISM
        anonymousdomain: 'guest.meeting.hoge-c.com',  ←追加
        // When using authentication, domain for guest users.

/etc/jitsi/jicofo/sip-communicator.properties

org.jitsi.jicofo.auth.URL=XMPP:meeting.hoge-c.com ←最後の行に追加

OS再起動または以下のコマンド実行

# systemctl restart prosody
# systemctl restart jitsi-videobridge2
# systemctl restart jicofo

パスワードuser1.png

パスワードuser2.png

パスワード設定参考


prosodyのステータス表示のエラー

ステータス表示で以下のエラーが出るが問題内容だ。

# systemctl status prosody
(略)
Apr 09 04:46:08 meeting prosody[1355]: portmanager: Error binding encrypted p ort for https: No key present in SSL/TLS configuration for https port 5281
Apr 09 04:46:08 meeting prosody[1355]: portmanager: Error binding encrypted p ort for https: No key present in SSL/TLS configuration for https port 5281

これは問題ではないので無視できます。

https://community.jitsi.org/t/error-on-prosody-without-any-reasons-no-key-present-in-ssl-tls-configuration-for-https-port-5281/17124


ユーザ追加

# prosodyctl adduser okada@meeting.hoge-c.com
Enter new password:
Retype new password:

ユーザリスト表示

# ls -l /var/lib/prosody/*/accounts/*
-rw-r----- 1 prosody prosody 40 Apr  8 05:38 /var/lib/prosody/auth%2emeeting%2ehoge%2dc%2ecom/accounts/focus.dat
-rw-r----- 1 prosody prosody 40 Apr  8 05:38 /var/lib/prosody/auth%2emeeting%2ehoge%2dc%2ecom/accounts/jvb.dat
-rw-r----- 1 prosody prosody 41 Apr  9 02:36 /var/lib/prosody/meeting%2ehoge%2dc%2ecom/accounts/okada.dat
-rw-r----- 1 prosody prosody 35 Apr  9 04:23 /var/lib/prosody/meeting%2ehoge%2dc%2ecom/accounts/test.dat
-rw-r----- 1 prosody prosody 39 Apr  9 02:41 /var/lib/prosody/meeting%2ehoge%2dc%2ecom/accounts/yumi.dat

ユーザ削除

同一PCにおいて ユーザを削除してもjitsiシステムを再起動するまでそのユーザは会議室のホストになることが出来る。PCを再起動しても削除ユーザはホストになれる。

「systemctl restart jicofo」でjicofoサービスを再起動すると削除ユーザが利用できなくなる

# prosodyctl deluser test@meeting.hoge-c.com
# ls -l /var/lib/prosody/*/accounts/*
-rw-r----- 1 prosody prosody 40 Apr  8 05:38 /var/lib/prosody/auth%2emeeting%2ehoge%2dc%2ecom/accounts/focus.dat
-rw-r----- 1 prosody prosody 40 Apr  8 05:38 /var/lib/prosody/auth%2emeeting%2ehoge%2dc%2ecom/accounts/jvb.dat
-rw-r----- 1 prosody prosody 41 Apr  9 02:36 /var/lib/prosody/meeting%2ehoge%2dc%2ecom/accounts/okada.dat
-rw-r----- 1 prosody prosody 39 Apr  9 02:41 /var/lib/prosody/meeting%2ehoge%2dc%2ecom/accounts/yumi.dat

パスワード変更

# prosodyctl passwd test@meeting.hoge-c.com

オープニングメッセージの変更

/usr/share/jitsi-meet/lang/main-ja.json

        "appDescription": "チーム全体とビデオチャットしましょう。あなたが知っている皆さんを招待してください。{{app}}は完全に暗号化された100%オープンソースの 
(略)

"title": "安全で、機能豊富で、完全に無料のビデオ会議"
    },

デフォルトは日本語表示

/etc/jitsi/meet/meeting.hoge-c.com-config.js

    // Default language for the user interface.
    // defaultLanguage: 'en',
    // Edit by JE2ISM
       defaultLanguage: 'ja',

以下のファイルを修正

/usr/share/jitsi-meet/lang/countries-ja.json

    "IT": "イタリア",
   "JM": "ジャマイカ",
   "JA": "日本",         ←ここをJPからJAに変更
   "JO": "ヨルダン",
   "KZ": "カザフスタン",

なんで間違えているのだろ?

Chormeで表示するのはChormeのキャシュを削除後表示すること。

参考

テスト 会議室:https://meet.jit.si


Ubuntuの操作(参考)

Ubuntuでファイアウォールの操作

表示

# ufw status numbered

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere
[ 4] 10000:20000/udp            ALLOW IN    Anywhere
[ 5] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 7] 443/tcp (v6)               ALLOW IN    Anywhere (v6)
[ 8] 10000:20000/udp (v6)       ALLOW IN    Anywhere (v6)
[ 9] 443/udp (v6)               DENY IN     Anywhere (v6)

削除

# ufw delete 9

サービス表示

# service --status-all
 [ + ]  irqbalance
 [ + ]  iscsid
 [ + ]  jicofo
 [ + ]  jitsi-videobridge2
 [ - ]  keyboard-setup.sh

jvb.logのエラー

/var/log/jits/jvb.log

SEVERE: [18] Health.doRun#300: Health check failed in 0ms:

このエラーが止まらない

Chromeトラブル対応

「では hsts が使用されているため、現在アクセスできません」のメッセージの対応

以下でアクセスして

chrome://net-internals/#hsts

Delete domainで「meeting.hoge-c.com」を指定して 削除する



添付ファイル: file初期起動4.png 14件 [詳細] file初期起動2.png 16件 [詳細] fileパスワードuser2.png 15件 [詳細] fileパスワードuser1.png 17件 [詳細] fileパスワード作成2.png 15件 [詳細] fileパスワード作成1.png 22件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-05-27 (水) 12:02:40 (3d)