[筆記] Jitsi Meet server 視訊會議系統

一,準備工作

  1. 準備作業系統 Ubuntu 18.04 以上的 Server (無UI),或 Desktop (有圖形UI,但容量大)。
  2. 安裝並開啟 ssh:Desktop 版本才需要安裝 SSH server,Server 版本已經有了。在命令列輸入 #sudo apt-get install ssh,這樣我們便可從遠端 SSH-client 連線進入作業系統操作了。
  3. 設定系統 DNS:/etc/resolv.conf裡面要新增 DNS 服務器,如 nameserver x.x.x.x,這樣之後我們在更新軟體套件時才不會出錯。或者,修改 /etc/netplan/xxxx-init.yaml 檔案的內容,重新設定網路參數,這樣也行。

二,安裝 Jitsi Meet 服務器

  1. 設定域名:到 DNS 註冊一個機器的域名對應到公網 IP 位址,比如在公網輸入meeting.jitsi.tw 便會指向安裝的服務器。不過,在測試階段,我們可以考慮架設一台本地DNS server (用Windows 2008/2012/2016...的環境),配置一個內部的域名,這樣暫時不用註冊一個公共的域名。
  2. 設定服務器的主機名稱:修改 Linux 系統的 /etc/hostname內容,或者命令列 #sudo hostnamectl set-hostname meeting,這樣機器在網上能被其他電腦用名稱來訪問了。
  3. 開啟防火牆:利用 ufw 命令開啟下列的埠,TCP 80 (http)443 (https)4443 (video/audio)22 (SSH),以及 UDP 10000 (video/audio)。例如命令列 #sudo ufw allow 80/tcp,再把 ufw 啟動。
  4. 安裝過程

         a) 命令列 #sudo apt-add-repository universe:由社群維護的軟體庫新增到系統的更新列表上,基本上 OS 系統已經有預設了。
          b) 安裝 apt-transport-https:這是 HTTP over TLS。
         c) gnupg2:這是 OpenPGP 工具 ,方便檔案加密,如果沒有安裝這工具,Jitsi Meet 將無法下載安裝。
         d) Ngnix: 安裝這是 web server。
         e) 最後, 開始安裝 Jitsi-Meet。把 jitsi-meet 加進軟體庫倉庫裡,命令如下,

             # echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
              # wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | apt-key add 

         f) 直接安裝套件 #sudo apt install jitsi-meet,此時也會一起安裝相關聯的函式庫。過程中,需要填寫 host 域名,如果還沒有註冊 DNS 名,也要填個本機 IP 當域名,如果不填的話 (空白),之後服務器會出錯。

        上面的安裝過程是由系統自動安裝 Jitsi Meet,所以各個模組的安裝與配置都自動產生。如果我們要針對每個模組一一手動安裝,首先必從 Prosody 和 Nginx 模組開始,同時將它們的配置檔案也一併設定好。接著,才能安裝 Jitsi 的模組:Jitsi VideoBridge 和 Jicofo。

三,Jitsi Meet 系統架構

       下圖所示為 Jitsi Meet 系統的架構圖,圖中紅色標示為 Jitsi Meet 的核心 (Web, JVB, Jicofo)。然而 Nginx 和 Prosody 屬於外部的模組,Nginx 是一個 web 服務器,負責顯示 Jitsi Meet 系統的使用者介面;Prosody 是一個 XMPP 服務器,負責系統內部各個模組間訊息的傳遞,模組要先登錄這個 XMPP 服務器,才能進行訊息傳遞,參數設定如下。

圖一:Jitsi Meet 系統方塊圖

        打開 /etc/prosody/conf.avail 底下的配置檔案,XMPP server 给 Jitsi Meet 內部模組用來登錄參數,部分內容如下:(這裡測試時使用的域名為 meeting.jitsi.tw)

-- internal muc component

Component "internal.auth.meeting.jitsi.tw" "muc"

    storage = "none"

    modules_enabled = {

      "ping";

    }

    admins = { "focus@auth.meeting.jitsi.tw", "jvb@auth.meeting.jitsi.tw" }

    muc_room_locking = false

    muc_room_default_public_jids = true

 

VirtualHost "auth.meeting.jitsi.tw"

    ssl = {

        key = "/etc/prosody/certs/auth.meeting.jitsi.tw.key";

        certificate = "/etc/prosody/certs/auth.meeting.jitsi.tw.crt";

    }

    authentication = "internal_plain"

Jitsi Meet服務器運作時所產生的日誌文件會依據每個模組分別存放在機器的 /var/log/nginx/var/log/prosody/var/log/jitsi/ 目錄底下,當我們操作視訊會議時遇到問題,可以先從日誌開始分析。

留言

此網誌的熱門文章

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

[應用] 藍芽 BLE client/server 架構:BLE remote controller

[筆記] Visual Studio 遠端偵錯的設定步驟

[應用] STM32 DFU (Device Firmware Upgrade)

[模組] 無線資料傳輸:nRF905 和 nRF24L01 (以 Arduino 為控制器)