Thủ Thuật Kiến Thức Linux

Hướng dẫn cài đặt Jitsi Meet trên Ubuntu 18.04

Lời mở đầu

Jiti Meet là một ứng dụng gọi video mã nguồn mở dựa trên WebRTC. Máy chủ Jitsi Meet cung cấp nhiều cuộc gọi video cho nhiều người bằng trình duyệt, đồng thời chúng cung cấp những tính năng tương đương với ứng dụng  Zoom hoặc Skype. Lợi ích của Jitsi là tất cả dữ liệu chỉ đi qua máy chủ của bạn và được mã hóa đầu cuối với TLS để đảm bảo rằng không ai có thể rình mò cuộc gọi của bạn. Với Jitsi, sẽ đảm bảo về mặt an toàn thông tin cá nhân.

Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình máy chủ Jitsi Meet trên Ubuntu 18.04. Cấu hình mặc định cho phép bất cứ ai cũng có thể tạo ra một phòng hội nghị mới. Điều này sẽ không tốt cho môi trường mạng internet public, do đó bạn cũng sẽ  cấu hình lại Jitsi để chỉ người dùng đã đăng ký mới có thể tạo phòng hội nghị mới. Sau khi phòng hội thoại đã được tạo, bất kỳ ai cũng có thể tham gia, miễn là họ có địa chỉ URL  và mật khẩu.

Yêu Cầu

Trước khi bắt đầu, bạn phải chuẩn bị nhứng điều sau:

  • Một máy chủ Ubuntu 18.04 có quyền sudo .
  • Một tên miền cho ứng dụng Jiti, ví dụ my-jiti.com.vn

Khi bạn chọn một máy chủ để chạy Jitsi Meet, bạn sẽ cần xem xét tài nguyên hệ thống cần thiết để tổ chức các phòng hội nghị. Tham khảo thông tin sau:

CPU Server Bandwidth
2 người tham dự 3% 30Kbps Up, 100Kbps Down
3 người tham dự 15% 7Mbps Up, 6.5Mbps Down

Khi có hai người tham gia vào cuộc hội thoại, Jitsi sẽ sử dụng tài nguyên luân phiên tuần tự giữa người tham gia vì Jitsi sẽ trực tiếp định tuyến dữ liệu của cuộc gọi giữa những người tham gia với nhau. Nhưng, Khi có nhiều hơn hai người tham gia cuộc hôi thoại, dữ liệu cuộc gọi sẽ được đẩy về server Jitsi Meet.

Việc sử dụng tài nguyên giữa hai và ba người tham gia là do Jitsi sẽ định tuyến dữ liệu cuộc gọi trực tiếp giữa các máy khách khi có hai người trong số họ. Khi có nhiều hơn hai máy khách thì dữ liệu cuộc gọi sẽ được chuyển qua máy chủ Jitsi Meet.

Bước 1 – Thiết lập hostname

Trong bước này, bạn sẽ thay đổi hostname của hệ thống để khớp với tên miền mà bạn định sử dụng cho Jitsi Meet và phân giải hostname đó thành IP localhost, 127.0.0.1. Jitsi Meet sử dụng cả hai thiết lập này khi cài đặt và tạo tệp tin cấu hình.

Đầu tiên, đặt hostname thành tên miền mà bạn sẽ sử dụng cho Jitsi. Lệnh sau sẽ đặt tên máy chủ hiện tại và sửa đổi /etc/hostname chứa tên máy chủ của hệ thống:

  • sudo hostnamectl set-hostname jitsi.your-domain

Câu lệnh này sẽ được hiểu như sau:

  • hostnamectl là một tiện ích từ bộ công cụ systemd để quản lý tên máy chủ hệ thống.
  • set-hostname đặt tên máy chủ hệ thống.

Chạy câu lệnh sau để kiểm tra có thành công hay không:

  • hostname

Điều này sẽ trả về tên máy chủ bạn đã đặt bằng lệnh hostnamectl:

Output
jitsi.your-domain

Tiếp theo, bạn sẽ cấu hình file host để phân giải domain local như sau:

  • sudo nano /etc/hosts

Sau đó, thêm vào dòng sau đây:

127.0.0.1 jitsi.your-domain

Lưu và thoát file.

Tiếp theo đây, chúng ta sẽ cấu hình tường lửa cho Jitsi.

Bước 2 – Cấu hình tường lửa

Ứng dụng Jitsi cần được mở những port tường lửa sau đây:

  • 80/tcp được sử dụng để yêu cầu chứng chỉ TLS.
  • 443/tcp được sử dụng để website tạo phòng hội nghị.
  • 4443/tcp,10000/udp Được sử dụng để truyền và nhận lưu lượng cuộc gọi đã được mã hóa.

Thực hiện các lệnh ufw sau đây để mở các port này:

  • sudo ufw allow 80/tcp
  • sudo ufw allow 443/tcp
  • sudo ufw allow 4443/tcp
  • sudo ufw allow 10000/udp

Kiểm tra các trạng thái với ufw status:

  • sudo ufw status

