Matrix là một tiêu chuẩn mở cho giao tiếp phi tập trung và được mã hóa đầu cuối. Đây là một tập hợp các máy chủ và dịch vụ giao tiếp với nhau bằng API chuẩn hóa đồng bộ hóa theo thời gian thực. Nó sử dụng máy chủ gia đình để lưu trữ thông tin tài khoản và lịch sử trò chuyện. Nếu một máy chủ gia đình ngừng hoạt động, các máy chủ khác có thể tiếp tục giao tiếp mà không có vấn đề gì do bản chất của sự phi tập trung. Bạn có thể sử dụng máy chủ gia đình Matrix do người khác lưu trữ hoặc máy chủ của riêng bạn để duy trì quyền kiểm soát dữ liệu của mình.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt và tạo máy chủ trò chuyện bằng Synapse, một triển khai máy chủ gia đình của Matrix. Element là một máy khách web Matrix được xây dựng bằng Matrix React SDK. Điều này sẽ cho phép bạn cung cấp trò chuyện Matrix trên web. Bạn cũng có thể sử dụng máy chủ với bất kỳ máy khách Matrix nào khác mà bạn chọn. Chúng tôi cũng sẽ cài đặt máy chủ Coturn để kích hoạt cuộc gọi thoại và video. Dịch vụ Coturn là tùy chọn nếu bạn không muốn sử dụng dịch vụ này.
Kiểm tra trạng thái của tường lửa.
Bạn sẽ thấy nội dung tương tự như sau.
Mở các cổng HTTP, HTTPS và Synapse trong tường lửa.
Kiểm tra lại trạng thái để xác nhận.
Thêm kho lưu trữ Matrix APT.
Cập nhật kho lưu trữ hệ thống list.
Cài đặt Matrix Synapse.
Trong quá trình cài đặt, bạn sẽ được yêu cầu nhập tên máy chủ, đây là một phần của Matrix ID của bạn. Hãy nhập tên miền Matrix của bạn vào đó. Địa chỉ này sẽ đóng vai trò là địa chỉ máy chủ gia đình của bạn.
Bạn cũng sẽ được hỏi xem bạn có muốn gửi số liệu thống kê ẩn danh về máy chủ gia đình của mình trở lại Matrix hay không. Nhập
Bạn có thể thay đổi các thiết lập này sau trong tệp
Dịch vụ Matrix Synapse được bật và bắt đầu trong quá trình cài đặt. Kiểm tra trạng thái của dịch vụ.
Thêm kho lưu trữ APT vào danh sách nguồn của bạn.
Cập nhật hệ thống kho lưu trữ.
Bây giờ, bạn có thể cài đặt PostgreSQL bằng lệnh sau.
Kiểm tra trạng thái của PostgreSQL dịch vụ.
Bạn có thể thấy rằng dịch vụ được bật và chạy theo mặc định.
Đăng nhập vào hệ thống
Tạo người dùng cơ sở dữ liệu mới và cơ sở dữ liệu cho PostgreSQL.
Thoát khỏi
Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.
Nhập khóa ký của Nginx.
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Cập nhật hệ thống kho lưu trữ.
Cài đặt Nginx.
Xác minh cài đặt.
Khởi động máy chủ Nginx.
Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn đã được cập nhật.
Cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến
Chạy lệnh sau để tạo SSL Chứng chỉ.
Lệnh trên sẽ tải chứng chỉ xuống thư mục
Tạo nhóm Diffie-Hellman chứng chỉ.
Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không, hãy chạy thử quy trình.
Nếu không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Cài đặt Synapse đã tạo hai tệp cấu hình trong
Tạo tệp cấu hình mới cho cơ sở dữ liệu và mở tệp đó để chỉnh sửa.
Dán các dòng sau vào trình chỉnh sửa. Thay thế trường
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tạo khóa đăng ký bí mật. Khóa phải được bảo mật vì nó sẽ cho phép bất kỳ ai đăng ký người dùng mới, ngay cả khi đăng ký bị vô hiệu hóa.
Theo mặc định, Synapse bật các chỉ báo hiện diện cho biết một người có trực tuyến hay không. Nó có thể gây ra tình trạng sử dụng CPU cao, do đó bạn có thể tắt nó. Tạo một tệp cấu hình mới cho cùng một tệp.
Dán dòng sau vào trình chỉnh sửa.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động lại dịch vụ Synapse để áp dụng các thay đổi.
Tạo một người dùng ma trận mới. Bạn sẽ được yêu cầu nhập tên người dùng và mật khẩu. Vì đây là người dùng đầu tiên chúng ta tạo, hãy nhập
Nếu bạn muốn mở đăng ký công khai, hãy tạo cấu hình mới file.
Dán các dòng sau vào đó.
Theo mặc định, Synapse không cho phép đăng ký mà không xác minh email. Để bật xác minh email, hãy dán các dòng sau.
Để vô hiệu hóa xác minh email, hãy dán dòng sau vào thay thế.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động lại Synapse để áp dụng cấu hình.
Thêm dòng sau vào trước dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tạo và mở tệp
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.
Xác minh cú pháp tệp cấu hình Nginx.
Khởi động lại Nginx service.
Ubuntu 22.04 không đi kèm với gói Coturn do sự cố lỗi đã được giải quyết. Tuy nhiên, có một cách khác để cài đặt Coturn bằng cách sử dụng kho lưu trữ không chính thức. Tùy chọn bạn cũng có thể sử dụng Docker để cài đặt Coturn nhưng chúng tôi sẽ không sử dụng phương pháp đó vì nó nằm ngoài phạm vi của hướng dẫn này.
Thêm kho lưu trữ Coturn không chính thức.
Cài đặt Coturn.
Mở TURN và UDP cổng.
Tạo chứng chỉ SSL cho Turn (
Tạo bí mật xác thực và lưu vào cấu hình tệp.
Mở tệp cấu hình để chỉnh sửa.
Dán các dòng sau vào bên dưới bí mật xác thực.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động lại Coturn để áp dụng cấu hình.
Tạo tệp cấu hình Synapse mới cho Coturn.
Dán các dòng sau vào đó. Thay thế giá trị
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động lại Synapse để áp dụng thay đổi.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22709%22%20height=%22551%22%3E%3C/svg%3E
Nhấp vào liên kết Chỉnh sửa bên dưới Máy chủ gia đình. Nhập
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22514%22%20height=%22435%22%3E%3C/svg%3E
Nếu máy khách phát hiện đúng máy chủ gia đình của bạn, ranh giới và văn bản sẽ chuyển sang màu xanh lá cây, nếu không sẽ hiển thị màu đỏ. Nhấp vào Tiếp tục để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22510%22%3E%3C/svg%3E
Nhấp vào nút Đăng nhập để đăng nhập. Bạn sẽ được yêu cầu tạo bản sao lưu an toàn và được mã hóa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22606%22%20height=%22464%22%3E%3C/svg%3E
Chọn tùy chọn Nhập cụm từ bảo mật để tạo cụm từ bảo mật sẽ được yêu cầu mỗi khi bạn đăng nhập. Nhấp vào Tiếp tục để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22602%22%20height=%22276%22%3E%3C/svg%3E
Nhập cụm từ bảo mật và nhấp vào nút Tiếp tục để tiếp tục. Bạn sẽ được yêu cầu xác nhận lại trên màn hình tiếp theo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22607%22%20height=%22254%22%3E%3C/svg%3E
Nhập lại cụm từ và nhấp vào Tiếp tục để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22603%22%20height=%22376%22%3E%3C/svg%3E
Bạn sẽ được cung cấp một bộ khóa bảo mật mà bạn có thể sử dụng nếu bạn quên cụm từ bảo mật của mình. Nhấp vào nút Tải xuống để lưu chúng.
Nhấp vào nút Tiếp tục để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22552%22%20height=%22273%22%3E%3C/svg%3E
Bạn sẽ được yêu cầu nhập mật khẩu tài khoản của mình. Nhập mật khẩu và nhấp vào nút Tiếp tục để hoàn tất thiết lập bản sao lưu được mã hóa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22628%22%3E%3C/svg%3E
Chúng tôi đã tạo một phòng trò chuyện nhóm có tên Howtoforge như được hiển thị ở trên.
Tạo thư mục cho Element.
Tạo tệp mới để lấy Element mới nhất phát hành.
Thêm các dòng sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tạo tệp có thể thực thi.
Chạy tập lệnh để tải xuống Element.
Mở tệp cấu hình để chỉnh sửa.
Tìm mục sau dòng.
Thay đổi địa chỉ máy chủ gia đình Matrix mặc định thành máy chủ gia đình của bạn và xóa
Nếu bạn muốn sử dụng tên riêng của mình thay vì Element trong tiêu đề trang web, hãy thay đổi tên thương hiệu.
Đặt Biến
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Tạo chứng chỉ SSL cho Element khách hàng.
Tạo và mở tệp
Dán các dòng sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Xác minh tệp cấu hình Nginx cú pháp.
Khởi động lại dịch vụ Nginx.
Bạn có thể truy cập vào máy khách Element thông qua URL
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22517%22%3E%3C/svg%3E
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt và tạo máy chủ trò chuyện bằng Synapse, một triển khai máy chủ gia đình của Matrix. Element là một máy khách web Matrix được xây dựng bằng Matrix React SDK. Điều này sẽ cho phép bạn cung cấp trò chuyện Matrix trên web. Bạn cũng có thể sử dụng máy chủ với bất kỳ máy khách Matrix nào khác mà bạn chọn. Chúng tôi cũng sẽ cài đặt máy chủ Coturn để kích hoạt cuộc gọi thoại và video. Dịch vụ Coturn là tùy chọn nếu bạn không muốn sử dụng dịch vụ này.
Điều kiện tiên quyết
-
Máy chủ chạy Ubuntu 22.04.
-
Người dùng không dùng sudo có quyền root.
-
Tường lửa đơn giản (UFW) được bật và đang chạy.
-
Tên miền đủ điều kiện (FQDN) cho Matrix, Element và Coturn trỏ đến máy chủ của bạn. Chúng tôi sẽ sử dụngmatrix.example.com
,element.example.com
vàcoturn.example.com
tương ứng cho ba dịch vụ.
-
Đảm bảo rằng mọi thứ đều được cập nhật.
Mã:$ sudo apt update && sudo apt upgrade
Bước 1 - Cấu hình Tường lửa
Trước khi cài đặt bất kỳ gói nào, bước đầu tiên là cấu hình tường lửa để mở cổng cho HTTP, HTTPS và Synapse.Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo ufw status
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Mã:
$ sudo ufw allow 8448
$ sudo ufw allow http
$ sudo ufw allow https
Mã:
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8448 ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8448 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Bước 2 - Cài đặt Matrix Synapse
Thêm khóa Matrix GPG.
Mã:
$ sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list
Mã:
$ sudo apt update
Mã:
$ sudo apt install matrix-synapse-py3
Bạn cũng sẽ được hỏi xem bạn có muốn gửi số liệu thống kê ẩn danh về máy chủ gia đình của mình trở lại Matrix hay không. Nhập
N
để từ chối.Bạn có thể thay đổi các thiết lập này sau trong tệp
/etc/matrix-synapse/conf.d/server_name.yaml
.Dịch vụ Matrix Synapse được bật và bắt đầu trong quá trình cài đặt. Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status matrix-synapse
? matrix-synapse.service - Synapse Matrix homeserver Loaded: loaded (/lib/systemd/system/matrix-synapse.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-09-26 09:38:38 UTC; 1min 19s ago Process: 12926 ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-key> Main PID: 12931 (python) Tasks: 8 (limit: 2238) Memory: 87.3M CPU: 4.180s CGroup: /system.slice/matrix-synapse.service ??12931 /opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/
Sep 26 09:38:36 matrix matrix-synapse[12926]: Generating signing key file /etc/matrix-synapse/homeserver.signing.key
Sep 26 09:38:37 matrix matrix-synapse[12931]: This server is configured to use 'matrix.org' as its trusted key server via the
Sep 26 09:38:37 matrix matrix-synapse[12931]: 'trusted_key_servers' config option. 'matrix.org' is a good choice for a key
Sep 26 09:38:37 matrix matrix-synapse[12931]: server since it is long-lived, stable and trusted. However, some admins may
Sep 26 09:38:37 matrix matrix-synapse[12931]: wish to use another server for this purpose.
Sep 26 09:38:37 matrix matrix-synapse[12931]: To suppress this warning and continue using 'matrix.org', admins should set
Sep 26 09:38:37 matrix matrix-synapse[12931]: 'suppress_key_server_warning' to 'true' in homeserver.yaml.
Sep 26 09:38:37 matrix matrix-synapse[12931]: --------------------------------------------------------------------------------
Sep 26 09:38:38 matrix matrix-synapse[12931]: Config is missing macaroon_secret_key
Sep 26 09:38:38 matrix systemd[1]: Started Synapse Matrix homeserver.
Bước 3 - Cài đặt và cấu hình PostgreSQL
Chúng ta sẽ sử dụng kho lưu trữ APT chính thức của PostgreSQL để cài đặt. Chạy lệnh sau để thêm khóa GPG PostgreSQL.
Mã:
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Mã:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Mã:
$ sudo apt update
Mã:
$ sudo apt install postgresql postgresql-contrib
Mã:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2022-09-26 09:41:36 UTC; 2min 14s ago Process: 15586 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 15586 (code=exited, status=0/SUCCESS) CPU: 1ms
Sep 26 09:41:36 matrix systemd[1]: Starting PostgreSQL RDBMS...
Sep 26 09:41:36 matrix systemd[1]: Finished PostgreSQL RDBMS.
Đăng nhập vào hệ thống
postgres
tài khoản.
Mã:
$ sudo -su postgres
Mã:
$ createuser --pwprompt synapse
$ createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse synapse
postgres
tài khoản.
Mã:
$ exit
Bước 4 - Cài đặt Nginx
Đối với môi trường sản xuất, bạn nên chạy máy chủ Synapse bằng proxy Nginx.Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.
Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Mã:
$ sudo apt update
Mã:
$ sudo apt install nginx
Mã:
$ nginx -v
nginx version: nginx/1.22.0
Mã:
$ sudo systemctl start nginx
Bước 5 - Cài đặt SSL
Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc lấy phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd.Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn đã được cập nhật.
Mã:
$ sudo snap install core
$ sudo snap refresh core
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d matrix.example.com
/etc/letsencrypt/live/matrix.example.com
trên máy chủ của bạn.Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo certbot renew --dry-run
Bước 6 - Cấu hình Matrix Synapse
Bạn có thể cấu hình máy chủ Matrix thông qua tệp/etc/matrix-synapse/homeserver.yaml
nhưng không khuyến khích vì tệp sẽ bị ghi đè sau mỗi lần nâng cấp. Đối với mục đích sử dụng sản xuất, bạn nên đặt các tệp cấu hình trong thư mục /etc/matrix-synapse/conf.d
.Cài đặt Synapse đã tạo hai tệp cấu hình trong
/etc/matrix-synapse/conf.d
thư mục.
Mã:
$ ls /etc/matrix-synapse/conf.d
report_stats.yaml server_name.yaml
Mã:
$ sudo nano /etc/matrix-synapse/conf.d/database.yaml
your-password
bằng mật khẩu người dùng PostgreSQL mà bạn đã tạo ở bước 3. Thay thế localhost
bằng địa chỉ IP của máy chủ của bạn, nếu bạn đang lưu trữ cơ sở dữ liệu nơi khác.
Mã:
database: name: psycopg2 args: user: synapse password: 'your-password' database: synapsedb host: localhost cp_min: 5 cp_max: 10
Tạo khóa đăng ký bí mật. Khóa phải được bảo mật vì nó sẽ cho phép bất kỳ ai đăng ký người dùng mới, ngay cả khi đăng ký bị vô hiệu hóa.
Mã:
$ echo "registration_shared_secret: '$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml
Mã:
$ sudo nano /etc/matrix-synapse/conf.d/presence.yaml
Mã:
presence: enabled: false
Khởi động lại dịch vụ Synapse để áp dụng các thay đổi.
Tạo một người dùng ma trận mới. Bạn sẽ được yêu cầu nhập tên người dùng và mật khẩu. Vì đây là người dùng đầu tiên chúng ta tạo, hãy nhập
yes
khi được hỏi có muốn biến người dùng thành quản trị viên hay không.
Mã:
$ register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008
New user localpart [navjot]: navjot
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success!
Mã:
$ sudo nano /etc/matrix-synapse/conf.d/registration.yaml
Mã:
enable_registration: true
Mã:
registrations_require_3pid: - email
email: smtp_host: mail.example.com smtp_port: 587 # If mail server has no authentication, skip these 2 lines smtp_user: '[emailprotected]' smtp_pass: 'password' # Optional, require encryption with STARTTLS require_transport_security: true app_name: 'HowtoForge Example Chat' # defines value for %(app)s in notif_from and email subject notif_from: "%(app)s "
Mã:
enable_registration_without_verification: true
Khởi động lại Synapse để áp dụng cấu hình.
Mã:
$ sudo systemctl restart matrix-synapse
Bước 7 - Cấu hình Nginx
Mở tệp/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Tạo và mở tệp
/etc/nginx/conf.d/synapse.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/synapse.conf
Mã:
# enforce HTTPS
server { # Client port listen 80; listen [::]:80; server_name matrix.example.com; return 301 https://$host$request_uri;
}
server { server_name matrix.example.com; # Client port listen 443 ssl http2; listen [::]:443 ssl http2; # Federation port listen 8448 ssl http2 default_server; listen [::]:8448 ssl http2 default_server; access_log /var/log/nginx/synapse.access.log; error_log /var/log/nginx/synapse.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/matrix.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location ~ ^(/_matrix|/_synapse/client) { proxy_pass http://localhost:8008; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; # Nginx by default only allows file uploads up to 1M in size # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml client_max_body_size 50M; }
}
Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Mã:
$ sudo systemctl restart nginx
Bước 8 - Cài đặt Coturn
Bạn sẽ cần cài đặt máy chủ Traversal Using Relays around NAT (TURN) để kích hoạt cuộc gọi thoại và video. Với mục đích này, chúng tôi sẽ cài đặt gói Coturn. Nếu bạn không cần chức năng này, bạn có thể bỏ qua bước này.Ubuntu 22.04 không đi kèm với gói Coturn do sự cố lỗi đã được giải quyết. Tuy nhiên, có một cách khác để cài đặt Coturn bằng cách sử dụng kho lưu trữ không chính thức. Tùy chọn bạn cũng có thể sử dụng Docker để cài đặt Coturn nhưng chúng tôi sẽ không sử dụng phương pháp đó vì nó nằm ngoài phạm vi của hướng dẫn này.
Thêm kho lưu trữ Coturn không chính thức.
Mã:
$ sudo add-apt-repository ppa:ubuntuhandbook1/coturn
Mã:
$ sudo apt install coturn
Mã:
$ sudo ufw allow 3478
$ sudo ufw allow 5349
$ sudo ufw allow 49152:65535/udp
turn.example.com
).
Mã:
$ sudo certbot certonly --nginx -d turn.example.com
Mã:
$ echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf
Mã:
$ sudo nano /etc/turnserver.conf
Mã:
use-auth-secret
realm=turn.example.com
cert=/etc/letsencrypt/live/turn.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem
# VoIP is UDP, no need for TCP
no-tcp-relay
# Do not allow traffic to private IP ranges
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
# Limit number of sessions per user
user-quota=12
# Limit total number of sessions
total-quota=1200
Khởi động lại Coturn để áp dụng cấu hình.
Mã:
$ sudo systemctl restart coturn
Mã:
$ sudo nano /etc/matrix-synapse/conf.d/turn.yaml
turn_shared_secret
bằng giá trị của static-auth-secret
từ \etc\turnserver.conf
tệp.
Mã:
turn_uris: [ "turn:turn.example.com?transport=udp", "turn:turn.example.com?transport=tcp" ]
turn_shared_secret: 'static-auth-secret'
turn_user_lifetime: 86400000
turn_allow_guests: True
Khởi động lại Synapse để áp dụng thay đổi.
Mã:
$ sudo systemctl restart matrix-synapse
Bước 9 - Truy cập Matrix
Bạn có thể truy cập Matrix Chat bằng trình duyệt web của Element tạihttps://app.element.io
. Nhấp vào nút Đăng nhập để tiếp tục.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22709%22%20height=%22551%22%3E%3C/svg%3E
Nhấp vào liên kết Chỉnh sửa bên dưới Máy chủ gia đình. Nhập
matrix.example.com
làm máy chủ gia đình của bạn.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22514%22%20height=%22435%22%3E%3C/svg%3E
Nếu máy khách phát hiện đúng máy chủ gia đình của bạn, ranh giới và văn bản sẽ chuyển sang màu xanh lá cây, nếu không sẽ hiển thị màu đỏ. Nhấp vào Tiếp tục để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22510%22%3E%3C/svg%3E
Nhấp vào nút Đăng nhập để đăng nhập. Bạn sẽ được yêu cầu tạo bản sao lưu an toàn và được mã hóa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22606%22%20height=%22464%22%3E%3C/svg%3E
Chọn tùy chọn Nhập cụm từ bảo mật để tạo cụm từ bảo mật sẽ được yêu cầu mỗi khi bạn đăng nhập. Nhấp vào Tiếp tục để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22602%22%20height=%22276%22%3E%3C/svg%3E
Nhập cụm từ bảo mật và nhấp vào nút Tiếp tục để tiếp tục. Bạn sẽ được yêu cầu xác nhận lại trên màn hình tiếp theo.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22607%22%20height=%22254%22%3E%3C/svg%3E
Nhập lại cụm từ và nhấp vào Tiếp tục để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22603%22%20height=%22376%22%3E%3C/svg%3E
Bạn sẽ được cung cấp một bộ khóa bảo mật mà bạn có thể sử dụng nếu bạn quên cụm từ bảo mật của mình. Nhấp vào nút Tải xuống để lưu chúng.
Nhấp vào nút Tiếp tục để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22552%22%20height=%22273%22%3E%3C/svg%3E
Bạn sẽ được yêu cầu nhập mật khẩu tài khoản của mình. Nhập mật khẩu và nhấp vào nút Tiếp tục để hoàn tất thiết lập bản sao lưu được mã hóa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22628%22%3E%3C/svg%3E
Chúng tôi đã tạo một phòng trò chuyện nhóm có tên Howtoforge như được hiển thị ở trên.
Bước 10 - Cài đặt Element
Cài đặt góijq
để cài đặt văn bản JSON bộ xử lý.
Mã:
$ sudo apt install jq
Mã:
$ sudo mkdir -p /var/www/element
Mã:
$ sudo nano /var/www/element/update.sh
Mã:
#!/bin/sh
set -e
install_location="/var/www/element"
latest="$(curl -s https://api.github.com/repos/vector-im/element-web/releases/latest | jq -r .tag_name)"
cd "$install_location"
[ ! -d "archive" ] && mkdir -p "archive"
[ -d "archive/element-${latest}" ] && rm -r "archive/element-${latest}"
[ -f "archive/element-${latest}.tar.gz" ] && rm "archive/element-${latest}.tar.gz"
wget "https://github.com/vector-im/element-web/releases/download/${latest}/element-${latest}.tar.gz" -P "archive"
tar xf "archive/element-${latest}.tar.gz" -C "archive"
[ -L "${install_location}/current" ] && rm "${install_location}/current"
ln -sf "${install_location}/archive/element-${latest}" "${install_location}/current"
ln -sf "${install_location}/config.json" "${install_location}/current/config.json"
Tạo tệp có thể thực thi.
Mã:
$ sudo chmod +x /var/www/element/update.sh
Mã:
$ sudo /var/www/element/update.sh
Bước 11 - Cấu hình Element
Sao chép cùng cấu hình element tệp.
Mã:
$ sudo cp /var/www/element/current/config.sample.json /var/www/element/config.json
Mã:
$ sudo nano /var/www/element/config.json
Mã:
"m.homeserver": { "base_url": "https://matrix-client.matrix.org", "server_name": "matrix.org"
},
server_name
biến.
Mã:
"m.homeserver": { "base_url": "https://matrix.example.com", "server_name": "matrix.element.com"
},
Mã:
"brand": "Howtoforge Example Chat",
disable_guests
là true để không cho phép Khách sử dụng Element.
Mã:
"disable_guests": true,
Tạo chứng chỉ SSL cho Element khách hàng.
Mã:
$ sudo certbot certonly --nginx -d element.example.com
/etc/nginx/conf.d/element.conf
cho chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/element.conf
Mã:
server { listen 80; listen [::]:80; server_name element.example.com; return 301 https://$host$request_uri;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name element.example.com; root /var/www/element/current; index index.html; access_log /var/log/nginx/element.access.log; error_log /var/log/nginx/element.error.log; add_header Referrer-Policy "strict-origin" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; # TLS configuration ssl_certificate /etc/letsencrypt/live/element.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/element.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/element.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on;
}
Xác minh tệp cấu hình Nginx cú pháp.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Mã:
$ sudo systemctl restart nginx
https://element.example.com
trong trình duyệt của bạn. Đăng nhập và bạn sẽ được đưa đến bảng điều khiển ứng dụng.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22517%22%3E%3C/svg%3E