介绍
Matrix是分散通信的开放标准,它是用于在线消息的服务器和服务的集合,这些服务器和服务在实时同步的标准化API。
Matrix 使用 homeservers 存储您的帐户信息和聊天历史. 它们以类似的方式工作,电子邮件客户端通过 IMAP/SMTP 连接到电子邮件服务器。
通过遵循本指南,您将安装 Synapse,即Matrix的参考家庭服务器实现,完成后,您将能够通过任何Matrix客户端(https://matrix.org/beta/)连接到您的家庭服务器,并与其他Matrix联盟家庭服务器上的其他用户进行通信。
前提条件
在您开始本指南之前,您将需要以下内容:
- 一个 Ubuntu 16.04 服务器设置为遵循 此初始服务器设置指南,包括一个 sudo 非根用户和防火墙。
- Nginx 安装在您的服务器上(允许 HTTPS 流量);您可以通过遵循 此 Nginx on Ubuntu 16.04 教程这样做。
- 一个注册的域名设置为您的网站和 Synapse 相同的 DNS 记录,遵循 此主机名教程 )。您需要的 DNS 记录取决于您如何使用您的域名。
- 如果您使用您的域名仅用于 Synapse 教程,或者如果您将使用相同的服务器来托管您的网站和
步骤 1 – 安装 Matrix Synapse
登录您的服务器作为您的非根用户开始。
在开始安装任何东西之前,请确保您的本地包索引是最新的。
1sudo apt-get update
接下来,将官方的 Matrix 存储库添加到 APT。
1sudo add-apt-repository https://matrix.org/packages/debian/
为了确保您的服务器保持安全,您应该添加存储库密钥,这将检查以确保任何安装和更新已被开发人员签署,并阻止任何未经授权的软件包安装在您的服务器上。
1wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -
您将看到以下输出:
1[secondary_label Output]
2OK
添加库后,更新本地包索引,以便包含新的库。
1sudo apt-get update
随着存储库的添加,安装 Synapse 就像运行单个 APT 命令一样简单。
1sudo apt-get install matrix-synapse
在安装过程中,您将被要求输入一个服务器名称,这应该是您的域名。您还将被要求选择是否想将匿名统计数据发送回Matrix。
一旦完成,使用systemctl
自动启动Synapse,每次您的服务器启动。
1sudo systemctl enable matrix-synapse
该命令仅在整个服务器启动时启动 Synapse. 您的服务器已经运行,因此使用systemctl
手动启动 Synapse。
1sudo systemctl start matrix-synapse
Synapse 现在已安装并在您的服务器上运行,但您需要创建用户才能开始使用它。
步骤 2 — 创建 Synapse 的用户
在您开始使用 Synapse 之前,您需要添加用户帐户. 在您可以添加新用户之前,您需要设置一个共享的秘密。
使用以下命令生成 32 字符串。
1cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
复制您创建的字符串,然后使用nano
或您最喜欢的文本编辑器打开 Synapse 配置文件。
1sudo nano /etc/matrix-synapse/homeserver.yaml
在注册部分,搜索registration_shared_secret
键. 将其值更新到您复制的随机字符串中,将其插入引文标记(" "
)之间。
如果您还想启用公共注册,您可以在这里将enable_registration
的值更新为True
。
1[label /etc/matrix-synapse/homeserver.yaml]
2. . .
3
4## Registration ##
5
6# Enable registration for new users.
7enable_registration: False
8
9# If set, allows registration by anyone who also has the shared
10# secret, even if registration is otherwise disabled.
11registration_shared_secret: "randomly_generated_string"
12
13. . .
保存并关闭文件。
更改配置后,您需要重新启动 Synapse,以便更改生效。
1sudo systemctl restart matrix-synapse
一旦重新启动,使用命令行创建一个新的用户. -c
标志指定了配置文件,并使用在端口 8448
上聆听的本地 Synapse 实例。
1register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448
您将被要求选择一个用户名和密码. 您还将被问及是否要让用户成为管理员;这取决于您,但这个教程不需要管理员。
创建用户后,请确保 Web 服务器能够服务 Synapse 请求。
步骤 3 – 配置 Nginx 和 SSL
Matrix 客户端请求到 https://example.com/_matrix/
连接到 Synapse. 您需要配置 Nginx 来收听这些请求,并将其传送到 Synapse,该客户端在端口 8008
上本地收听。 您还将通过使用 SSL(https://andsky.com/tech/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs) 通过 Let's Encrypt 来保护您的设置。
要做到这一点,您将为您的网站创建一个自定义的 Nginx 配置文件。
1sudo nano /etc/nginx/sites-available/example.com
下面的位置 /_matrix
块说明了 Nginx 应该如何处理来自 Matrix 客户端的请求,除了请求处理之外,该/.已知
块还可为 Let’s Encrypt 提供同名目录。
复制并粘贴下列内容到文件中。
1[label /etc/nginx/sites-available/example.com]
2server {
3 listen 80;
4 listen [::]:80;
5
6 root /var/www/html;
7 index index.html index.htm index.nginx-debian.html;
8
9 server_name example.com www.example.com;
10
11 location /_matrix {
12 proxy_pass http://localhost:8008;
13 }
14
15 location ~ /.well-known {
16 allow all;
17 }
18}
這本 Nginx 伺服器封鎖教程有關這些檔案的工作方式的更多信息.一旦您設定了伺服器,您可以儲存和關閉檔案。
要启用此配置,请在 /etc/nginx/sites-enabled
目录中为此文件创建一个 symlink。
1sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
通过运行命令来检测配置文件的语法错误。
1sudo nginx -t
根据错误输出来纠正语法,如果有,当没有错误报告时,使用systemctl
重新加载 Nginx,以便更改生效。
1sudo systemctl reload nginx
要用 Let's Encrypt 证书完成 Nginx 的安全,请遵循 This Let's Encrypt for Nginx on Ubuntu 16.04 教程。 请记住使用 /etc/nginx/sites-available/example.com
代替默认配置文件。
一旦设置了 Let's Encrypt,您可以继续配置防火墙,以允许 Synapse 与其他家庭服务器通信所需的流量。
步骤 4 – 允许 Synapse 通过防火墙
客户端流量通过HTTPS端口443
连接到Synapse(从Nginx指南已经在您的防火墙中打开)。
1sudo ufw allow 8448
查看 UFW 的状态。
1sudo ufw status
它应该看起来像这样:
1[secondary_label Output]
2Status: active
3
4To Action From
5-- ------ ----
6OpenSSH ALLOW Anywhere
7Nginx Full ALLOW Anywhere
88448 ALLOW Anywhere
9OpenSSH (v6) ALLOW Anywhere (v6)
10Nginx Full (v6) ALLOW Anywhere (v6)
118448 (v6) ALLOW Anywhere (v6)
这意味着所有必要的流量都可以通过您的防火墙。你应该采取的最后一步是通过更新其SSL证书来改善Synapse的安全性。
步骤 5 – 使用 SSL 保护联邦(推荐)
现在,Synapse已配置并可以与其他家庭服务器进行通信,您可以通过使用您在步骤 3 结束时从 Let's Encrypt 请求的相同 SSL 证书来增加其安全性,默认情况下,Synapse 使用自签证证书来完成这项工作,但鉴于您已经请求了 Let's Encrypt 证书,使用这些证书并提高安全性很简单。
将证书复制到您的 Synapse 目录:
1sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem
2sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem
为了使这些证书在更新时得到更新,您需要将这些命令添加到您的 cron 卡。
1sudo crontab -e
再加上以下几行:
1[secondary_label crontab entry]
235 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/matrix-synapse/fullchain.pem
335 2 * * 1 sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/matrix-synapse/privkey.pem
436 2 * * 1 sudo systemctl restart matrix-synapse
然后保存并关闭文件,然后使用nano
或您最喜欢的文本编辑器打开您的 Synapse 配置文件。
1sudo nano /etc/matrix-synapse/homeserver.yaml
使用您在步骤 3 中从 Lets Encrypt 请求的相同证书,更换配置文件中的路径。
1[label /etc/matrix-synapse/homeserver.yaml]
2. . .
3
4tls_certificate_path: "/etc/matrix-synapse/fullchain.pem"
5
6# PEM encoded private key for TLS
7tls_private_key_path: "/etc/matrix-synapse/privkey.pem"
8
9# PEM dh parameters for ephemeral keys
10tls_dh_params_path: "/etc/ssl/certs/dhparam.pem"
11
12. . .
重新启动 Synapse 以使配置更改生效。
1sudo systemctl restart matrix-synapse
一切都已设置,所以现在你可以连接到你的家庭服务器与任何Matrix客户端,并开始与其他人沟通,例如,你可以使用Matrix网站上的客户端(https://matrix.org/beta/)。
输入相应领域的下列内容:
- 您的 Matrix ID 格式为
@user:server_name
(例如@sammy:example.com
)。 其他联邦服务器使用此格式来查找您的主机服务器在哪里。
如果您在步骤 2 中启用了公共注册,您也可以点击创建帐户
链接来创建新帐户,或者允许其他人在您的家庭服务器上创建新帐户。
从那里,你可以登录房间并开始聊天. 对 Matrix 的官方支持室是 # matrix:matrix.org
。
结论
在本指南中,您安全地安装了Matrix Synapse与 Nginx,由Let's Encrypt的SSL证书支持。有许多Matrix客户端(https://matrix.org/docs/projects/try-matrix-now.html# clients)可以用来连接到您的家庭服务器,您甚至可以 写自己的Matrix客户端或 以其他方式参与该项目。