Matrix是分散通信的开放标准。它使用标准化API实时同步的在线消息传递到其他服务器。
Matrix使用主服务器来存储您的帐户信息和聊天记录。它们的工作方式与E-mail客户端通过IMAP/SMTP连接到E-mail服务器的方式类似。与E-mail一样,您既可以使用由第三方的Matrix服务器,也可以自建Matrix服务器。
本文将介绍安装Matrix Synapse,安装完成后,您将能够通过任意Matrix客户端连接您的主Matrix服务器并与其他Matrix服务器上的其他用户进行通信。
在开始本文之前,您需要以下内容:
以非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 -
您将看到下面的输出:
OK
添加存储库后,更新本地包索引,以便包含新存储库的信息。
sudo apt-get update
添加存储库后,安装Synapse.
sudo apt-get install matrix-synapse
在安装过程中,系统将提示您输入服务器名称,该名称应为您的域名。还将选择是否要将有关您的主页服务器的匿名统计信息发送回Matrix。
完成后,使用systemctl
命令使服务器启动时启动Synapse。
sudo systemctl enable matrix-synapse
该命令仅在整个服务器启动时启动Synapse。现在,您的服务器已在运行,请立即用systemctl
命令手动启动Synapse。
sudo systemctl start matrix-synapse
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请求。
Matrix客户端发出请求https://example.com/matrix/
以连接到Synapse。您需要配置Nginx以侦听这些请求并将它们传递给Synapse,后者正在8008
端口上进行本地侦听。您还可以使用腾讯云SSL证书对您的服务进行保护。
为此,您将为您的网站创建自定义Nginx配置文件。
创建新的配置文件:
sudo nano /etc/nginx/sites-available/example.com
下面这块指定Nginx应如何处理来自Matrix客户端的请求。将以下内容复制并粘贴到文件中。
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;
}
}
配置服务器后,可以保存并关闭文件。
要启用此配置,请在/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
请记住使用/etc/nginx/sites-available/example.com
代替默认配置文件。您已经添加了该教程的第2步中提到的~/.well-known
块。
设置好加密后,您可以继续配置防火墙,以便Synapse与其他主机服务器进行通信所需的流量。
客户端流量通过HTTPS端口443连接到Synapse 。但是,来自其他服务器的流量直接连接到端口8448上的Synapse 而不通过Nginx代理,因此您还需要允许此流量通过防火墙。(如果对命令不熟悉的同学可以直接使用腾讯云CVM安全组进行设置)
sudo ufw allow 8448
检查UFW的状态。
sudo ufw status
它应该如下所示:
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)
这意味着允许必要的流量通过防火墙。您应采取的最后一步是通过更新其SSL证书来提高Synapse的安全性。
现在已经配置了Synapse并且可以与其他主服务器通信,您可以使用在步骤3时从腾讯云申请到的SSL证书来提高其安全性。
将证书复制到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
并添加以下行:
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
然后保存并关闭该文件。接下来,使用nano或者您喜欢的文本编辑器打开您的Synapse配置文件。
sudo nano /etc/matrix-synapse/homeserver.yaml
使用您在步骤3中从腾讯云请求的相同证书,替换配置文件中的路径。
. . .
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"
. . .
重启Synapse,使配置更改生效。
sudo systemctl restart matrix-synapse
一切都已设置好,现在您可以使用任何Matrix客户端连接到您的主服务器并开始与其他人通信。例如,您可以在Matrix的网站上使用客户端。
为相应字段输入以下内容:
@user:server_name
(例如@sammy:example.com
)。其他服务器使用它来查找托管主服务器的位置。如果您在步骤2中启用了公共注册,则还可以单击“ 创建帐户”链接以创建新帐户,或允许其他人在您的主页服务器上创建新帐户。
您可以登录房间并开始聊天。Matrix的官方支持聊天室是#matrix:matrix.org
在本文中,您使用Nginx安全地安装了Matrix Synapse,并使用来自腾讯云的SSL证书作为后盾。你可以用主服务器来连接到您的Matrix客户们,你甚至可以编写自己的Matrix客户端或涉足与其他领域的项目。
参考文献:《How To Install Matrix Synapse on Ubuntu 16.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。