#author("2022-10-26T16:23:19+09:00","default:okada","okada")
#author("2022-10-27T07:28:45+09:00","default:okada","okada")
*JitsiMeet Ubuntu22.04LTS [#kf968178]

RIGHT:更新日&lastmod();
RIGHT:作成日:2022年10月26日

iPadからPCに画像が送れないという現象が出たので、この機会にOSのバージョンアップも兼ねてインストールした。新規インストールも問題の現象は変わらいなが、[[こちら対応と同じ内容>turboLinux_White Box Enterprise Linux_Fedora Core_Red Hat Memo/Jitsi-Meet4]]でトラブルは回避できた。
iPadからPCに画像が送れないという現象が出たので、この機会にOSのバージョンアップも兼ねてインストールした。新規インストールも問題の現象は変わらいなが、[[こちら対応と同じ内容>turboLinux_White Box Enterprise Linux_Fedora Core_Red Hat Memo/Jitsi-Meet4]]でトラブルは回避できた。&color(red){(トラブルはiOS,AndroidのJitsiMeetのバージョンが22.5.1)};

**インストール環境 [#x2e5e9b6]

-Ubuntu22.04LTS(ISO:ubuntu-22.04.1-live-server-amd64.iso)

-jitsi-meet:2.0.7882

**Ubuntuのインストール [#r182d018]

インストール開始時言語は「English」を選択

&ref("./ubuntu-inst1.png");

&ref("./ubuntu-inst2.png");

-GWはWAN側だけ指定、LAN側は空白

&ref("./ubuntu-inst3.png");

&ref("./ubuntu-inst4.png");

-Proxyは空欄

&ref("./ubuntu-inst5.png");

-Mirror address、ストレージはデフォルト

&ref("./ubuntu-inst6.png");

&ref("./ubuntu-inst7.png");

&ref("./ubuntu-inst8.png");

&ref("./ubuntu-inst9.png");

-sshサーバをインストール(Enterで「X」が入る)

&ref("./ubuntu-inst10.png");

-追加パッケージはなし

&ref("./ubuntu-inst11.png");

-再起動 

-インストール開始

**Ubuntuの設定 [#dd4f4f42]

***rootのパスワード設定 [#kdad5a71]

 $ sudo passwd root

***ipv6停止 [#n483e638]

-/etc/default/grub

 RUB_TIMEOUT_STYLE=hidden
 GRUB_TIMEOUT=0
 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
 GRUB_CMDLINE_LINUX_DEFAULT=""
 GRUB_CMDLINE_LINUX="ipv6.disable=1"  ←ipv6.disable=1を追加

-grubのアップデート

 # update-grub
 Sourcing file `/etc/default/grub'
 Sourcing file `/etc/default/grub.d/init-select.cfg'
 Generating grub configuration file ...
 Found linux image: /boot/vmlinuz-5.4.0-65-generic
 Found initrd image: /boot/initrd.img-5.4.0-65-generic
 done

-再起動

 # reboot

-以下のコマンドで何も表示しなことを確認

 # ip -6 a

***NTP クライアントの設定 [#p407b916]

''設定ファイル''

-/etc/systemd/timesyncd.conf

 #
 # See timesyncd.conf(5) for details.
 
 [Time]
 #NTP=
 NTP=ntp.nict.jp  ← NTPサーバ追加
 #FallbackNTP=ntp.ubuntu.com
 #RootDistanceMaxSec=5

-NTPサービスの再起動と確認

 # systemctl restart systemd-timesyncd
 # systemctl status systemd-timesyncd
 ● systemd-timesyncd.service - Network Time Synchronization
      Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; ve>
      Active: active (running) since Mon 2022-10-24 05:37:44 UTC; 9s ago
        Docs: man:systemd-timesyncd.service(8)
    Main PID: 14614 (systemd-timesyn)
      Status: "Initial synchronization to time server 133.243.238.243:123 (ntp.n>
       Tasks: 2 (limit: 6985)
      Memory: 1.3M
         CPU: 109ms
      CGroup: /system.slice/systemd-timesyncd.service
              mq14614 /lib/systemd/systemd-timesyncd


***Time ZoneをJSTに変更 [#e1c61a04]

-現在のZoneの確認

 # timedatectl
                Local time: Mon 2022-10-24 05:39:38 UTC
            Universal time: Mon 2022-10-24 05:39:38 UTC
                  RTC time: Mon 2022-10-24 05:39:38
                 Time zone: Etc/UTC (UTC, +0000)
 System clock synchronized: yes
               NTP service: active
           RTC in local TZ: no

-JSTに変更

 #  timedatectl set-timezone Asia/Tokyo

-変更を確認

 # timedatectl
                Local time: Mon 2022-10-24 14:41:01 JST    ←ここ
            Universal time: Mon 2022-10-24 05:41:01 UTC
                  RTC time: Mon 2022-10-24 05:41:00
                 Time zone: Asia/Tokyo (JST, +0900)        ←ここ
 System clock synchronized: yes
               NTP service: active
           RTC in local TZ: no

***ファイアウォールの設定 [#x39b78c4]

-Iptableが起動していない確認

 # 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
 # ufw allow in 80/tcp
 Rule added
 # ufw allow in 443/tcp
 Rule added
 # ufw allow in 10000:20000/udp
 Rule added

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

 # ufw allow from 192.168.0.0/24 to any port ssh
 Rule added

-ファイアウォールの確認

 # 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                     ALLOW       192.168.0.0/24

***jitsimeetのリポジトリを登録 [#mec47d99]

 # cd ~okada
 # wget https://download.jitsi.org/jitsi-key.gpg.key
 --2022-10-24 14:58:11--  https://download.jitsi.org/jitsi-key.gpg.key
 Resolving download.jitsi.org (download.jitsi.org)... 34.209.97.49, 35.161.96.31, 2600:1f14:5eb:f801:730b:cd02:ffec:70cb, ...
 Connecting to download.jitsi.org (download.jitsi.org)|34.209.97.49|:443... connected.
 HTTP request sent, awaiting response... 200 OK
 Length: 3114 (3.0K) [application/octet-stream]
 Saving to: ‘jitsi-key.gpg.key’
 
 jitsi-key.gpg.key   100%[===================>]   3.04K  --.-KB/s    in 0s
 
 2022-10-24 14:58:12 (759 MB/s) - ‘jitsi-key.gpg.key’ saved [3114/3114]

-Keyのダウンロードを確認

 # ls
 jitsi-key.gpg.key

-Keyの登録

 # apt-key add jitsi-key.gpg.key
 Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
 OK

-リポジトリ追加

/etc/apt/sources.list.d/jitsi-stable.listを作成し、以下の1行を記入

 deb https://download.jitsi.org stable/


 # apt update
 # apt upgrade

以下の画面が表示されたら「OK」を選択する

&ref("./ubuntu-update.png");

Ubuntu 22.04 LTS には needrestart というパッケージが入っていて、パッケージの更新のときに「Daemons using outdated libraries」というダイアログに「Which services should be restarted?」という質問で再起動対象を選ぶ状態になることがあります。

-上記の確認をなくす方法(未確認)

 # echo "\$nrconf{restart} = 'a';" | sudo tee /etc/needrestart/conf.d/50local.conf
 #cat /etc/needrestart/conf.d/50local.conf
 $nrconf{restart} = 'a';

**nginxインストール [#je4109ce]

以下でインストールは出来るが起動に失敗する。ipv6を停止したのが原因。ipv6関連をコメントアウトすることで対応する。

 # apt install nginx
 (略)
 invoke-rc.d: initscript nginx, action "start" failed.
 × nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Active: failed (Result: exit-code) since Mon 2022-10-24 15:07:00 JST; 7ms ago
      Docs: man:nginx(8)
     Process: 15889 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process o n; (code=exited, status=1/FAILURE)
      CPU: 15ms
 
 Oct 24 15:07:00 vmmeeting systemd[1]: Starting A high performance web server and a reverse proxy server...
 Oct 24 15:07:00 vmmeeting nginx[15889]: nginx: [emerg] socket() [::]:80 failed (97: Unknown error)  ← このあたありが原因
 Oct 24 15:07:00 vmmeeting nginx[15889]: nginx: configuration file /etc/nginx/nginx.conf test failed
 
 (最終行)
 
 dpkg: error processing package nginx (--configure):
  dependency problems - leaving unconfigured
 Processing triggers for ufw (0.36.1-4build1) ...
 No apport report written because the error message indicates its a followup error from a previous failure.
                           Processing triggers for man-db (2.10.2-1) ...
 Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
 Errors were encountered while processing:
  nginx-core
  nginx
 needrestart is being skipped since dpkg has failed
 E: Sub-process /usr/bin/dpkg returned an error code (1)

&color(red){''エラー対応''};

IPv6を停止したため発生したようなのでIPv6の部分をコメントアウト

-/etc/nginx/sites-available/default

 server {
         listen 80 default_server;
 ##      listen [::]:80 default_server;  ←コメントアウト
 
         # SSL configuration
 (略)

***nginxを起動 [#oa2b1b80]

 # systemctl start nginx
 root@vmmeeting:/etc/nginx/sites-available# systemctl status nginx
 ● nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Active: active (running) since Mon 2022-10-24 15:17:43 JST; 3s ago
        Docs: man:nginx(8)  ←起動確認
     Process: 16050 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
     Process: 16051 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Main PID: 16052 (nginx)
       Tasks: 9 (limit: 6985)
 (略)

**JDKのインストール [#fd676940]

 # apt install -y openjdk-8-jre-headless

***確認 [#a14f970d]

 # dpkg -l | grep openjdk
 ii  openjdk-11-jre-headless:amd64         11.0.16+8-0ubuntu1~22.04                amd64        OpenJDK Java runtime, using Hotspot JIT (headless)
 ii  openjdk-8-jre-headless:amd64          8u342-b07-0ubuntu1~22.04                amd64        OpenJDK Java runtime, using Hotspot JIT (headless)

**Jitsi-Meetのインストール [#l821117c]

 # apt install -y jitsi-meet

&ref("./jitsimeet-inst1.png");

&ref("./jitsimeet-inst2.png");

''「Let's Encrrypt certificates」を選択

&ref("./jitsimeet-inst3.png");

&ref("./jitsimeet-inst4.png");

&ref("./jitsimeet-inst5.png");

&ref("./jitsimeet-inst6.png");

''Noを選択''

[ダイヤルイン サポートを会議に簡単に追加できます。~
無料の JaaS (Jitsi as a Service) アカウントを作成する許可を当社に与える必要があります。~
Jitsi ミーティングにテレフォニーを追加することに興味がありますか?]

***nginxのipv6のPort80, 443をコメントアウト [#t6455399]

-/etc/nginx/sites-available/meet.ism21.net.conf

 server {
     listen 80;
 ##    listen [::]:80;  ←ここ
     server_name meet.ism21.net;
 
 server {
     listen 443 ssl;
 ##    listen [::]:443 ssl;  ←ここ
     server_name meet.ism21.net;

-nginxの再起動と確認

 # systemctl restart nginx
 # systemctl status nginx
 ● nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:> 
      Active: active (running) since Tue 2022-10-25 11:42:23 JST; 29s ago
        Docs: man:nginx(8)
 (略)

***jitsimeetのインストール確認 [#ob911761]

 # apt list --installed | grep jitsi
 
 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

 jitsi-meet-prosody/stable,now 1.0.6644-1 all [installed,automatic]
 jitsi-meet-web-config/stable,now 1.0.6644-1 all [installed,automatic]
 jitsi-meet-web/stable,now 1.0.6644-1 all [installed,automatic]
 jitsi-meet/stable,now 2.0.7882-1 all [installed]
 jitsi-videobridge2/stable,now 2.2-45-ge8b20f06-1 all [installed,automatic]
 lua-basexx/stable,now 0.4.1-jitsi1 all [installed,automatic]
 lua-cjson/stable,now 2.1.0.10-jitsi1 amd64 [installed,automatic]

''jitsi-meetインストール完了''

**Let’s Encryptの証明書の取得 [#f8959e84]

サーバをインターネットからport80とport443でアクセス可能にしておく。


 # cd /usr/share/jitsi-meet/scripts
 # ./install-letsencrypt-cert.sh
 -------------------------------------------------------------------------
 This script will:
 - Need a working DNS record pointing to this machine(for hostname )
 - Install additional dependencies in order to request Let’s Encrypt certificate (acme.sh)
 - Configure and reload nginx or apache2, whichever is used
 - Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks
 - Configure renew of certificate
 
 (略)
 
 [Tue Oct 25 12:02:23 PM JST 2022] Installing key to: /etc/jitsi/meet/meet.ism21.net.key
 [Tue Oct 25 12:02:23 PM JST 2022] Installing full chain to: /etc/jitsi/meet/meet.ism21.net.crt
 [Tue Oct 25 12:02:23 PM JST 2022] Run reload cmd: systemctl force-reload nginx.service && /usr/share/jitsi-meet/scripts/coturn-le-update.sh meet.ism21.net
 [Tue Oct 25 12:02:23 PM JST 2022] Reload success

***証明書のフィンガープリントの確認 [#n983f05a]

以下のファインガープリントとブラウザの証明書と一致する。

 # openssl x509 -sha1 -fingerprint -noout -in meet.ism21.net.crt
 sha1 Fingerprint=B2:02:31:C5:40:A0:64:56:BB:9F:D0:8D:BE:72:9D:6C:22:45:7B:86

 # openssl x509 -sha256 -fingerprint -noout -in meet.ism21.net.crt
 sha256 Fingerprint=0A:F6:50:3D:52:43:72:65:C2:B9:7A:9A:B4:AD:F9:98:E8:3E:68:B4:EC:5D:65:CB:94:4E:CB:47:DA:D5:5B:60

&ref("./fingerprint.png");

**証明書自動更新のためcertbotのインストール [#f578ea96]

Jitsi-meetのインストールで証明書は取得しているので、自動更新、マニュアルでの更新に使用するためインストールする。(Let's Encrypt(無料のSSL証明書)の証明書を取得してインストールするツール)

***インストール [#ud1f0af8]

 # apt -y install certbot
 Reading package lists... Done
 Building dependency tree... Done
 Reading state information... Done
 (略)

-インストール後certbot.timerが起動してるか確認

 # systemctl status certbot.timer 
 ● certbot.timer - Run certbot twice daily
      Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset:>
      Active: active (waiting) since Wed 2022-10-26 11:02:34 JST; 59s ago
     Trigger: Wed 2022-10-26 14:52:34 JST; 3h 49min left
    Triggers: ● certbot.service
 
 Oct 26 11:02:34 vmmeeting systemd[1]: Started Run certbot twice daily

インストールした certbotパッケージは、systemdタイマーを追加することでこれを処理する。 このスクリプトは1日に2回実行され、有効期限の30日以内にある証明書を自動更新する。

***次回実行時間の確認 [#iff07611]

-Wed 2022-10-26 14:52:34 JST に実行 3h 47min 後

 # systemctl list-timers
 NEXT                        LEFT          LAST                        PASSED    UNIT                           ACTIVATES
 Wed 2022-10-26 12:11:45 JST 1h 6min left  Tue 2022-10-25 14:23:46 JST 20h ago   motd-news.timer                motd-news.service
 Wed 2022-10-26 12:59:51 JST 1h 54min left Tue 2022-10-25 10:23:48 JST 24h ago   fwupd-refresh.timer            fwupd-refresh.service
 Wed 2022-10-26 14:52:34 JST 3h 47min left n/a                         n/a       certbot.timer                  certbot.service   ←ここ
 Wed 2022-10-26 14:58:26 JST 3h 52min left Tue 2022-10-25 10:23:48 JST 24h ago   apt-daily.timer                apt-daily.service
 Wed 2022-10-26 17:34:50 JST 6h left       Wed 2022-10-26 10:55:54 JST 9min ago  ua-timer.timer                 ua-timer.service
 Wed 2022-10-26 21:45:36 JST 10h left      Tue 2022-10-25 10:23:48 JST 24h ago   man-db.timer                   man-db.service
(略)

**WEB会議の作成できるユーザーをID、Passwordで制限する設定 [#qb6b52e2]

-/etc/prosody/conf.avail/meet.ism21.net.cfg.lua

VirtualHost "meet.ism21.net"
    -- authentication = "jitsi-anonymous" -- do not delete me  ←コメントアウト
    authentication = "internal_plain"   ←追加
    -- Properties below are modified by jitsi-meet-tokens package config
    -- and authentication above is switched to "token"
 
 (略)
 
     main_muc = "conference.meet.ism21.net"
     -- muc_lobby_whitelist = { "recorder.meet.ism21.net" } -- Here we can whitelist jibri to enter lobby enabled rooms
 
 ---Add to JE2ISM ----
 VirtualHost "guest.meet.ism21.net"
        authentication = "anonymous"
        c2s_require_encryption = false
 ---ここまで----------
 
 
 Component "conference.meet.ism21.net" "muc"
    restrict_room_creation = true
 
 
 (略)
 
 Component "metadata.meet.ism21.net" "room_metadata_component"
     muc_component = "conference.meet.ism21.net"
     breakout_rooms_component = "breakout.meet.ism21.net"
 
 [最終行に追加]
 
 -- Edit By JE2ISM
 VirtualHost "guest.meet.ism21.net"
          authentication = "anonymous"
          c2s_require_encryption = falseroot@vmmeeting:/etc/jitsi/jicofo

-/etc/jitsi/meet/meet.ism21.net-config.js

     hosts: {
         // XMPP domain.
         domain: 'meet.ism21.net',
        // Add by JE2ISM
          anonymousdomain: 'guest.meet.ism21.net',
 
         // When using authentication, domain for guest users.
         // anonymousdomain: 'guest.example.com',

以下のファイルが無いときは作成し、存在するときは最終行に追加する

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

 org.jitsi.jicofo.auth.URL=XMPP:meet.ism21.net

**ユーザ登録方法 [#h0a09954]

 # prosodyctl adduser okada@meet.ism21.net
 Enter new password:
 Retype new password:


**jitsiMeetサービス再起動 [#b211f188]

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

''ブラウザ、スマホで確認''

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS