Họp trực tuyến với Jitsi – Ubuntu 22.04
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.