Thứ sáu, 21/07/2017 | 00:00 GMT+7

Cách cài đặt Matrix Synapse trên Ubuntu 16.04

Ma trận là một tiêu chuẩn mở cho giao tiếp phi tập trung. Đó là một tập hợp các server và dịch vụ được sử dụng để nhắn tin trực tuyến sử dụng một API chuẩn hóa đồng bộ hóa trong thời gian thực.

Matrix sử dụng homeservers để lưu trữ thông tin account và lịch sử trò chuyện. Chúng hoạt động theo cách tương tự như cách ứng dụng email kết nối với server email thông qua IMAP / SMTP. Giống như email, bạn có thể sử dụng server gia đình Ma trận do người khác lưu trữ hoặc server lưu trữ của bạn và kiểm soát thông tin và liên lạc của bạn .

Theo hướng dẫn này, bạn sẽ cài đặt Synapse, triển khai server gia đình tham chiếu của Matrix. Khi hoàn tất, bạn có thể kết nối với server gia đình của bạn thông qua bất kỳ ứng dụng client Matrix nào và giao tiếp với những user khác trên các server gia đình được liên kết với Matrix khác.

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 16.04 được cài đặt theo hướng dẫn cài đặt server ban đầu này , bao gồm user không phải root có quyền sudo và firewall .

  • Nginx được cài đặt trên server của bạn (cho phép truy cập HTTP S); bạn có thể làm điều này theo hướng dẫn Nginx trên Ubuntu 16.04 này .

  • Tên domain đã đăng ký được cài đặt với các bản ghi DNS thích hợp theo hướng dẫn về tên server này . Bản ghi DNS nào bạn cần tùy thuộc vào cách bạn đang sử dụng domain của bạn .

    • Nếu bạn đang sử dụng domain của bạn dành riêng cho Synapse hoặc nếu bạn sẽ sử dụng cùng một server để lưu trữ trang web của bạn và Synapse, bạn chỉ cần một bản ghi A với tên server @ .
    • Nếu bạn sẽ cài đặt Synapse trên một server riêng biệt, bạn cần một bản ghi A với tên server được đặt thành domain phụ bạn muốn sử dụng, như matrix. example.com và bản ghi SRV có tên server _matrix._tcp trỏ đến cùng một domain phụ trên cổng 8448 , với mức độ ưu tiên và trọng số mặc định tương ứng là 10 và 100. Điều này sẽ cho khách hàng Matrix và server gia đình biết nơi tìm cài đặt Synapse của bạn.

Bước 1 - Cài đặt Matrix Synapse

Đăng nhập vào server của bạn với quyền là user không phải root của bạn để bắt đầu.

Trước khi bạn bắt đầu cài đặt bất kỳ thứ gì, hãy đảm bảo index gói local của bạn được cập nhật.

  • sudo apt-get update

Tiếp theo, thêm repository Ma trận chính thức vào APT.

  • sudo add-apt-repository https://matrix.org/packages/debian/

Để đảm bảo server của bạn vẫn an toàn, bạn nên thêm khóa repository . Điều này sẽ kiểm tra đảm bảo rằng cài đặt và cập nhật nào đã được nhà phát triển ký và ngăn chặn mọi gói trái phép được cài đặt trên server của bạn.

  • wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -

Bạn sẽ thấy kết quả sau:

Output
OK

Sau khi thêm repository , hãy cập nhật index gói local để nó sẽ bao gồm repository mới.

  • sudo apt-get update

Với repository được thêm vào, việc cài đặt Synapse đơn giản như chạy một lệnh APT.

  • sudo apt-get install matrix-synapse

Trong quá trình cài đặt, bạn sẽ được yêu cầu nhập tên server , tên này phải là domain của bạn. Bạn cần chọn có muốn gửi số liệu thống kê ẩn danh về server gia đình của bạn trở lại Ma trận hay không. Sau đó, Synapse sẽ cài đặt.

Sau khi hoàn tất, hãy sử dụng systemctl để tự động khởi động Synapse khi nào server của bạn khởi động.

  • sudo systemctl enable matrix-synapse

Lệnh đó chỉ bắt đầu Synapse khi toàn bộ server khởi động. Server của bạn đã chạy, vì vậy hãy sử dụng systemctl theo cách thủ công để khởi động Synapse ngay bây giờ.

  • sudo systemctl start matrix-synapse

Synapse hiện đã được cài đặt và chạy trên server của bạn, nhưng bạn cần tạo user trước khi có thể bắt đầu sử dụng.

Bước 2 - Tạo user cho Synapse

Trước khi có thể bắt đầu sử dụng Synapse, bạn cần thêm account user . Trước khi có thể thêm user mới, bạn cần cài đặt bí mật được chia sẻ. Bí mật được chia sẻ là một chuỗi được dùng bởi bất kỳ ai biết nó để đăng ký, ngay cả khi đăng ký bị vô hiệu hóa.

