Cách cài đặt Prosody trên Ubuntu 18.04
Prosody là server trò chuyện XMPP hỗ trợ các phòng trò chuyện group và trò chuyện 1-1 được mã hóa TLS. XMPP (Giao thức nhắn tin mở rộng và giao thức hiện diện) là một giao thức nhắn tin mở được chính thức gọi là Jabber. Điều này nghĩa là bất kỳ ứng dụng trò chuyện XMPP nào sẽ có thể kết nối với server Prosody và bắt đầu trò chuyện.XMPP là một tiêu chuẩn mở và trưởng thành được duy trì bởi Lực lượng Đặc nhiệm Kỹ thuật Internet (IETF) . Nó được tích cực duy trì và triển khai trong nhiều ứng dụng, chẳng hạn như Google Talk , được hàng triệu user sử dụng. Server XMPP, giống như Prosody, là một lựa chọn linh hoạt cho server trò chuyện đã tồn tại hơn hai thập kỷ.
Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình server Prosody hỗ trợ các phiên trò chuyện một-một và group và khả năng tải file lên bảng trò chuyện để chia sẻ. Tất cả các phiên trò chuyện sẽ được bảo vệ bằng certificate mật mã TLS để dữ liệu cá nhân của bạn luôn ở chế độ riêng tư.
Yêu cầu
Trước khi bắt đầu hướng dẫn này, bạn cần những thứ sau:
- Một server Ubuntu 18.04 với ít nhất 512MB RAM được cài đặt theo hướng dẫn Cài đặt server ban đầu với Ubuntu 18.04 , bao gồm firewall , user không root đã kích hoạt sudo và firewall .
- Một ứng dụng client trò chuyện XMPP được cài đặt trên hệ thống local của bạn. Bất kỳ ứng dụng trò chuyện nào được liệt kê trên trang XMPP Clients này sẽ tương thích với server Prosody của bạn.
-  Hai tên  server  trỏ đến  server  của bạn. Bạn cần hai tên  server  vì Prosody sử dụng một tên để trò chuyện trực tiếp và một tên khác cho các phòng trò chuyện  group . Tìm hiểu cách trỏ tên  server  tới DigitalOcean Server  theo  Hướng dẫn DNS của  ta . Hướng dẫn này sẽ sử dụng hai tên  server  mẫu sau:-  chat.your-domain:chat.your-domainserver trò chuyện một-một.
-  room.your-domain:room.your-domainserver của phòng trò chuyện group .
 
-  
Đăng nhập vào server của bạn với quyền là user không root, đã kích hoạt sudo để bắt đầu hướng dẫn này.
Bước 1 - Cài đặt Prosody
Trong bước này, bạn sẽ thêm repository Prosody APT tùy chỉnh vào server của bạn và sau đó cài đặt Prosody từ đó. Bạn đang sử dụng repository Prosody đảm bảo cài đặt các gói cập nhật nhất.
Đầu tiên, tạo và mở một file repository mới bằng editor của bạn. Tệp này chứa thông tin repository Prosody cho trình quản lý gói APT:
- sudo nano /etc/apt/sources.list.d/prosody.list 
Thêm dòng sau vào file của bạn:
deb https://packages.prosody.im/debian bionic main Bây giờ, bạn cần download và cài đặt public key Prosody APT. Server của bạn sẽ sử dụng điều này để xác nhận gói Prosody được tạo bởi group Prosody và không bị giả mạo.
 Lệnh sau  sử dụng trình  wget để tải khóa xuống folder  hiện tại của bạn:
