前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在CVM上安装Matrix Synapse

如何在CVM上安装Matrix Synapse

原创
作者头像
苏子晨
发布2018-07-19 16:23:42
3.6K0
发布2018-07-19 16:23:42
举报

介绍

Matrix是分散通信的开放标准。它使用标准化API实时同步的在线消息传递到其他服务器。

Matrix使用主服务器来存储您的帐户信息和聊天记录。它们的工作方式与E-mail客户端通过IMAP/SMTP连接到E-mail服务器的方式类似。与E-mail一样,您既可以使用由第三方的Matrix服务器,也可以自建Matrix服务器。

本文将介绍安装Matrix Synapse,安装完成后,您将能够通过任意Matrix客户端连接您的主Matrix服务器并与其他Matrix服务器上的其他用户进行通信。

准备

在开始本文之前,您需要以下内容:

  • 一台安装好Ubuntu系统的服务器,我建议您使用腾讯云免费的开发者专属在线实验平台进行试验。
  • 在您的服务器上安装Nginx(允许HTTPS流量打开443端口),你可以使用腾讯云CVM安全组进行设置
  • 您需要注册相关域名,可以在这里注册

第1步、安装Matrix Synapse

以非root用户身份登录到您的服务器。

在开始安装任何内容之前,需要更新本地的安装索引文件,请使用下面的命令。

代码语言:txt
复制
sudo apt-get update

接下来,将官方Matrix库添加到APT。

代码语言:txt
复制
sudo add-apt-repository https://matrix.org/packages/debian/

要确保服务器保持安全,您应该添加存储库的密钥。这能检查并确保开发人员已签署任何安装和更新,并阻止在您的服务器上安装任何未经授权的软件包。

代码语言:txt
复制
wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -

您将看到下面的输出:

代码语言:txt
复制
OK

添加存储库后,更新本地包索引,以便包含新存储库的信息。

代码语言:txt
复制
sudo apt-get update

添加存储库后,安装Synapse.

代码语言:txt
复制
sudo apt-get install matrix-synapse

在安装过程中,系统将提示您输入服务器名称,该名称应为您的域名。还将选择是否要将有关您的主页服务器的匿名统计信息发送回Matrix。

完成后,使用systemctl命令使服务器启动时启动Synapse。

代码语言:txt
复制
sudo systemctl enable matrix-synapse

该命令仅在整个服务器启动时启动Synapse。现在,您的服务器已在运行,请立即用systemctl命令手动启动Synapse。

代码语言:txt
复制
sudo systemctl start matrix-synapse

Synapse现已在您的服务器上安装并运行,但您需要先创建一个用户才能开始使用。

第2步、为Synapse创建用户

在开始使用Synapse之前,您需要添加一个用户帐户。在添加新用户之前,您需要设置公共密钥。任何知道公共密钥的人都可以使用它来注册.

使用以下命令生成32个字符的字符串。

代码语言:txt
复制
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

复制您创建的字符串,然后使用nano或者您喜欢的文本编辑器打开Synapse配置文件。

代码语言:txt
复制
sudo nano /etc/matrix-synapse/homeserver.yaml

在注册部分,查找registration_shared_secret密钥。将其值更新为您复制的随机字符串,将其插入引号("")之间。请通过取消注释行来激活密钥(删除行#的开头)。

如果您还想启用公共注册,可以将enable_registration的值改为为True

代码语言:txt
复制
. . .

## 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才能使更改生效。

代码语言:txt
复制
sudo systemctl restart matrix-synapse

重新启动后,使用命令行创建新用户。-c后缀将指定配置文件,并使用正在侦听端口8448的本地Synapse实例。

代码语言:txt
复制
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,后者正在8008端口上进行本地侦听。您还可以使用腾讯云SSL证书对您的服务进行保护。

为此,您将为您的网站创建自定义Nginx配置文件。

创建新的配置文件:

代码语言:txt
复制
sudo nano /etc/nginx/sites-available/example.com

下面这块指定Nginx应如何处理来自Matrix客户端的请求。将以下内容复制并粘贴到文件中。

代码语言:txt
复制
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目录中为此文件创建符号链接。

代码语言:txt
复制
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

运行该命令,测试配置文件中的语法错误。

代码语言:txt
复制
sudo nginx -t

根据错误输出更正语法(如果有)。如果未报告任何错误,请使用systemctl重新加载Nginx令更改生效。

代码语言:txt
复制
sudo systemctl reload nginx

请记住使用/etc/nginx/sites-available/example.com代替默认配置文件。您已经添加了该教程的第2步中提到的~/.well-known块。

设置好加密后,您可以继续配置防火墙,以便Synapse与其他主机服务器进行通信所需的流量。

第4步、防火墙允许Synapse

客户端流量通过HTTPS端口443连接到Synapse 。但是,来自其他服务器的流量直接连接到端口8448上的Synapse 而不通过Nginx代理,因此您还需要允许此流量通过防火墙。(如果对命令不熟悉的同学可以直接使用腾讯云CVM安全组进行设置)

代码语言:txt
复制
sudo ufw allow 8448

检查UFW的状态。

代码语言:txt
复制
sudo ufw status

它应该如下所示:

代码语言:txt
复制
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的安全性。

第5步 - 使用SSL保护Synapse

现在已经配置了Synapse并且可以与其他主服务器通信,您可以使用在步骤3时从腾讯云申请到的SSL证书来提高其安全性。

将证书复制到Synapse目录:

代码语言:txt
复制
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选项卡,并打开它进行编辑。

代码语言:txt
复制
sudo crontab -e

并添加以下行:

代码语言:txt
复制
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配置文件。

代码语言:txt
复制
sudo nano /etc/matrix-synapse/homeserver.yaml

使用您在步骤3中从腾讯云请求的相同证书,替换配置文件中的路径。

代码语言:txt
复制
. . .

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,使配置更改生效。

代码语言:txt
复制
sudo systemctl restart matrix-synapse

一切都已设置好,现在您可以使用任何Matrix客户端连接到您的主服务器并开始与其他人通信。例如,您可以在Matrix的网站上使用客户端

为相应字段输入以下内容:

  • 您的MatrixID的格式为@user:server_name (例如@sammy:example.com)。其他服务器使用它来查找托管主服务器的位置。
  • 您的密码是您在创建此用户时设置的安全密码。
  • 您的主服务器是您在步骤1中选择的服务器名称。

如果您在步骤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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第1步、安装Matrix Synapse
  • 第2步、为Synapse创建用户
  • 第3步、配置Nginx和SSL
  • 第4步、防火墙允许Synapse
  • 第5步 - 使用SSL保护Synapse
  • 结论
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档