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ủ bằng 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 tính năng gọi thoại và gọi video. Dịch vụ Coturn là tùy chọn trong trường hợp 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 danh sách kho lưu trữ hệ thống.
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ủ tại nhà của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22317%22%3E%3C/svg%3E
Bạn cũng sẽ được hỏi xem có muốn gửi số liệu thống kê ẩn danh về máy chủ tại nhà của mình trở lại Matrix hay không. Nhập
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22318%22%3E%3C/svg%3E
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.
Tại thời điểm viết hướng dẫn này, PostgreSQL 16 là phiên bản mới nhất. Để cài đặt phiên bản khác, hãy sửa đổi lệnh như sau để cài đặt PostgreSQL 14 thay thế.
Kiểm tra trạng thái của dịch vụ PostgreSQL.
Bạn có thể thấy dịch vụ được bật và chạy theo mặc định.
Đăng nhập vào
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
Debian 12 đ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. Vì chúng ta đang sử dụng Debian, lệnh sau cần được chạy với quyền
Khởi động Nginx máy chủ.
Kiểm tra trạng thái của dịch vụ.
Debian 12 không cài đặt Snapd. Phát hành lệnh sau để cài đặt Snapd.
Chạy các lệnh sau để đảm bảo 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 lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến
Kiểm tra phiên bản Certbot.
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 dịch vụ lập lịch gia hạn Certbot.
Bạn sẽ tìm thấy
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Nếu bạn 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 này 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 thay đổi.
Tạo 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 tệp.
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.
Để tắt xác minh email, hãy dán dòng sau.
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 đó.
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. Cấu hình trên hoạt động dựa trên giả định rằng địa chỉ IP của miền
Xác minh tệp cấu hình Nginx cú pháp.
Khởi động lại dịch vụ Nginx.
Cài đặt Coturn.
Mở các cổng TURN và UDP.
Tạo chứng chỉ SSL cho Turn (
Tạo bí mật xác thực và lưu vào tệp cấu hình.
Mở tệp cấu hình để chỉnh sửa.
Dán các dòng sau vào bên dưới xác thực bí mật.
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 ở 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. 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 bằng cách sử dụng nút Tạo trò chuyện nhóm trên trang chủ. Bạn sẽ nhận được cửa sổ bật lên sau khi nhấp vào nút.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22499%22%20height=%22489%22%3E%3C/svg%3E
Bạn có thể hạn chế thành viên vào miền bằng cách mở rộng menu nâng cao và chọn tùy chọn. Hoàn tất việc tạo phòng bằng cách nhấp vào nút Tạo phòng.
Tạo một thư mục cho Element.
Tạo một 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 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 cú pháp tệp cấu hình Nginx.
Khởi động lại Nginx dịch vụ.
Bạn có thể truy cập vào ứng dụng 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ủ bằng 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 tính năng gọi thoại và gọi video. Dịch vụ Coturn là tùy chọn trong trường hợp 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 Debian 12.
-
Người dùng không sử 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ác 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
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
8448 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
8448 (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
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22317%22%3E%3C/svg%3E
Bạn cũng sẽ được hỏi xem có muốn gửi số liệu thống kê ẩn danh về máy chủ tại nhà của mình trở lại Matrix hay không. Nhập
N
để từ chối.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22318%22%3E%3C/svg%3E
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; preset: enabled) Active: active (running) since Mon 2023-10-02 07:47:43 UTC; 1min 33s ago Process: 1558 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-keys (code=> Main PID: 1563 (python) Tasks: 8 (limit: 2315) Memory: 102.7M CPU: 3.609s CGroup: /system.slice/matrix-synapse.service ??1563 /opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/
Oct 02 07:47:41 lomp matrix-synapse[1558]: Generating signing key file /etc/matrix-synapse/homeserver.signing.key
Oct 02 07:47:43 lomp matrix-synapse[1563]: This server is configured to use 'matrix.org' as its trusted key server via the
Oct 02 07:47:43 lomp matrix-synapse[1563]: 'trusted_key_servers' config option. 'matrix.org' is a good choice for a key
Oct 02 07:47:43 lomp matrix-synapse[1563]: server since it is long-lived, stable and trusted. However, some admins may
Oct 02 07:47:43 lomp matrix-synapse[1563]: wish to use another server for this purpose.
Oct 02 07:47:43 lomp matrix-synapse[1563]: To suppress this warning and continue using 'matrix.org', admins should set
Oct 02 07:47:43 lomp matrix-synapse[1563]: 'suppress_key_server_warning' to 'true' in homeserver.yaml.
Oct 02 07:47:43 lomp matrix-synapse[1563]: --------------------------------------------------------------------------------
Oct 02 07:47:43 lomp matrix-synapse[1563]: Config is missing macaroon_secret_key
Oct 02 07:47:43 lomp systemd[1]: Started matrix-synapse.service - Synapse Matrix homeserver.
Bước 3 - Cài đặt và cấu hình PostgreSQL
Chúng tôi sẽ sử dụng kho lưu trữ APT chính thức của PostgreSQL để cài đặt phiên bản PostgreSQL mới nhấ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 apt install postgresql-14 postgresql-contrib-14
Mã:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled) Active: active (exited) since Mon 2023-10-02 07:51:10 UTC; 13s ago Main PID: 4001 (code=exited, status=0/SUCCESS) CPU: 1ms
Oct 02 07:51:10 lomp systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Oct 02 07:51:10 lomp systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
Đăng nhập vào
postgres
tài khoản hệ thống.
Mã:
$ sudo -su postgres
Mã:
$ createuser --pwprompt synapse
$ createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse synapsedb
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.Debian 12 đ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] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Mã:
$ sudo apt update
Mã:
$ sudo apt install nginx
sudo
.
Mã:
$ sudo nginx -v
nginx version: nginx/1.24.0
Mã:
$ sudo systemctl start nginx
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Mon 2023-10-02 07:59:12 UTC; 1s ago Docs: https://nginx.org/en/docs/ Process: 5767 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 5768 (nginx) Tasks: 2 (limit: 2315) Memory: 1.7M CPU: 7ms CGroup: /system.slice/nginx.service ??5768 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??5769 "nginx: worker process"
Bước 5 - Cài đặt SSL
Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL miễn phí do Let's Encrypt cung cấp. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Debian hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.Debian 12 không cài đặt Snapd. Phát hành lệnh sau để cài đặt Snapd.
Mã:
$ sudo apt install snapd -y
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ã:
$ certbot --version
certbot 2.6.0
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 systemctl list-timers
snap.certbot.renew.service
là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Mon 2023-10-02 16:33:00 UTC 8h left - - snap.certbot.renew.timer snap.certbot.renew.service
Tue 2023-10-03 00:00:00 UTC 15h left - - dpkg-db-backup.timer dpkg-db-backup.service
Tue 2023-10-03 00:00:00 UTC 15h left Mon 2023-10-02 07:38:16 UTC 26min ago exim4-base.timer exim4-base.service
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 này 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
registration_shared_secret: 'vgd73p26ZDaFExpX4OPv45DsA2ZMAxiVZR7um9fBoBoFESmg5MSs68xAMUhwQ8Zn3NqcZMRSqxLeIFatppfne7xD2RHL16YfuIKmNeJ1FClQszO1SZknUVwOPyDiPe5gCCWgD9cHfa3dLTdZND5Y0SdH7GBkwYqKjibAe0JoQc8mKty3HWd6uIga3QewhtXr3b3Hpk8sr6zYpXvaBtWRHwaSWcLooqbWF8LPbSyrC0BVAKzXObUwqRGyDpkrnMiY'
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 thay đổi.
Mã:
$ sudo systemctl restart matrix-synapse
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_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s; resolver_timeout 2s; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; tcp_nopush on; gzip 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; }
}
example.com
và matrix.example.com
đang trỏ đến cùng một máy chủ. Nếu không, hãy sử dụng tệp cấu hình sau cho máy chủ example.com
.
Mã:
server { server_name example.com; listen 443 ssl http2; listen [::]:443 ssl http2; # 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_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s; resolver_timeout 2s; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; # Redirect location ~ ^(/_matrix|/_synapse/client) { return 301 "https://matrix.example.com$request_uri"; } # Client homeserver autodiscovery location /.well-known/matrix/client { default_type application/json; add_header Access-Control-Allow-Origin *; return 200 '{ "m.homeserver": { "base_url": "https://matrix.example.com" } }'; } # Domain delegation location /.well-known/matrix/server { default_type application/json; add_header Access-Control-Allow-Origin *; return 200 '{ "m.server": "matrix.example.com" }'; }
}
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 Traversal Using Relays xung quanh máy chủ 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.Cài đặt 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 --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -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
static-auth-secret=OcKBLuwpE6IyMoi9mPccjVFaL7PwJRFUuKh5EvGBVcvB7tunevQ3cpP74we8cF4XSN8lFNrgqxJeyItKOcoOABwjdTNChmJeB4WMrsLV2JNsPs3U61s9rRijj3OxBpZux0CGft8CiyNDweVLqqxNaYphNesoAT4y51RxLVdAP2ros9S3jRR7IYRccJVRMpqTa8USBuBqAkzRRPLbFOHsC6QHur2oiySuW6sqs4YkH65N8kReSzgi7Fq2Zll3RO5e
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 ở 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. 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 bằng cách sử dụng nút Tạo trò chuyện nhóm trên trang chủ. Bạn sẽ nhận được cửa sổ bật lên sau khi nhấp vào nút.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22499%22%20height=%22489%22%3E%3C/svg%3E
Bạn có thể hạn chế thành viên vào miền bằng cách mở rộng menu nâng cao và chọn tùy chọn. Hoàn tất việc tạo phòng bằng cách nhấp vào nút Tạo phòng.
Bước 10 - Cài đặt Element
Cài đặt góijq
để cài đặt trình xử lý văn bản JSON. Chúng tôi sẽ sử dụng nó để lấy phiên bản mới nhất của Element từ kho lưu trữ GitHub của nó mà không cần bạn phải thêm số phiên bản theo cách thủ công và cho phép bạn cập nhật bằng một lệnh duy nhất.
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 tin.
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": "example.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 --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -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_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s; resolver_timeout 2s; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
}
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
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. Trước tiên, bạn sẽ được yêu cầu xác minh ứng dụng bằng https://app.element.io
. Đảm bảo rằng bạn đã đăng nhập vào ứng dụng Element gốc và bạn sẽ được yêu cầu khớp các ký tự biểu tượng cảm xúc. Sau khi xác minh, bạn sẽ nhận được bảng thông tin sau.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22517%22%3E%3C/svg%3E