- wget https://prosody.im/files/prosody-debian-packages.key 
Sử dụng apt-key add để thêm khóa của Prosody vào keyring của APT:
- sudo apt-key add prosody-debian-packages.key 
Như vậy, bạn có thể xóa khóa khi không cần nữa:
- rm prosody-debian-packages.key 
Cập nhật database gói của server của bạn để nó bao gồm các version gói mới hơn từ repository Prosody:
- sudo apt update 
Đến đây bạn đã sẵn sàng cài đặt gói server Prosody và một số gói tùy chọn bổ sung:
- sudo apt install prosody prosody-modules lua-dbi-sqlite3 lua-event 
Các gói bạn đã cài đặt như sau:
-  prosody: Server chuyên nghiệp.
-  prosody-modules: Các module Prosody bổ sung giúp mở rộng chức năng của server Prosody.
-  lua-dbi-sqlite3: Cho phép Prosody sử dụng database SQLite .
-  lua-event: Cho phép Prosody xử lý nhiều khách hàng đồng thời hơn.
Đến đây bạn đã hoàn tất cài đặt Prosody. Trong bước tiếp theo, bạn sẽ nhận được hai certificate TLS mà Prosody sẽ sử dụng để mã hóa dữ liệu khi nó truyền qua internet đến và đi từ server Prosody.
Bước 2 - Lấy certificate TLS
 Prosody sử dụng certificate  TLS để mã hóa kết nối giữa  server  và client . Những certificate  này giống như những certificate  mà bạn sử dụng bất kỳ khi nào bạn truy cập trang web có URL HTTPS . Let's Encrypt là một tổ chức phi lợi nhuận cung cấp certificate  TLS miễn phí. Họ cũng cung cấp tiện ích certbot để lấy và quản lý certificate  của họ. Trong bước này, bạn sẽ cài đặt tiện ích certbot và sử dụng nó để nhận một cặp certificate  cho hai tên  server  mà bạn đã trỏ đến  server   của bạn .
 Bạn sẽ cài đặt certbot từ kho lưu trữ Let's Encrypt Ubuntu PPA  đảm bảo  bạn đang sử dụng các gói mới nhất.
Trước tiên, hãy chạy lệnh sau để thêm repository tùy chỉnh:
- sudo add-apt-repository ppa:certbot/certbot 
Bây giờ, hãy cài đặt certbot :
- sudo apt install certbot 
Tiếp theo, cho phép lưu lượng truy cập HTTP thông qua UFW để certbot có thể xác thực ứng dụng certificate  của bạn:
- sudo ufw allow http 
Chạy lệnh certbot sau, lệnh này sẽ nhận được certificate  cho một trong các tên  server  của bạn:
- sudo certbot certonly --standalone --agree-tos --email your_email -d chat.your-domain 
Các tùy chọn này là:
-  --certonly: Nhận certificate và không thực hiện bất kỳ thay đổi nào khác trên server .
-  --standalone: Khởi động web server tạm thời để xác thực certificate .
-  --agree-tos: Tự động đồng ý với Điều khoản dịch vụ của Let's Encrypt.
-  --email your_email: Địa chỉ email mà bạn sẽ gửi đến Let's Encrypt mà họ sẽ sử dụng để thông báo cho bạn về các vấn đề bảo mật, thông báo hết hạn certificate và các thông tin quan trọng khác.
-  -d chat.your-domain: Tên server mà bạn định sử dụng cho server Prosody của bạn .
Khi chạy lệnh này, bạn sẽ được hỏi có muốn chia sẻ địa chỉ email của bạn với Electronic Frontier Foundation hay không , đây là tùy chọn. Sau đó, việc đăng ký certificate sẽ tiếp tục với kết quả sau:
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate  IMPORTANT NOTES:  - Congratulations! Your certificate and chain have been saved at:    /etc/letsencrypt/live/chat.your-domain/fullchain.pem    Your key file has been saved at:    /etc/letsencrypt/live/chat.your-domain/privkey.pem    Your cert will expire on 2020-07-26. To obtain a new or tweaked    version of this certificate in the future, simply  run certbot    again. To non-interactively renew *all* of your certificates, run    "certbot renew"  - If you like Certbot, please consider supporting our work by:     Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate    Donating to EFF:                    https://eff.org/donate-le Chạy lại lệnh tương tự để nhận certificate cho tên server thứ hai của bạn.
Đến đây bạn có hai folder tại:
-  /etc/letsencrypt/live/ room.your-domain
-  /etc/letsencrypt/live/ chat.your-domain
Chúng chứa certificate và file khóa cho tên server của bạn.
 Vì  server  Prosody không chạy  với quyền   user  root , quyền sở hữu và quyền của các folder  và các file  chính cần thay đổi để  server  Prosody có thể đọc và sử dụng chúng.
