Page tree
Skip to end of metadata
Go to start of metadata

Yêu cầu:

Đã cài đặt Jitsi. Cấu hình xong SSL Let's Enscrypt. 

Domain sử dụng trong bài viết: https://meet.workfromhome.vn/

Mục lục:

Bước 1: Nâng cấp Version Prosody

Lưu ý:

  • Mặc định Version cài đặt Jitsi là 0.10.0
  • Để giới hạn được số người truy cập mỗi phòng ta cần upgrade lên version 0.11.5

Câu lệnh kiểm tra Version:

prosodyctl about

Output:

Prosody 0.10.0

# Prosody directories
Data directory:     /var/lib/prosody
Config directory:   /etc/prosody
Source directory:   /usr/lib/prosody
Plugin directories:
  /usr/share/jitsi-meet/prosody-plugins/
  /usr/lib/prosody/modules/


# Lua environment
Lua version:                    Lua 5.1

Lua module search paths:
  /usr/lib/prosody/?.lua
  /usr/local/share/lua/5.1/?.lua
  /usr/local/share/lua/5.1/?/init.lua
  /usr/local/lib/lua/5.1/?.lua
  /usr/local/lib/lua/5.1/?/init.lua
  /usr/share/lua/5.1/?.lua
  /usr/share/lua/5.1/?/init.lua

Lua C module search paths:
  /usr/lib/prosody/?.so
  /usr/local/lib/lua/5.1/?.so
  /usr/lib/x86_64-linux-gnu/lua/5.1/?.so
  /usr/lib/lua/5.1/?.so
  /usr/local/lib/lua/5.1/loadall.so

LuaRocks:               Not installed

# Lua module versions
lfs:            LuaFileSystem 1.6.3
libevent:       2.1.8-stable
luaevent:       0.4.4
lxp:            LuaExpat 1.3.0
socket:         LuaSocket 3.0-rc1
ssl:            0.6

Chỉ định repo chứa phiên bản

echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
sudo apt-get update -y

Kiểm tra phiên bản hiện tại và phien bản có sẵn để update

 apt-cache policy prosody

Output:

prosody:
  Installed: 0.10.0-1build1
  Candidate: 0.11.5-1~bionic6
  Version table:
     0.11.5-1~bionic6 500
        500 http://packages.prosody.im/debian bionic/main amd64 Packages
 *** 0.10.0-1build1 500
        500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
        100 /var/lib/dpkg/status

Nâng cấp Version

sudo apt-get update -y
sudo apt-get install prosody -y

Kiểm tra lại

apt-cache policy prosody

Output:

prosody:
  Installed: 0.11.5-1~bionic6
  Candidate: 0.11.5-1~bionic6
  Version table:
 *** 0.11.5-1~bionic6 500
        500 http://packages.prosody.im/debian bionic/main amd64 Packages
        100 /var/lib/dpkg/status
     0.10.0-1build1 500
        500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages

Bước 2: Cấu hình Prosody

Mặc định sau khi nâng cấp Prosody sẽ bỏ qua hết các Virtualhost của bản trước. Vì vậy ta cần thêm lại giá trị này

Truy cập /etc/prosody/prosody.cfg.lua, thêm vào cuối file

...
...

---Set up an external component (default component port is 5347)
--
-- External components allow adding various services, such as gateways/
-- transports to other networks like ICQ, MSN and Yahoo. For more info
-- see: https://prosody.im/doc/components#adding_an_external_component
--
--Component "gateway.example.com"
--      component_secret = "password"

Include "conf.d/*.cfg.lua"

LƯU Ý:

  • Chỉnh sửa storage = None sang storage = "memory" tại Domain hiện tại đang sử dụng (Nếu có)

Cách kiểm tra

grep -Rin 'storage' /etc/prosody/conf.avail

Kết quả

