如何在Ubuntu 16.04上安装Matrix Synapse

介绍

矩阵是分散式沟通的开放标准。 它是用于在线消息传递的服务器和服务的集合,其描述了实时同步的标准化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安装。

第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

/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"

. . .

保存并关闭文件。

修改配置后,需要重新启动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块使同名的目录可以让我们加密。

将以下内容复制并粘贴到文件中。

/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;
    }
}

这个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所请求的相同的证书,替换配置文件中的路径。

/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"

. . .

重新启动突触,使配置更改生效。

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客户端,可以以其他方式参与项目

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