Quyền của file và folder trên Linux cho phép kiểm soát user và quy trình nào có thể đọc, ghi và thực thi các folder và folder . Kiểm soát này bảo vệ hệ thống khỏi bị sửa đổi bởi user không được ủy quyền và cũng bảo vệ các file riêng tư, chẳng hạn như private key TLS, không bị user không được ủy quyền đọc.
Nếu bạn không quen với user Linux và các quyền, bài viết Giới thiệu về Quyền của Linux cung cấp một phần giới thiệu tuyệt vời.
 Bước đầu tiên là thay đổi chủ sở hữu  group  trong những chìa private key  vào  group   server  ngôn điệu của prosody với các lệnh sau:
- sudo chgrp prosody /etc/letsencrypt/live/room.your-domain/privkey.pem 
- sudo chgrp prosody /etc/letsencrypt/live/chat.your-domain/privkey.pem 
Tiện ích chgrp thay đổi chủ sở hữu  group  của file  và folder . Tại đây, bạn đã thay đổi  group  từ root mặc định thành prosody .
 Tiếp theo, thay đổi quyền của các folder  chứa file  certificate  TLS thành 0755 . Các folder  này thuộc sở hữu của  user  root và  group  root . Lệnh sau sẽ thay đổi quyền trên các folder  này:
- sudo chmod 0755 /etc/letsencrypt/archive 
- sudo chmod 0755 /etc/letsencrypt/live 
Các quyền mới của 0755 trên các folder  này  nghĩa là   user  root có quyền đọc, ghi và thực thi. Các thành viên của  group  root  có quyền đọc và thực thi. Tất cả  user  và  group  khác trên hệ thống đều có quyền đọc và thực thi.
Bây giờ, hãy thay đổi quyền của các private key TLS:
- sudo chmod 0640 /etc/letsencrypt/live/room.your-domain/privkey.pem 
- sudo chmod 0640 /etc/letsencrypt/live/chat.your-domain/privkey.pem 
Quyền 0640 trên các file  này  nghĩa là   user  root có quyền đọc và ghi trên file . Các thành viên của  group  prosody có quyền đọc trên file .  Group  prosody có một thành viên,  user  prosody . Đây là  user  mà  server  Prosody chạy và  user  mà nó sẽ truy cập file   với quyền  là. Tất cả những  user  khác trên hệ thống không có quyền truy cập vào file .
 Hai lệnh này  sử dụng trình  chmod sửa đổi  user  và  group  nào có quyền đọc, ghi và thực thi trên file  và folder .
 Bạn có thể kiểm tra xem Prosody có thể đọc các private key  hay không bằng cách sử dụng sudo để đọc các file  private key  với cat là  user  prosody :
- sudo -u prosody cat /etc/letsencrypt/live/chat.your-domain/privkey.pem 
Nếu điều này thành công thì bạn sẽ thấy nội dung của file khóa hiển thị trên màn hình của bạn.
 Prosody sử dụng một file  duy nhất chứa certificate  và private key  để mã hóa các kết nối tải lên và  download  file . Tệp này không được tạo tự động bởi certbot nên bạn phải tạo thủ công.
 Trước tiên, bạn sẽ di chuyển vào folder  chứa các file  khóa và certificate , sau đó sử dụng cat để kết hợp nội dung của chúng thành một file  mới key-and-cert.pem :
