Thứ hai, 15/06/2020 | 00:00 GMT+7

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-domain server trò chuyện một-một.
    • room.your-domain : room.your-domain server 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:

/etc/apt/sources.list.d/prosody.list
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:

Output
Saving 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 :

/etc/letsencrypt/renewal-hooks/post/key-and-cert-combiner.sh
#!/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ệnh cat sang 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:

Output
Congratulations, 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:

/etc/prosody/prosody.cfg.lua
... admins = { } ... 

Trong dòng ví dụ này, admin user sẽ được thêm vào server chat.your-domain :

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... --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:

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... 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:

/etc/prosody/prosody.cfg.lua
... 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 : certificate riê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:

/etc/prosody/prosody.cfg.lua
... 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 group muc (Trò chuyện với nhiều user ) sử dụng room.your-domain server room.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 : certificate riê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: sammyadmin .

/etc/prosody/sharedgroups.txt
[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 52225322 . 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.

Hình ảnh hiển thị trang đăng nhập PSI

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.

Hình ảnh hiển thị trang đăng nhập Gajim

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 .


Tags:

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.04
2020-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 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 từ nguồn trên Ubuntu 20.04 [Quickstart]
2020-06-05
Cách cài đặt Git trên Ubuntu 20.04
2020-05-29
Cách cài đặt Jitsi Meet trên Ubuntu 18.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 và bảo mật Grafana trên Ubuntu 20.04
2020-05-28