Bạn sẽ thấy  ngõ ra như sau nếu các port này được mở:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
4443/tcp                   ALLOW       Anywhere
10000/udp                  ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
4443/tcp (v6)              ALLOW       Anywhere (v6)
10000/udp (v6)             ALLOW       Anywhere (v6)

Máy chủ đã sẵn sàng để cài đặt Jitsi, chúng ta sẽ hoàn thành chúng ở bước tiếp theo.

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

Trong bước này, chúng ta sẽ thêm repository của Jitsi vào máy chủ của mình và tiến hành cài đặt Jitsi Meet. Điều này sẽ đảm bảo rằng chúng ta luôn có được phiên bản Jitsi Meet mới và ổn định nhất.

Đầu tiên, cần tải về GPG key của Jitsi với tiện ích “wget”:

  • wget https://download.jitsi.org/jitsi-key.gpg.key

Trình quản lý ứng dụng apt sẽ sử dụng khóa GPG này để xác thực các gói mà bạn sẽ tải xuống từ repository của Jitsi.

Tiếp theo, thêm khóa GPG mà chúng ta đã tải xuống  bằng tiện ích apt-key :

  • sudo apt-key add jitsi-key.gpg.key

Bây giờ, bạn sẽ thêm repository Jitsi vào máy chủ của mình bằng cách tạo tệp mới.

  • sudo nano /etc/apt/sources.list.d/jitsi-stable.list

Thêm dòng sau vào :

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

Lưu file và thoát.
Cuối cùng, tiến hành cập nhật và cài đặt jitsi meet

  • sudo apt update
  • sudo apt install jitsi-meet

Trong quá trình cài đặt jitsi-meet, chúng ta sẽ được nhắc để nhập tên miền (ví dụ: jitsi.your-domain) mà chúng ta muốn sử dụng cho Jitsi Meet.

Image showing the jitsi-meet installation hostname dialog

Sau đó, sẽ có một hộp thoại mới hỏi bạn có muốn Jitsi tạo mới chứng chỉ TLS hay sử dụng chứng chỉ đã có.

Image showing the jitsi-meet installation certificate dialog

Nếu bạn không có chứng chỉ TLS cho miền Jitsi của mình, hãy chọn tùy chọn đầu tiên, để tạo chứng chỉ tự ký mới.

Jitsi Meet của bạn hiện được cài đặt bằng chứng chỉ TLS tự tạo. Điều này sẽ gây ra cảnh báo không an toàn trên  trình duyệt, vì vậy bạn sẽ nhận được chứng chỉ signed TLS  trong bước tiếp theo.

Bước 4 – Lấy chứng chỉ Signed TLS

Jitsi Meet sử dụng chứng chỉ TLS để mã hóa lưu lượng cuộc gọi, để không ai có thể nghe lén cuộc gọi của bạn khi truyền qua internet. Chứng chỉ TLS là các chứng chỉ tương tự được sử dụng bởi các trang web HTTPS.

Jitsi Meet cung cấp một chương trình để tự động tải xuống chứng chỉ TLS cho tên miền của bạn, sử dụng tiện ích Certbot.  Thực hiện như sau để tiến hành cài đặt Cerbot.

Đầu tiên, thêm repository Certbot vào hệ thống của bạn để đảm bảo rằng bạn có phiên bản mới nhất của Certbot. Chạy lệnh sau để thêm repository mới và tiến hành cập nhật hệ thống :

  • sudo add-apt-repository ppa:certbot/certbot

Tiếp theo, cài đặt cerbot:

  • sudo apt install certbot

Máy chủ của bạn, hiện đã sẵn sàng để chạy ứng dụng với chứng chỉ TLS do Jitsi Meet cung cấp:

  • sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

Khi bạn chạy câu lệnh này, bạn sẽ được thấy lời nhắc để  thêm địa chỉ email:
Output

-------------------------------------------------------------------------
This script will:
- Need a working DNS record pointing to this machine(for domain jitsi.example.com)
- Download certbot-auto from https://dl.eff.org to /usr/local/sbin
- Install additional dependencies in order to request Let’s Encrypt certificate
- If running with jetty serving web content, will stop Jitsi Videobridge
- Configure and reload nginx or apache2, whichever is used
- Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks
- Add command in weekly cron job to renew certificates regularly

You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf)
by providing an email address for important account notifications
Enter your email and press [ENTER]:

Địa chỉ email này sẽ được gửi cho nhà phát hành chứng chỉ https://letsencrypt.org và sẽ được sử dụng để thông báo cho bạn về bảo mật và các vấn đề khác liên quan đến chứng chỉ TLS. Bạn phải nhập một địa chỉ email ở đây để tiến hành cài đặt. Việc cài đặt sau đó sẽ hoàn tất mà không cần thêm bất kỳ lời nhắc nào.

Khi kết thúc, Jitsi Meet sẽ được cấu hình để sử dụng chứng chỉ TLS đã ký với tên miền của bạn. Gia hạn chứng chỉ cũng sẽ tự động xảy ra vì trình cài đặt đã đặt tập lệnh gia hạn tại /etc/cron.weekly/letsencrypt-renew sẽ chạy mỗi tuần.