- cd /etc/letsencrypt/live/chat.your-domain/ 
- sudo sh -c 'cat privkey.pem fullchain.pem >key-and-cert.pem' 
Phần đầu của lệnh này, sudo sh -c , mở ra một sub-shell mới có quyền của  user  root và do đó có thể ghi file  mới vào /etc/letsencrypt/live/ chat.your-domain / .
Bây giờ, hãy thay đổi group và quyền của file mới này để trùng với group và quyền mà bạn đã đặt cho file private key khác bằng lệnh sau:
- sudo chmod 0640 key-and-cert.pem 
- sudo chgrp prosody key-and-cert.pem 
Di chuyển trở lại folder chính của user của bạn:
- cd 
Cuối cùng, file này phải được tạo lại mỗi khi certificate được gia hạn hoặc nó sẽ chứa certificate hết hạn.
 certbot đi kèm với một cơ chế được gọi là "hook" cho phép chạy một tập lệnh trước hoặc sau khi certificate  được gia hạn. Bạn có thể sử dụng cơ chế này để chạy một tập lệnh sẽ tạo lại lệnh bạn đã chạy sau mỗi lần gia hạn certificate .
 Mở file  script mới có tên /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh bằng editor :
- sudo nano /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh 
Sau đó, thêm phần sau vào editor :
#!/usr/bin/env bash set -e  # combines the certificate and key into a single file with cat cat /etc/letsencrypt/live/chat.your-domain/privkey.pem \     /etc/letsencrypt/live/chat.your-domain/fullchain.pem \    >/etc/letsencrypt/live/chat.your-domain/key-and-cert.pem Đây là cách tập lệnh Bash của bạn chia nhỏ:
-  #!/usr/bin/env bash: Yêu cầu hệ thống sử dụng trình thông dịch Bash để chạy tập lệnh.
-  set -e: Làm cho tập lệnh thoát nếu bất kỳ lệnh nào không thành công.
-  >: Chuyển hướng kết quả của lệnhcatsang file mới ở bên phải.
Tập lệnh không thể chạy cho đến khi bạn cấp cho nó quyền thực thi bằng lệnh sau:
- sudo chmod +x /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh 
Dấu +x cho phép thực thi tập lệnh.
 Tiếp theo, hãy kiểm tra xem các certificate  đã được cài đặt chính xác chưa và tập lệnh hook sau gia hạn có đang hoạt động hay không bằng cách chạy lệnh certbot sau:
- sudo certbot renew --dry-run 
Lệnh này yêu cầu certbot gia hạn certificate  nhưng với tùy chọn --dry-run sẽ ngăn certbot thực hiện bất kỳ thay đổi nào. Nếu mọi thứ thành công thì bạn sẽ thấy kết quả sau:
OutputCongratulations, all renewals succeeded. The following certs have been renewed:   /etc/letsencrypt/live/chat.your-domain/fullchain.pem (success)   /etc/letsencrypt/live/room.your-domain/fullchain.pem (success) ** DRY RUN: simulating 'certbot renew' close to cert expiry **          (The test certificates above have not been saved.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Running post-hook command: /etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh Đến đây bạn đã có certificate TLS cho server Prosody của bạn . Trong bước tiếp theo, bạn sẽ chỉnh sửa file cấu hình chính của Prosody.
Bước 3 - Cấu hình Prosody
 Prosody có rất nhiều tùy chọn cấu hình và điều này được thể hiện qua kích thước lớn của file  cấu hình chính /etc/prosody/prosody.cfg.lua . Để quản lý phần này, bạn sẽ làm việc từ đầu file  trở xuống, thực hiện các chỉnh sửa đối với file .
 Trước khi bắt đầu chỉnh sửa file  cấu hình lớn, bạn nên tạo một bản sao để bạn có bản root  để tham khảo và khôi phục từ đó. Tạo một bản sao của file  cấu hình bằng lệnh cp :
- sudo cp /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.original 
 Đến đây bạn  có một bản sao của file  root  tại /etc/prosody/prosody.cfg.lua.original .
Tiếp theo, mở file cấu hình bằng editor :
- sudo nano /etc/prosody/prosody.cfg.lua 
Các thay đổi cấu hình được chia thành các việc nhỏ hơn trong các phần sau.
Tạo administrator
Administrator Prosody là user có thể áp dụng các thay đổi đối với server Prosody từ ứng dụng trò chuyện của họ, nhắn tin cho tất cả user và hoàn thành các hành động quyền khác.
Administrator server Prosody được đặt với dòng sau:
... admins = { } ... Trong dòng ví dụ này, admin  user  sẽ được thêm vào  server  chat.your-domain :
... admins = { "admin@chat.your-domain" } ... Nếu bạn muốn thêm một user khác thì bạn phải đặt dấu phẩy sau đầu tiên:
... admins = { "admin@chat.your-domain", "sammy@chat.your-domain" } ... Bật module Prosody
Các nhà phát triển của Prosody đưa nhiều tính năng vào các module có thể được bật hoặc tắt.
 Một module  được kích hoạt bằng cách xóa dấu -- đứng trước nó. Ví dụ: ở đây, module  tls bị tắt:
Module Disabled                --"tls"; -- Add support for secure TLS on c2s/s2s connections Và ở đây nó được kích hoạt:
Module Enabled                "tls"; -- Add support for secure TLS on c2s/s2s connections Tiếp theo đoạn này là phần module đã chỉnh sửa của file cấu hình Prosody với các dòng đã chỉnh sửa được đánh dấu:
... modules_enabled = {          -- Generally required                 "roster"; -- Allow users to have a roster. Recommended ;)                 "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.                 "tls"; -- Add support for secure TLS on c2s/s2s connections                 "dialback"; -- s2s dialback support                 "disco"; -- Service discovery          -- Not essential, but recommended                 "carbons"; -- Keep multiple clients in sync                 "pep"; -- Enables users to publish their avatar, mood, activity, playing music and more                 "private"; -- Private XML storage (for room bookmarks, etc.)                 "blocklist"; -- Allow users to block communications with other users                 "vcard4"; -- User profiles (stored in PEP)                 "vcard_legacy"; -- Conversion between legacy vCard and PEP Avatar, vcard          -- Nice to have                 "version"; -- Replies to server version requests                 "uptime"; -- Report how long server has been running                 "time"; -- Let others know the time here on this server                 "ping"; -- Replies to XMPP pings with pongs                 "register"; -- Allow users to register on this server using a client and change passwords                 "mam"; -- Store messages in an archive and allow users to access it                 "csi_simple"; -- Simple Mobile optimizations          -- Admin interfaces                 "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands                 --"admin_telnet"; -- Opens telnet console interface on localhost port 5582          -- HTTP modules                 --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"                 --"websocket"; -- XMPP over WebSockets                 "http_files"; -- Serve static files from a directory over HTTP                 "http_upload"; -- Enables file sharing between users          -- Other specific functionality                 --"limits"; -- Enable bandwidth limiting for XMPP connections                 "groups"; -- Shared roster support                 --"server_contact_info"; -- Publish contact information for this service                 "announce"; -- Send announcement to all online users                 --"welcome"; -- Welcome users who register accounts                 --"watchregistrations"; -- Alert admins of registrations                 --"motd"; -- Send a message to users when they log in                 --"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.                 --"proxy65"; -- Enables a file transfer proxy service which clients behind NAT can use } ... Các module bạn đã bật như sau:
-  mam: Lưu trữ tin nhắn trò chuyện trên server để user có thể lấy chúng.
-  csi_simple: Cho phép tối ưu hóa cho các ứng dụng client di động.
-  http_files: Cho phép chia sẻ file .
-  http_uploads: Cho phép chia sẻ file .
-  groups: Cho phép user hiển thị.
-  announce: Cho phép administrator gửi thông báo đến tất cả user .
Cài đặt lưu trữ database
Phần tiếp theo bạn cần chỉnh sửa các tập hợp mà Prosody lưu tin nhắn của user và các dữ liệu khác. Cài đặt mặc định là sử dụng file văn bản, nhưng cấu hình có thể mở rộng hơn là để lưu thư trong database .
Prosody cung cấp ba lựa chọn cho database ; MySQL, PostgreSQL và SQLite . SQLite là cách dễ cài đặt và bảo trì nhất, sử dụng ít tài nguyên nhất và phù hợp với các triển khai nhỏ hơn.
 Kích hoạt hai dòng sau bằng cách bỏ phần đầu -- như hình sau:
... storage = "sql" -- Default is "internal" ... sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename. ... Lưu trữ tin nhắn
Bạn có thể quyết định server sẽ lưu trữ các tin nhắn trò chuyện cũ trong bao lâu bằng cách chỉnh sửa dòng sau:
... archive_expires_after = "1w" -- Remove archived messages after 1 week ... Khoảng thời gian mặc định là 1 1w (một tuần) được hiển thị. Sử dụng d cho ngày, w trong tuần và y trong nhiều năm.
Mã hóa file tải lên và download
 Dòng https_certificate cho Prosody biết nơi tìm certificate  và khóa kết hợp mà bạn đã tạo trước đó để sử dụng cho việc truyền file .
Chỉnh sửa nó để nó sử dụng đường dẫn đến file kết hợp của bạn:
... https_certificate = "/etc/letsencrypt/live/chat.your-domain/key-and-cert.pem" ... Xóa localhost
 Trong cấu hình mặc định, Prosody lắng nghe trên localhost hoặc 127.0.0.1 cho các kết nối trò chuyện. Điều này không cần thiết trên một  server  từ xa.
 Tắt hành vi này bằng cách thêm -- vào dòng để nó trông giống như sau sau khi chỉnh sửa:
... --VirtualHost "localhost" ... Thay đổi kích thước tải lên file tối đa
Server Prosody của bạn hỗ trợ user chia sẻ file bằng cách đính kèm chúng vào cửa sổ trò chuyện. Kích thước tối đa mặc định của file mà user có thể chia sẻ là 1MB.
Đặt giá trị này thành giá trị cao hơn bằng cách thêm dòng sau vào cuối cấu hình:
... http_upload_file_size_limit = 10485760 ... Số ở cuối dòng là kích thước file  tối đa tính bằng byte. Kích thước hiển thị ở đây là 10485760 Byte hoặc 10MB. Trang web GbMb cung cấp một công cụ tiện dụng để chuyển đổi MB sang Byte.
 Nếu bạn muốn cho phép tải lên các file  lớn hơn 10MB thì bạn phải thêm một dòng khác đặt biến http_max_content_size . http_max_content_size phải lớn hơn kích thước tải lên file  tối đa.
 Ở đây, kích thước file  tối đa được đặt thành 20MB (20971520 Byte) và kích thước http_max_content_size được đặt thành 30MB:
... http_upload_file_size_limit = 20971520 http_max_content_size = 31457280 ... Đặt http_max_content_size lớn hơn 50% so với kích thước file  tối đa.
Cấu hình Tệp Group
 Mô-đun groups mà bạn đã bật trong phần module  cho phép các khách hàng trò chuyện nhìn thấy nhau.
 Mô-đun groups đọc một file  chứa tên  group  và các thành viên của họ. Đặt vị trí và tên của file  bằng cách thêm dòng sau vào cuối cấu hình:
... groups_file = "/etc/prosody/sharedgroups.txt" ... Dòng này cấu hình Prosody để đọc một file  tại /etc/prosody/sharedgroups.txt để thu thập thông tin  group . Bạn sẽ điền file  này với  user  và  group  ở Bước 4.
Tạo file này bằng lệnh sau trong một terminal khác:
- sudo touch /etc/prosody/sharedgroups.txt 
Tiện ích touch tạo một file  trống khi không có tùy chọn bổ sung nào được sử dụng.
Thêm cấu hình server trò chuyện VirtualHost
 Prosody sử dụng một  đoạn cấu hình  bắt đầu với VirtualHost để khởi động  server  trò chuyện sử dụng tên  server  của bạn.