Sử dụng lệnh sau để tạo một chuỗi 32 ký tự.

  • cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Sao chép chuỗi bạn tạo, sau đó mở file cấu hình Synapse bằng nano hoặc editor yêu thích của bạn.

  • sudo nano /etc/matrix-synapse/homeserver.yaml

Trong phần đăng ký, hãy tìm các registration_shared_secret then chốt. Cập nhật giá trị của nó vào chuỗi ngẫu nhiên mà bạn đã sao chép, chèn nó vào giữa dấu ngoặc kép ( " " ). Nhớ kích hoạt khóa bằng cách bỏ comment (tức là xóa dấu # ở đầu dòng).

Nếu bạn cũng muốn bật đăng ký công khai, bạn có thể cập nhật giá trị của enable_registration thành True tại đây.

/etc/matrix-synapse/homeserver.yaml
. . .  ## Registration ##  # Enable registration for new users. enable_registration: False  # If set, allows registration by anyone who also has the shared # secret, even if registration is otherwise disabled. registration_shared_secret: "randomly_generated_string"  . . . 

Lưu và đóng file .

Sau khi sửa đổi cấu hình, bạn cần khởi động lại Synapse để các thay đổi có hiệu lực.

  • sudo systemctl restart matrix-synapse

Sau khi khởi động lại, hãy sử dụng dòng lệnh để tạo user mới. Cờ -c chỉ định file cấu hình và sử dụng version Synapse local đang lắng nghe trên cổng 8448 .

  • register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448

Bạn sẽ được yêu cầu chọn tên user và password . Bạn cũng sẽ được hỏi xem bạn có muốn đặt user làm administrator hay không; tùy thuộc vào bạn, nhưng administrator không cần thiết cho hướng dẫn này.

Sau khi user của bạn được tạo, hãy đảm bảo web server có thể phục vụ các yêu cầu Synapse.

Bước 3 - Cấu hình Nginx và SSL

https:// example.com /_matrix/ khách ma trận đưa ra yêu cầu tới https:// example.com /_matrix/ để kết nối với Synapse. Bạn cần cấu hình Nginx để lắng nghe những yêu cầu này và chuyển chúng đến Synapse, đang lắng nghe local trên cổng 8008 . Bạn cũng sẽ bảo mật cài đặt của bạn bằng cách sử dụng SSL được hỗ trợ bởi Let's Encrypt.

Để làm điều này, bạn sẽ tạo file cấu hình Nginx tùy chỉnh cho trang web của bạn . Tạo file cấu hình mới này.

  • sudo nano /etc/nginx/sites-available/example.com

Khối location /_matrix bên dưới chỉ định cách Nginx sẽ xử lý các yêu cầu từ client Matrix. Ngoài việc xử lý yêu cầu, khối /.well-known làm cho folder cùng tên có sẵn cho Let's Encrypt.

Copy paste phần sau vào file .

/etc/nginx/sites-available/example.com
server {     listen 80;     listen [::]:80;      root /var/www/html;     index index.html index.htm index.nginx-debian.html;      server_name example.com www.example.com;      location /_matrix {         proxy_pass http://localhost:8008;     }      location ~ /.well-known {         allow all;     } } 

Hướng dẫn chặn server Nginx này có thêm thông tin về cách các file như thế này hoạt động. Khi bạn đã cấu hình server , bạn có thể lưu file .

Để kích hoạt cấu hình này, hãy tạo một softlink cho file này trong folder /etc/nginx/sites-enabled .

  • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

Kiểm tra file cấu hình của bạn để tìm lỗi cú pháp bằng cách chạy lệnh.

  • sudo nginx -t

Sửa cú pháp dựa trên kết quả lỗi, nếu có. Khi không có lỗi nào được báo cáo, hãy sử dụng systemctl reload Nginx để các thay đổi có hiệu lực.

  • sudo systemctl reload nginx

Để hoàn tất việc bảo mật Nginx bằng certificate Let's Encrypt, hãy làm theo hướng dẫn Let's Encrypt for Nginx trên Ubuntu 16.04 này . Hãy nhớ sử dụng /etc/nginx/sites-available/ example.com thay vì file cấu hình mặc định. Bạn đã thêm khối ~/.well-known đề cập trong Bước 2 của hướng dẫn đó.

Sau khi Let's Encrypt được cài đặt , bạn có thể chuyển sang cấu hình firewall để cho phép lưu lượng cần thiết cho Synapse giao tiếp với các server gia đình khác.

Bước 4 - Cho phép Synapse thông qua Tường lửa

Lưu lượng client kết nối với Synapse qua cổng HTTPS 443 , (cổng này đã được mở trong firewall của bạn từ hướng dẫn Nginx). Tuy nhiên, lưu lượng truy cập từ các server khác kết nối trực tiếp với Synapse trên cổng 8448 mà không thông qua proxy Nginx, vì vậy bạn cũng cần cho phép lưu lượng này thông qua firewall .

  • sudo ufw allow 8448

Kiểm tra trạng thái của UFW.

  • sudo ufw status

Nó sẽ giống như thế này:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere 8448 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6) 8448 (v6) ALLOW Anywhere (v6)

Điều này nghĩa là tất cả lưu lượng cần thiết đều được phép thông qua firewall của bạn. Bước cuối cùng bạn nên làm là cải thiện bảo mật của Synapse bằng cách cập nhật certificate SSL của nó.

Bây giờ Synapse đã được cấu hình và có thể giao tiếp với các server gia đình khác, bạn có thể tăng cường bảo mật của nó bằng cách sử dụng cùng certificate SSL mà bạn đã yêu cầu từ Let's Encrypt ở cuối Bước 3. Theo mặc định, Synapse sử dụng các certificate tự ký để thực hiện công việc, nhưng nhìn thấy như bạn đã certificate request Let's Encrypt, thật đơn giản để sử dụng chúng và cải thiện bảo mật.

Sao chép các certificate vào folder Synapse của bạn:

  • sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem
  • sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem

Để các certificate này được cập nhật khi chúng được gia hạn, bạn cần thêm các lệnh này vào tab cron của bạn . Mở nó để chỉnh sửa.

  • sudo crontab -e

Và thêm các dòng sau:

crontab entry
35 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem 35 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem 36 2 * * 1 sudo systemctl restart matrix-synapse

Sau đó, lưu file . Tiếp theo, mở file cấu hình Synapse của bạn bằng nano hoặc editor yêu thích của bạn.

  • sudo nano /etc/matrix-synapse/homeserver.yaml

Sử dụng cùng một certificate bạn đã yêu cầu từ Cho phép mã hóa ở Bước 3, thay thế các đường dẫn trong file cấu hình.

/etc/matrix-synapse/homeserver.yaml
. . .  tls_certificate_path: "/etc/matrix-synapse/fullchain.pem"  # PEM encoded private key for TLS tls_private_key_path: "/etc/matrix-synapse/privkey.pem"  # PEM dh parameters for ephemeral keys tls_dh_params_path: "/etc/ssl/certs/dhparam.pem"  . . . 

Khởi động lại Synapse để các thay đổi cấu hình có hiệu lực.

  • sudo systemctl restart matrix-synapse

Mọi thứ đã được cài đặt , vì vậy bây giờ bạn có thể kết nối với server gia đình của bạn với bất kỳ ứng dụng client Matrix nào và bắt đầu giao tiếp với những người khác. Ví dụ: bạn có thể sử dụng ứng dụng khách trên trang web của Matrix .

Nhập thông tin sau cho các trường thích hợp:

  • ID ma trận của bạn có định dạng @user:server_name (ví dụ: @sammy:example.com ). Các server liên kết khác sử dụng điều này để tìm nơi lưu trữ server gia đình của bạn.
  • Mật khẩu của bạn là password an toàn mà bạn đặt khi tạo user này.
  • Server gia đình của bạn là tên server bạn đã chọn ở Bước 1.

Nếu bạn đã bật đăng ký công khai ở Bước 2, bạn cũng có thể nhấp vào liên kết Tạo account để tạo account mới hoặc cho phép người khác tạo account mới trên server của bạn.

Từ đó, bạn có thể đăng nhập vào phòng và bắt đầu trò chuyện. Phòng hỗ trợ chính thức cho Matrix là #matrix:matrix.org .

Kết luận

Trong hướng dẫn này, bạn đã cài đặt Matrix Synapse với Nginx một cách an toàn, được hỗ trợ bởi certificate SSL từ Let's Encrypt. Có nhiều ứng dụng client Ma trận mà bạn có thể sử dụng để kết nối với server gia đình của bạn và thậm chí bạn có thể viết ứng dụng client Ma trận của riêng mình hoặc tham gia vào dự án theo những cách khác .


Tags:

Các tin liên quan

Cách cài đặt Bro trên Ubuntu 16.04
2017-07-14
Cách thiết lập đường ống tích hợp liên tục với Concourse CI trên Ubuntu 16.04
2017-07-11
Cách cài đặt Ruby on Rails với RVM trên Ubuntu 16.04
2017-07-03
Cách thiết lập đường ống tích hợp liên tục với Drone trên Ubuntu 16.04
2017-06-28
Cách thiết lập tích hợp liên tục với Buildbot trên Ubuntu 16.04
2017-06-28
Cách thiết lập đường ống tích hợp liên tục trong Jenkins trên Ubuntu 16.04
2017-06-16
Cách cài đặt và cấu hình Drone trên Ubuntu 16.04
2017-06-14
Cách giám sát cảnh báo Zabbix với Alerta trên Ubuntu 16.04
2017-06-13
Cách cài đặt và cấu hình Zabbix để giám sát an toàn server từ xa trên Ubuntu 16.04
2017-06-08
how-to-config-an-orientdb-cluster-on-ubuntu-16-04
2017-06-02