root@jitsimeet:~# grep -Rin 'storage' /etc/prosody/conf.avail
/etc/prosody/conf.avail/meet.workfromhome.vn.cfg.lua:46:    storage = "none"
/etc/prosody/conf.avail/meet.workfromhome.vn.cfg.lua:58:    storage = "none"

Sửa file /etc/prosody/conf.avail/meet.workfromhome.vn.cfg.lua

Tìm đến dòng 46 và 58 tại các phần Component "conference.meet.workfromhome.vn" "muc" và Component "internal.auth.meet.workfromhome.vn" "muc"

Kết quả sau khi sửa

root@jitsimeet:~# grep -Rin 'storage' /etc/prosody/conf.avail
/etc/prosody/conf.avail/meet.workfromhome.vn.cfg.lua:46:    storage = "memory"
/etc/prosody/conf.avail/meet.workfromhome.vn.cfg.lua:58:    storage = "memory"

Khởi động lại prosody

/etc/init.d/prosody restart

Kiểm tra

root@jitsimeet:~# ss -atun | grep 5347
tcp   LISTEN  0        128              127.0.0.1:5347           0.0.0.0:*
tcp   ESTAB   0        0                127.0.0.1:5347         127.0.0.1:59448
tcp   ESTAB   0        0                127.0.0.1:59448        127.0.0.1:5347

Kiểm tra lại phòng họp, tạo cuộc họp và test khi có người truy cập

Bước 3: Cấu hình giới hạn User trên mỗi phòng

Ta sẽ sử dụng module mod_muc_max_occupants để giới hạn user truy cập trên phòng

Lưu ý: Nếu cài Jitsi từ APT, module này đã có sẵn trong thư mục /usr/share/jitsi-meet/prosody-plugins/

Kiểm tra:

ll -lh /usr/share/jitsi-meet/prosody-plugins/mod_muc_*

Output

-rw-r--r-- 1 root root  462 Feb 26  2017 /usr/share/jitsi-meet/prosody-plugins/mod_muc_allowners.lua
-rw-r--r-- 1 root root 4.0K Jul 17  2018 /usr/share/jitsi-meet/prosody-plugins/mod_muc_call.lua
-rw-r--r-- 1 root root 6.3K Dec 10 17:00 /usr/share/jitsi-meet/prosody-plugins/mod_muc_domain_mapper.lua
-rw-r--r-- 1 root root 2.3K Apr  1 05:44 /usr/share/jitsi-meet/prosody-plugins/mod_muc_max_occupants.lua
-rw-r--r-- 1 root root 1.1K Nov 26 17:51 /usr/share/jitsi-meet/prosody-plugins/mod_muc_meeting_id.lua
-rw-r--r-- 1 root root  11K Jan 24 02:51 /usr/share/jitsi-meet/prosody-plugins/mod_muc_poltergeist.lua
-rw-r--r-- 1 root root 6.1K Jan 24 02:51 /usr/share/jitsi-meet/prosody-plugins/mod_muc_size.lua

Cấu hình Domain giới hạn số lượng truy cập /etc/prosody/conf.avail/meet.workfromhome.vn.cfg.lua. Trong bài giới hạn tối đa 5 người

Lưu ý:

  • Thêm mới giá trị vào Component "conference.meet.workfromhome.vn" "muc".
  • muc_max_occupants bằng số lượng người tham gia tối đa trên mỗi phòng. Trong bài giới hạn tối đa 2 người
  • muc_access_whitelist domain được phép truy cập kể cả khi phòng đã tới giới hạn

Cấu hình mẫu:

Component "conference.meet.workfromhome.vn" "muc"
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        -- "token_verification";
        "muc_max_occupants";
    }
    admins = { "focus@auth.meet.workfromhome.vn" }
    muc_room_locking = false
    muc_room_default_public_jids = true
    muc_access_whitelist = {"auth.meet.workfromhome.vn"}
    muc_max_occupants = 2

File cấu hình mẫu:

root@jitsimeet:~# cat /etc/prosody/conf.avail/meet.workfromhome.vn.cfg.lua
plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }

-- domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = "meet.workfromhome.vn";

turncredentials_secret = "RWXZ0VfAbYkOjZti";

turncredentials = {
  { type = "stun", host = "meet.workfromhome.vn", port = "4446" },
  { type = "turn", host = "meet.workfromhome.vn", port = "4446", transport = "udp" },
  { type = "turns", host = "meet.workfromhome.vn", port = "443", transport = "tcp" }
};

cross_domain_bosh = false;
consider_bosh_secure = true;

VirtualHost "meet.workfromhome.vn"
        -- enabled = false -- Remove this line to enable this host
        authentication = "internal_plain"
        -- Properties below are modified by jitsi-meet-tokens package config
        -- and authentication above is switched to "token"
        --app_id="example_app_id"
        --app_secret="example_app_secret"
        -- Assign this host a certificate for TLS, otherwise it would use the one
        -- set in the global section (if any).
        -- Note that old-style SSL on port 5223 only supports one certificate, and will always
        -- use the global one.
        ssl = {
                key = "/etc/prosody/certs/meet.workfromhome.vn.key";
                certificate = "/etc/prosody/certs/meet.workfromhome.vn.crt";
        }
        speakerstats_component = "speakerstats.meet.workfromhome.vn"
        conference_duration_component = "conferenceduration.meet.workfromhome.vn"
        -- we need bosh
        modules_enabled = {
            "bosh";
            "pubsub";
            "ping"; -- Enable mod_ping
            "speakerstats";
            "turncredentials";
            "conference_duration";
        }
        c2s_require_encryption = false

Component "conference.meet.workfromhome.vn" "muc"
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        -- "token_verification";
        "muc_max_occupants";
    }
    admins = { "focus@auth.meet.workfromhome.vn" }
    muc_room_locking = false
    muc_room_default_public_jids = true
    muc_access_whitelist = {"auth.meet.workfromhome.vn"}
    muc_max_occupants = 2
-- internal muc component
Component "internal.auth.meet.workfromhome.vn" "muc"
    storage = "memory"
    modules_enabled = {
      "ping";
    }
    admins = { "focus@auth.meet.workfromhome.vn", "jvb@auth.meet.workfromhome.vn" }
    muc_room_locking = false
    muc_room_default_public_jids = true

VirtualHost "auth.meet.workfromhome.vn"
    ssl = {
        key = "/etc/prosody/certs/auth.meet.workfromhome.vn.key";
        certificate = "/etc/prosody/certs/auth.meet.workfromhome.vn.crt";
    }
    authentication = "internal_plain"

Component "focus.meet.workfromhome.vn"
    component_secret = "wgcMWF@A"

Component "speakerstats.meet.workfromhome.vn" "speakerstats_component"
    muc_component = "conference.meet.workfromhome.vn"

Component "conferenceduration.meet.workfromhome.vn" "conference_duration_component"
    muc_component = "conference.meet.workfromhome.vn"
VirtualHost "recorder.meet.workfromhome.vn"
    modules_enabled = {
        "ping";
    }
    authentication = "internal_plain"
VirtualHost "guest.meet.workfromhome.vn"
        authentication = "anonymous"
        c2s_require_encryption = false

Khởi động lại Prosody

/etc/init.d/prosody restart

Bước 4: Truy cập jitsi và kiểm tra

Khi user thứ 3 truy cập sẽ thấythông báo Maximum participants limit reached hay Đạt giới hạn số người tham dự và không thể vào phòng.

Imgur



Khi cần hỗ trợ xin liên hệ với chúng tôi:

Công ty phần mềm Nhân Hòa

  • Trụ sở Hà Nội: 32 Võ Văn Dũng, Đống Đa, Hà Nội
  • Chi nhánh HCM: 270 Cao Thắng (nối dài), Phường 12,Quận 10, TP HCM
  • Hotline: 19006680
  • No labels
Write a comment…