介绍
矩阵是分散式沟通的开放标准。 它是用于在线消息传递的服务器和服务的集合,其描述了实时同步的标准化API。
Matrix使用家庭顾问来存储您的帐户信息和聊天记录。 它们的工作方式类似于电子邮件客户端如何通过IMAP / SMTP连接到电子邮件服务器。 像电子邮件一样,您可以使用由其他人托管的Matrix家庭主持人或托管自己的,并控制自己的信息和通信。
按照本指南,您将安装Synapse,即Matrix的参考家庭服务器实现。 完成后,您将能够通过任何Matrix客户端连接到您的家庭服务器,并与其他Matrix联盟家庭客户的其他用户进行通信。
先决条件
在开始本指南之前,您将需要以下信息:
一个Ubuntu 16.04服务器通过遵循此初始服务器设置指南设置 ,包括sudo非root用户和防火墙。
Nginx安装在您的服务器上(允许HTTPS流量); 您可以通过在Ubuntu 16.04教程中遵循Nginx来执行此操作。
通过遵循此主机名教程 ,使用相应的DNS记录设置的注册域名。 您需要哪些DNS记录取决于您使用域的方式。
- 如果您专门为Synapse使用域名,或者您将使用相同的服务器托管您的网站和Synapse,则只需要具有主机名
@
的A记录。 - 如果您将在单独的服务器上安装Synapse,则需要一个主机名设置为要使用的子域的A记录,如
matrix. example.com
matrix. example.com
和主机名_matrix._tcp
指向端口8448
上相同子域的SRV记录,默认优先级和权重分别为10和100。 这将告诉Matrix客户端和家庭客户在哪里找到您的Synapse安装。
- 如果您专门为Synapse使用域名,或者您将使用相同的服务器托管您的网站和Synapse,则只需要具有主机名
第1步 - 安装Matrix Synapse
以非root用户身份登录到您的服务器。
在开始安装任何内容之前,请确保您的本地软件包索引是最新的。
sudo apt-get update
接下来,将官方的Matrix存储库添加到APT。
sudo add-apt-repository https://matrix.org/packages/debian/
为确保您的服务器保持安全,您应该添加存储库密钥。 这将检查以确保开发人员已经签署了任何安装和更新,并阻止任何未经授权的软件包安装在您的服务器上。
wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -
您将看到以下输出:
OutputOK
添加存储库后,更新本地软件包索引,以便它将包含新的存储库。
sudo apt-get update
添加存储库后,安装Synapse与运行单个APT命令一样简单。
sudo apt-get install matrix-synapse
在安装过程中,系统将提示您输入服务器名称,该名称应为您的域名。 您还将被要求选择是否要将匿名统计信息发送给Matrix。 然后,Synapse将安装。
完成后,只要服务器启动,请使用systemctl
自动启动Synapse。
sudo systemctl enable matrix-synapse
该命令只在整个服务器启动时启动Synapse。 您的服务器已经在运行,因此手动使用systemctl
启动Synapse。
sudo systemctl start matrix-synapse
Synapse现在已经在您的服务器上安装并运行,但您需要先创建一个用户才能开始使用它。
第2步 - 创建Synapse的用户
在开始使用Synapse之前,您需要添加一个用户帐户。 在添加新用户之前,您需要设置一个共享密钥。 一个共享的秘密是一个字符串,任何人谁可以使用谁知道它注册,即使注册被禁用。
使用以下命令生成一个32个字符的字符串。
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
复制您创建的字符串,然后使用nano
或您喜欢的文本编辑器打开Synapse配置文件。
sudo nano /etc/matrix-synapse/homeserver.yaml
在注册部分,查找registration_shared_secret
密钥。 将其值更新为您复制的随机字符串,将其插入引号( " "
)之间。 记住通过取消注释行来激活该键(即删除行开头的#
)。
如果要启用公共注册,您可以在此处将enable_registration
的值更新为True
。
. . .
## 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"
. . .
保存并关闭文件。
修改配置后,需要重新启动Synapse,这样更改才能生效。
sudo systemctl restart matrix-synapse
重新启动后,使用命令行创建新用户。 -c
标志指定配置文件,并使用监听端口8448
的本地Synapse实例。
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448
系统将提示您选择用户名和密码。 还会询问您是否要让用户成为管理员? 这取决于您,但本教程不需要管理员。
创建用户后,我们确保网络服务器能够提供Synapse请求。
第3步 - 配置Nginx和SSL
Matrix客户端请求https:// example.com /_matrix/
连接到Synapse。 您将需要配置Nginx以监听这些请求并将其传递给Synapse,Synapse在端口8008
上本地监听。 您还将使用“我们加密”支持的SSL保护您的设置。
为此,您将为您的网站创建一个自定义的Nginx配置文件。 创建新的配置文件。
sudo nano /etc/nginx/sites-available/example.com
下面的location /_matrix
块指定了Nginx如何处理Matrix客户端的请求。 除了请求处理之外,/. /.well-known
块使同名的目录可以让我们加密。
将以下内容复制并粘贴到文件中。
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;
}
}
这个Nginx服务器块教程有关于这些文件如何工作的更多信息。 配置服务器后,可以保存并关闭文件。
要启用此配置,请在/etc/nginx/sites-enabled
目录中为该文件创建一个符号链接。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
通过运行命令来测试配置文件的语法错误。
sudo nginx -t
根据错误输出(如果有)更正语法。 当没有报告错误时,使用systemctl
重新加载Nginx,以便更改生效。
sudo systemctl reload nginx
要使用我们的加密证书完成Nginx的安全性,请按照我们在Ubuntu 16.04教程中加密Nginx 。 记住使用/etc/nginx/sites-available/ example.com
而不是默认的配置文件。 您已经添加了该教程第2步中提到的~/.well-known
块。
一旦设置了加密,您可以继续配置防火墙,以允许Synapse与其他家庭客户通信所需的流量。
第4步 - 允许通过防火墙突触
客户端流量通过HTTPS端口443
(已经在Nginx指南的防火墙中打开)连接到Synapse。 但是,来自其他服务器的流量直接连接到端口8448
上的Synapse,而不需要通过Nginx代理,因此您还需要通过防火墙来允许此流量。
sudo ufw allow 8448
检查UFW的状态。
sudo ufw status
它应该是这样的:
OutputStatus: 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)
这意味着通过防火墙允许所有必要的流量。 您应该采取的最后一步是通过更新其SSL证书来提高Synapse的安全性。
第5步 - 使用SSL保护联盟(推荐)
现在,Synapse已配置并可与其他家庭服务器通信,您可以通过使用您在第3步结束时使用我们加密的SSL证书来增加其安全性。默认情况下,Synapse使用自签名证书来完成此工作,但看到您已经请求我们加密证书,使用它们很简单,并提高安全性。
将证书复制到Synapse目录中:
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
为了在更新这些证书时更新这些证书,您需要将这些命令添加到您的cron选项卡中。 打开它进行编辑。
sudo crontab -e
并添加以下行:
crontab entry35 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
然后保存并关闭文件。 接下来,使用nano
或您喜欢的文本编辑器打开Synapse配置文件。
sudo nano /etc/matrix-synapse/homeserver.yaml
在第3步中使用与Lets Encrypt所请求的相同的证书,替换配置文件中的路径。
. . .
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"
. . .
重新启动突触,使配置更改生效。
sudo systemctl restart matrix-synapse
一切都设置好了,所以现在可以使用任何Matrix客户端连接到您的家庭服务商,并开始与他人沟通。 例如,您可以在Matrix的网站上使用客户端 。
为相应的字段输入以下内容:
- 您的Matrix ID的格式为
@user:server_name
(例如@sammy:example.com
)。 其他联合服务器使用它来查找您的家庭服务器所在的位置。 - 您的密码是创建此用户时设置的安全密码。
- 您的家庭服务器是您在第1步中选择的服务器名称。
如果您在第2步中启用了公开注册,您还可以单击“ 创建帐户”链接创建新帐户,或允许其他人在您的家庭服务器上创建一个新帐户。
从那里,您可以登录到房间并开始聊天。 Matrix的官方支持室是#matrix:matrix.org
。
结论
在本指南中,您使用Nginx安全地安装了Matrix Synapse,由“加密”中的SSL证书支持。 您可以使用许多Matrix客户端连接到家庭服务商,甚至可以编写自己的Matrix客户端,也可以以其他方式参与项目 。