Trình cài đặt TLS sử dụng port 80 để xác minh tên miền hợp lệ, khi đã cài đặt thành công, bạn đã nhận được chứng chỉ TLS, nên port 80 lúc này không cần thiết nữa, chúng ta có thể chặn port này với tường lửa. Jitsi Meet truyền dữ liệu cách cuộc hợp của các website thông qua HTTPS trên cổng 443.
Đóng port 80 với tường lửa bằng lệnh ufw sau:

  • sudo ufw delete allow 80/tcp

Máy chủ Jitsi Meet của bạn hiện đã hoạt động và sẵn sàng để chạy thử nghiệm. Mở một trình duyệt và trỏ nó đến tên miền của bạn. Bạn sẽ có thể tạo một phòng gọi video mới và mời những người khác cùng tham gia.

Cấu hình mặc định cho Cuộc họp Jitsi là bất kỳ ai cũng có quyền truy cập cuộc họp Jitsi. Trong bước tiếp theo, bạn sẽ cấu hình Jitsi Meet để chỉ cho phép những người đã đăng ký mới được phép tạo phòng hội nghị.

Bước 5 – Tạo khóa cho phòng hội nghị

In this step, you will configure your Jitsi Meet server to only allow registered users to create conference rooms. The files that you will edit were generated by the installer and are configured with your domain name.

Trong bước này, bạn sẽ cấu hình máy chủ Jitsi Meet  để chỉ cho phép người dùng đã đăng ký mới tạo được phòng hội nghị.

Đầu tiên, mở sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua   bằng trình chỉnh sửa văn bản:

  • sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua

Chỉnh sửa dòng sau:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "anonymous"
...

thành:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
        authentication = "internal_plain"
...

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

Sau đó, cũng trên file này, thêm những dòng sau vào cuối file:

/etc/prosody/conf.avail/your_domain.cfg.lua
...
VirtualHost "guest.your_domain"
    authentication = "anonymous"
    c2s_require_encryption = false

Cấu hình này cho phép bất kỳ user nào cũng có thể tham gia vào phòng hội nghị đã được tạo sẵn. Tuy nhiên, những user này bắt buộc phải có địa chỉ URL và mật khẩu để đăng nhập vào phòng.

Ở đây, bạn có thể thêm “guest” vào trước domain. Ví dụ, với jitsi.your-domain , bạn sẽ đặt guest.jitsi.your-domain. Sau đó, bạn cần tạo record này trên DNS để có thể sử dụng chúng.

Mở file cấu hình khác: “/etc/jitsi/meet/your_domain-config.js

  • sudo nano /etc/jitsi/meet/your_domain-config.js

Chỉnh sửa dòng sau:

/etc/jitsi/meet/your_domain-config.js
...
        // anonymousdomain: 'guest.example.com',
...

thành :

/etc/jitsi/meet/your_domain-config.js
...
        anonymousdomain: 'guest.your_domain',
...

Lại lần nữa, với việc sử dụng guest.your_domain  , bạn sẽ thông báo cho Jitsi Meet là bạn muốn sử dụng domain này để dùng cho những user Guests khi họ đăng nhập.

Tiếp theo, bạn mở file: /etc/jitsi/jicofo/sip-communicator.properties:

  • sudo nano /etc/jitsi/jicofo/sip-communicator.properties

Thêm những dòng sau để hoàn tất quá trình cấu hình.

/etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:your_domain

Đây là cấu hình cho quá trình xử lý của Jitsi Meet đến  local server để phục vụ cho user khi được yêu cầu.

Jitsi Meet của bạn hiện giờ đã cấu hình hoàn tất, bây giờ chỉ còn việc đăng ký user để có thể tạo phòng hội nghị. Sau khi phòng được tạo, bất kỳ ai cũng có thể tham gia vào mà không cần phải đăng ký tạo tài khoản. Tất cả những user đó chỉ cần địa chỉ URL của phòng và mật khẩu để đăng nhập.

Bạn sẽ sử dụng prosodyctl  để làm điều đó:

  • sudo prosodyctl register user your_domain password

User được tạo bởi tiện ích trên, không phải là user của hệ thống. Nó chỉ là User cho ứng dụng Jitsit Meet mà thôi.

Cuối cùng, khởi động lại Jitsi Meet để áp dụng cấu hình:

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

Khi phòng hội nghị được tạo, sẽ có 1 hộp thoại xuất hiện, yêu cầu Username và Password.

Image showing the Jitsi username and password box

Jitsi Meet của bạn hiện giờ đã được cài đặt và cấu hình bảo mật hoàn tất.

Tóm lại

Trong bài này, bạn đã triển khai một Server Jitsi Meet để có thể có thể sử dụng cuộc gọi video an toàn và riêng tư. Bạn có thể mở rộng Jitsi Meet này theo sự hướng dẫn ở Jitsi Meet Wiki.
Chúc bạn thành công !

 

Người viết:

congdonglinux

 

Add Comment

Click here to post a comment