Họp trực tuyến với Jitsi – Ubuntu 22.04

Tác giả: 30/04/2024

Chào các bạn,

Hôm nay Nhân Hòa sẽ dùng 1 VPS để cài đặt máy chủ họp trực tuyến với phần mềm Jitsi

Jitsi Meet là một giải pháp họp trực tuyến mã nguồn mở và miễn phí. Nó cung cấp các tính năng họp trực tuyến như âm thanh, video, chia sẻ màn hình và trò chuyện văn bản. Bằng cách sử dụng Jitsi Meet, bạn có thể tổ chức các cuộc họp trực tuyến, hội thảo web, hoặc các buổi tương tác qua mạng từ xa.

Chuẩn bị tài nguyên cài đặt:

  • Máy chủ chạy Ubuntu 22.04
  • Một tên miền chạy ứng dụng, trỏ về máy chủ, trong bài Lab này mình sử dụng sub jitsi.dinhtu.xyz

Bước 1 – Đặt hostname máy chủ

Trong bước này, bạn sẽ thay đổi tên máy chủ của hệ thống để khớp với tên miền bạn định sử dụng cho phiên bản Jitsi Meet của mình. Bạn cũng sẽ phân giải cục bộ tên máy chủ đó thành IP công cộng của máy chủ. Jitsi Meet sử dụng cả hai cài đặt khi cài đặt và tạo tệp cấu hình.

hostnamectl set-hostname jitsi.dinhtu.xyz

exec bash

Sau đó chúng ta sẽ tiến hành add file hosts:

vi /etc/hosts

Thêm vào

... 
IP_public jitsi.your-domain 
...

 

Bước 2 – Mở các port firewall cần thiết

Trên ubuntu 22.04 mặc định có firewall ufw, nếu firewall được bật hãy mở các port sau:

Mở:

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 3478/udp
ufw allow 5349/tcp
ufw allow 10000/udp

Bước 3 – Cài đặt Jitsi Meet

Bây giờ bạn sẽ thêm kho lưu trữ Jitsi và Prosody APT vào máy chủ của mình. Prosody là máy chủ trò chuyện XMPP mã nguồn mở mà Jitsi sử dụng để nhắn tin và xác thực quản trị viên. Sau đó, bạn sẽ cài đặt gói Jitsi Meet từ kho lưu trữ của nó, điều này sẽ đảm bảo rằng bạn luôn chạy gói Jitsi Meet ổn định mới nhất.

Đầu tiên bạn tải Jitsi GPG key bằng curl:

curl https://download.jitsi.org/jitsi-key.gpg.key -o jitsi-key.gpg.key

gpg --output /usr/share/keyrings/jitsi-key.gpg --dearmor jitsi-key.gpg.key

Sau khi add key chúng ta sẽ thêm sourcelist apt,thêm kho lưu trữ Jitsi vào máy chủ của mình bằng cách tạo tệp nguồn APT mới có chứa kho lưu trữ Jitsi. Mở và tạo tệp mới bằng lệnh sau:

vi /etc/apt/sources.list.d/jitsi-stable.list

Thêm vào:

deb [signed-by=/usr/share/keyrings/jitsi-key.gpg] https://download.jitsi.org stable/

Lưu lại file

Tiếp theo, bạn sẽ làm theo các bước tương tự để thêm gói Prosody. Tải key GPG Prosody:

curl https://prosody.im/files/prosody-debian-packages.key -o prosody-debian-packages.key

Sau đó, thêm khóa vào chuỗi khóa của máy chủ của bạn:

gpg --output /usr/share/keyrings/prosody-keyring.gpg --dearmor prosody-debian-packages.key

Tiếp theo, mở tệp nguồn mới cho Prosody:

vi  /etc/apt/sources.list.d/prosody.list

Thêm dòng sau vào tệp nguồn Prosody hiện đang trống:

deb [signed-by=/usr/share/keyrings/prosody-keyring.gpg] http://packages.prosody.im/debian jammy main

Lưu và thoát trình chỉnh sửa.

Bây giờ bạn có thể xóa các khóa GPG mà bạn đã tải xuống vì chúng không còn cần thiết nữa:

rm jitsi-key.gpg.key prosody-debian-packages.key

Cuối cùng, thực hiện cập nhật hệ thống để thu thập danh sách gói từ kho lưu trữ mới rồi cài đặt gói Jitsi Meet

apt update && apt upgrade -y

apt install jitsi-meet -y

Nhấn y để xác nhận cài đặt các gói khi được nhắc.

Trong quá trình cài đặt, bạn sẽ được nhắc nhập tên miền (ví dụ: jitsi.dinhtu.xyz) mà bạn muốn sử dụng cho phiên bản Jitsi Meet của mình.

Trong trường hợp này, mình đã xử dụng jitsi.dinhtu.xyz

Sử dụng TAB phím để di chuyển con trỏ từ trường tên máy chủ để tô sáng nút <OK> . Nhấn ENTER khi <OK> được tô sáng để gửi tên máy chủ.

Sau đó, bạn sẽ thấy một hộp thoại mới hỏi xem bạn có muốn Jitsi tạo và sử dụng chứng chỉ TLS tự ký hay sử dụng chứng chỉ hiện có:

Ở đây mình chọn cài đặt chứng chỉ Let’encrypt

apt install certbot python3-certbot-nginx -y
certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email your-email@gmail.com -d jitsi.dinhtu.xyz

Bước 5 – Khóa việc tạo phòng họp

Điều này có nghĩa là chỉ cho phép người dùng đã đăng ký tạo phòng hội nghị.

Các tệp bạn sẽ chỉnh sửa được trình cài đặt tạo ra và được định cấu hình bằng tên miền của bạn.jitsi.dinhtu.xyz sẽ được sử dụng thay cho tên miền của bạn trong các ví dụ sau.

Đầu tiên, mở bằng trình soạn thảo văn bản: /etc/prosody/conf.avail/jitsi.dinhtu.xyz.cfg.lua

Tìm dòng có đoạn

authentication = "anonymous"

Thay thế bằng

authentication = "internal_plain"

Cấu hình này yêu cầu Jitsi Meet buộc xác thực tên người dùng và mật khẩu trước khi cho phép khách truy cập mới tạo phòng hội nghị.

Vẫn trong tệp đó, thêm phần sau vào cuối tệp:

...
VirtualHost "guest.jitsi.your_domain"
    authentication = "anonymous"
    c2s_require_encryption = false
    modules_enabled = {
            "bosh";
            "ping";
            "pubsub";
            "speakerstats";
            "turncredentials";
            "conference_duration";
    }

Cấu hình này cho phép bất kỳ người dùng nào tham gia phòng hội nghị mà người dùng được xác thực đã tạo. Tuy nhiên, khách phải có URL duy nhất (và mật khẩu tùy chọn) để nhập URL đó.

Ở đây, bạn đã thêm guest vào phía trước tên miền của mình. Ví dụ: tên chính xác để đặt ở đây là guest.jitsi.your_domain. Tên guest được Jitsi Meet sử dụng nội bộ, vì vậy bạn sẽ không bao giờ nhập tên máy chủ đó vào trình duyệt hoặc cần bản ghi DNS riêng.

Khi hoàn tất, lưu và đóng tập tin /etc/prosody/conf.avail/jitsi.your_domain.cfg.lua

Tiếp theo, mở tệp cấu hình khác bằng trình soạn thảo văn bản: /etc/jitsi/meet/jitsi.your_domain-config.js

vi /etc/jitsi/meet/jitsi.your_domain-config.js

Tìm đoạn:

// anonymousdomain: 'guest.example.com',

Thay thế bằng:

anonymousdomain: 'guest.jitsi.your_domain',

Tiếp theo, tạo và mở  /etc/jitsi/jicofo/sip-communicator.properties:

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

Thêm vào

org.jitsi.jicofo.auth.URL=XMPP:jitsi.your_domain

Cấu hình này trỏ một trong các quy trình Jitsi Meet tới máy chủ cục bộ thực hiện xác thực người dùng hiện được yêu cầu. Khi hoàn tất, lưu và đóng tập tin.

Phiên bản Jitsi Meet của bạn hiện đã được định cấu hình để chỉ những người dùng đã đăng ký mới có thể tạo phòng hội thảo. Sau khi tạo phòng hội nghị, bất kỳ ai cũng có thể tham gia mà không cần phải là người dùng đã đăng ký. Tất cả những gì họ cần là địa chỉ phòng họp duy nhất và mật khẩu tùy chọn do người tạo phòng đặt.

Giờ đây, Jitsi Meet đã được định cấu hình để yêu cầu người dùng được xác thực để tạo phòng, bạn cần đăng ký những người dùng này và mật khẩu của họ. Bạn sẽ sử dụng tiện ích prosodyctl để thực hiện việc này.

Chạy lệnh sau để thêm người dùng vào máy chủ của bạn:

prosodyctl register user your_domain password

Người dùng mà bạn thêm ở đây không phải là người dùng hệ thống. Họ sẽ chỉ có thể tạo phòng hội thảo và không thể đăng nhập vào máy chủ của bạn thông qua SSH.

Khi bạn chạy lệnh này, bạn có thể thấy cảnh báo sau:

general             warn        Lua 5.1 has several issues and support is being phased out, consider upgrading

Gói này lua.5.1 vẫn là gói phụ thuộc bắt buộc đối với Prosody và không gây rủi ro bảo mật cho hệ thống của bạn khi sử dụng gói này. Sự phụ thuộc vào lua5.1 sẽ bị loại bỏ khi Prosody và Jitsi Meet được phát triển hơn nữa.

Cuối cùng, khởi động lại tất cả quy trình của Jitsi Meet để tải cấu hình mới:

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

Bước 6 – Mở phòng hội nghị và mời người tham gia

Bây giờ bạn có thể duyệt đến và bắt đầu sử dụng máy chủ Jitsi Meet mới của mình. Mở trình duyệt của bạn và nhập tên miền Jitsi của bạn (có https) vào thanh địa chỉ.

Để bắt đầu cuộc họp, nhấn nút Bắt đầu cuộc họp trên trang đích:

Mời member tham gia họp

Hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com.

 

Trả lời