Thêm đoạn cấu hình sau vào cuối cấu hình:
... VirtualHost "chat.your-domain"     ssl = {             key = "/etc/letsencrypt/live/chat.your-domain/privkey.pem";             certificate = "/etc/letsencrypt/live/chat.your-domain/fullchain.pem";     } ... Các tùy chọn cấu hình:
-  VirtualHost: Tên server mà Prosody sẽ sử dụng cho server trò chuyện.
-  key: Khóa riêng tư TLS để sử dụng để bảo mật các kết nối trò chuyện.
-  certificate:certificateriêng tư TLS để sử dụng để bảo mật các kết nối trò chuyện.
Thêm server phòng trò chuyện
Cấu hình này cho phép Prosody cung cấp các phòng trò chuyện nhiều user cho user của bạn. Thêm đoạn cấu hình sau vào cuối file cấu hình trong phần mới:
... Component "room.your-domain" "muc"     modules_enabled = { "mam_muc"; }     storage = { muc_log = "sql"; }     ssl = {           key = "/etc/letsencrypt/live/room.your-domain/privkey.pem";           certificate = "/etc/letsencrypt/live/room.your-domain/fullchain.pem";     } ... Các tùy chọn được sử dụng:
-  Component: Cho phép module trò chuyện groupmuc(Trò chuyện với nhiều user ) sử dụngroom.your-domainserverroom.your-domain.
-  modules_enabled = { "mam_muc"; }: Cho phép lưu trữ tin nhắn của các cuộc trò chuyện group .
-  storage: Lưu trữ tin nhắn trò chuyện vào database SQLite.
-  key: Khóa riêng tư TLS để sử dụng để bảo mật các kết nối trò chuyện.
-  certificate:certificateriêng tư TLS để sử dụng để bảo mật các kết nối trò chuyện.
Lưu và thoát khỏi editor .
Bây giờ, khởi động lại Prosody để đưa cấu hình mới vào hoạt động:
- sudo systemctl restart prosody.service 
Đến đây bạn đã hoàn tất việc chỉnh sửa file cấu hình chính của Prosody. Trong bước tiếp theo, bạn sẽ thêm một user Prosody và thêm họ vào một group .
Bước 4 - Thêm user và group thịnh vượng
 Bạn phải thêm  user  ngôn điệu đến  server  ngôn điệu của bạn trên dòng lệnh trước khi họ có thể đăng nhập. Bạn sẽ sử dụng các prosodyctl công cụ được cung cấp với các prosody gói để giúp quản lý  server  ngôn điệu.
 Sử dụng lệnh prosodyctl sau để thêm  user  mới:
- sudo prosodyctl register sammy chat.your-domain password 
User này hiện có thể kết nối với server Prosody của bạn.
User của bạn sẽ đánh giá cao nếu bạn tạo một số group cho phép họ gặp nhau và xem trạng thái của họ. Bạn thực hiện việc này bằng cách tạo group và thêm user vào họ bằng file group mà bạn đã xác định trước đó.
Mở file group :
- sudo nano /etc/prosody/sharedgroups.txt 
Một group được đặt bằng cách đặt tên của nó giữa các dấu ngoặc vuông. Các thành viên của group được đặt trên một dòng mới dưới tên group . Bạn có thể tạo bao nhiêu group tùy thích và user có thể là thành viên của nhiều group .
 Đây, là một  group  có tên Everyone có hai thành viên: sammy và admin .
[Everyone] sammy@chat.your-domain admin@chat.your-domain Tất cả các thành viên của cùng một group sẽ có thể "nhìn thấy" các thành viên khác cho dù họ có trực tuyến hay không.
Bạn phải khởi động lại server Prosody bất kỳ khi nào bạn thêm user mới hoặc sửa đổi thông tin group :
- sudo systemctl restart prosody.service 
Tất cả những gì còn lại cho cấu hình server là cho phép Prosody giao tiếp thông qua firewall , bạn sẽ thực hiện trong phần tiếp theo.
Bước 5 - Cho phép lưu lượng truy cập thuận lợi thông qua firewall
 Prosody lắng nghe các kết nối từ các client  trên các cổng TCP 5222 và 5322 . Sử dụng lệnh sau để mở các cổng này trong UFW của bạn:
- sudo ufw allow 5222,5322/tcp 
Server prosody hiện đã được cài đặt và cấu hình đầy đủ.
Đến đây bạn có thể kết nối với server Prosody của bạn bằng một ứng dụng trò chuyện. Trong bước tiếp theo, bạn sẽ cấu hình một ứng dụng XMPP trên hệ thống local hoặc điện thoại thông minh của bạn để kết nối với server Prosody của bạn.
Bước 6 - Cấu hình ứng dụng client trò chuyện XMPP
Trong bước này, bạn sẽ cấu hình client XMPP của bạn với server Prosody của bạn. Bạn cần nhập tên user , tên server và password để kết nối.
Bạn đã cấu hình server Prosody của bạn để sử dụng các cổng XMPP tiêu chuẩn và bảo mật TLS sẽ được tự động xử lý, vì vậy bạn sẽ không cần đặt chúng để kết nối với client của bạn .
 Các ứng dụng trò chuyện khác nhau có thể yêu cầu tên  user , password  và tên  server  ở các định dạng khác nhau. Tên  user  và tên  server  đôi khi được đặt cùng nhau giống như một địa chỉ email, chẳng hạn như sammy@chat.your-domain . Địa chỉ giống như email có thể được gọi là Tên  user  hoặc Địa chỉ XMPP .
Hình ảnh này hiển thị màn hình đăng nhập cho client PSI yêu cầu nhập tên user và tên server server trong biểu mẫu địa chỉ email.
Trong khi đó, ảnh chụp màn hình đăng nhập account cho client Linux XMPP Gajim cho thấy tên user và tên server được cung cấp các trường đầu vào riêng biệt.
Máy khách XMPP không cần thêm bất kỳ thông tin chi tiết nào ngoài tên user , password và tên server để đăng nhập. Sau khi đăng nhập, bạn có thể tìm thấy các thành viên khác của group trò chuyện và bạn cũng có thể tạo phòng trò chuyện group nơi điều này được hỗ trợ bởi khách hàng của bạn.
Kết luận
Trong bài viết này, bạn cài đặt một server Prosody với các tính năng sau:
- Mã hóa TLS
- Phòng trò chuyện một-một và trò chuyện group .
- Chia sẻ file
Bạn cũng đã cấu hình ứng dụng trò chuyện XMPP để sử dụng tất cả các tính năng này, mang đến cho bạn một cuộc trò chuyện giàu tính năng với bạn bè và đồng nghiệp của bạn .
Nếu bạn đang tìm kiếm các giải pháp thay thế nguồn mở khác cho giao tiếp từ xa, hãy xem hướng dẫn Cách cài đặt Jitsi Meet của ta .
Các tin liên quan
Cách tạo nhóm lưu trữ dự phòng bằng GlusterFS trên Ubuntu 20.042020-06-15
Cách tạo lưu trữ dự phòng bằng GlusterFS trên Ubuntu 18.04
2020-06-12
Cách cài đặt và sử dụng TimescaleDB trên Ubuntu 20.04
2020-06-09
Cách cài đặt Git từ nguồn trên Ubuntu 20.04 [Quickstart]
2020-06-05
Cách thiết lập trang web phát triển Jekyll trên Ubuntu 20.04
2020-06-05
Cách thiết lập trang web phát triển Jekyll trên Ubuntu 18.04
2020-06-05
Cách cài đặt Git trên Ubuntu 20.04
2020-05-29
Cách cài đặt và bảo mật Grafana trên Ubuntu 20.04
2020-05-28
Cách lấy chứng chỉ Let's Encrypt sử dụng xác thực DNS với acme-dns-certbot trên Ubuntu 18.04
2020-05-28
Cách cài đặt Jitsi Meet trên Ubuntu 18.04
2020-05-28
 

