这是我第一次安装Synapse,走了很多弯路,再加上中文互联网上相关的内容相当少,所以特地写一篇文章来记录一下我的安装过程。
1、安装环境准备
我准备了一台4C/4G的虚拟机来安装Synapse。系统为Debian 11 64位,桥接连接上路由器。在此特地提醒一下,请确保你的服务器能够访问matrix.org和packages.matrix.org,这关系着你之后能否正常地从matrix的官方源下载到包。由于matrix.org是被GFW拦在墙外的,所以请在大陆主机上安装Synapse前准备好梯子。墙外的主机不存在这一问题,但是由于聊天应用对时延非常敏感,所以如果要在大陆使用,请准备一台在大陆访问时延足够低的主机,比如香港地区的某些主机。
官网上的整个安装过程可以不涉及Docker,但是我还是推荐选择配置高一些的主机来安装,这种“高”几乎是全方位的。要求及时处理用户请求--CPU,要求存储用户的数据,并实时读取--硬盘、内存,要求处理音、视频通话--网络。所以搭建一个Synapse不困难,但是要求各方面比较完善是非常难的。
此外,还需要一个域名来让Synapse实例接入Matrix网络并与其它服务器通信。为了保证通信的安全,请准备好SSL证书。
那么接下来就正式开始了。
首先登录上终端,并确保是在拥有超级用户权限(命令前的提示符为#而不是$)执行下面的命令,如果不是,需要在下面的每一条命令前加sudo,或者使用su及sudo -I命令来提升权限,
首先更新系统:
# apt-get update
安装上官网上要求的工具
# apt-get install lsb-release wget apt-transport-https
添加Matrix官方源
# echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" |
tee /etc/apt/sources.list.d/matrix-org.list
如果上面的命令失败,可以试一试下面这两个手动将官方Matrix源添加到系统的APT的命令:
# add-apt-repository https://matrix.org/packages/debian/
添加存储库的密钥:
# wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -
如果没有问题,就可以更新索引了:
# apt upgrade
然后再次更新系统:
# apt-get update
2、安装Synapse
用下面的命令来安装Synapse:
# apt install matrix-synapse-py3
在安装的过程中,安装程序会弹框要求你输入分配给这台Matrix服务器的名称,也就是域名。这关系到两个部分:1、以后你的用户的@后面的后缀。2、只有这里填写正确了,以后才能加入Matrix网络。
然后安装程序会询问你是否发送匿名统计信息,这个就看个人喜好了。
在安装成功之后,你可以运行
# wget http://localhost:8008
然后
# cat index.html
如果出现了“Synapse is running”相关字眼,则说明搭建成功。我们接下来要做的事是配置它,以便能让它正常使用。
3、配置Synapse
首先说明一下,Synapse的配置文件是/etc/matrix-synapse/homeserver.yaml,接下来我们就需要修改它来配置Synapse。
首先生成一个32位的字符串:
# cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
这是注册的共享机密,任何知道这个的人都可以使用它来在你的服务器上注册用户,包括管理员,因此请务必不要泄露出去。
编辑 /etc/matrix-synapse/homeserver.yaml,找到#registration_shared_secret,删除后面的内容,把机密用英文双引号括起来,然后去除前面的#,就好像:
registration_shared_secret: "uieB2wrx7nV4R9D50p0jfZSgKDRJSWJ7"
接下来,编辑enable_registration的值来启用公共注册,当设置为
nable_registration: true
即代表启用注册,其他人可以在客户端处注册普通用户。nable_registration的值为false或者前面有#则代表关闭注册。当然也可以先开启公共注册,然后在需要使用这个服务器的用户都注册了之后再关闭注册。
修改完成后,保存文件, 然后来安装数据库。
这里安装的数据库是PostgreSQL,来用作Synapse的数据库,因为Synapse的默认数据库是SQLite3,这种数据库的性能很低下,只能勉强支撑Synapse的日常简单使用。因此我们需要安装数据库来替代SQLite3.
输入以下命令来安装 PostgreSQL :
# apt-get install postgresql
PostgreSQL安装完成后会创建一个名为postgres的系统用户作为数据库的管理员,密码随机,所以需要修改密码,这里先登陆为postgres用户,更改数据库里的postgres用户密码,然后创建synapse数据库,最后再退回到root用户,修改系统用户postgres的密码。
首先使用以下的命令登录为postgres用户:
# su postgres
输入以下的命令进入postgres命令行工具:
$ psql
出现“输入 "postgres=#”后,输入以下的命令将数据库的postgres用户的密码重置为“12345678”:
# ALTER USER postgres WITH PASSWORD '12345678';
这里的12345678可以改成想要的值。
接下来输入以下的命令来创建sypanse数据库:
# CREATE DATABASE synapse
ENCODING 'UTF8'
LC_COLLATE='C'
LC_CTYPE='C'
template=template0
OWNER postgres;
上面的命令表示创建的数据库名为SYNAPSE,编码方式为UTF8,拥有者为postgres用户。
然后输入
# /q
来退出工具,之后返回到系统root用户下,输入
# passwd -d postgres
删除系统用户postgres的密码,再使用
# su postgres
重新进入postgres用户,使用
$ passwd
来修改密码。
然后返回root用户,编辑synapse配置文件/etc/matrix-synapse/homeserver.yaml,在文件中找到sqlite3相关的配置,在它们的前面加上#来把它们全部全部注释掉,类似于
#database:
# name: sqlite3
# args:
# database: /var/lib/matrix-synapse/homeserver.db
然后在下面加入PostgreSQL的配置内容,好像
database:
name: psycopg2
args:
user: postgres
password: 12345678
database: synapse
host: 127.0.0.1
cp_min: 5
cp_max: 10
keepalives_idle: 30
keepalives_interval: 10
keepalives_count: 3
上面表示在127.0.0.1地址以postgres用户名,12345678为密码连接synapse数据库。
然后保存配置文件,用
# systemctl restart matrix-synapse
重启服务就行了。
不过在配置文件里还有几个地方需要介绍一下。
media_store_path指定用来保存用户上传的媒体文件的目录;
url_preview_enabled表示开启链接预览,如果开启这个功能,还需要同时开启url_preview_ip_range_blacklist(即解除这一部分配置的注释)
trusted_key_servers可以用来填上其他你知道的Matrix的服务器,默认是matrix.org。另外,如果 trusted_key_servers 中有 matrix.org,需要将下面的suppress_key_server_warning设为 true,否则启动时会有警告。
email模块可以配置SMTP给用户发信。
redis部分用来给Synapse开启redis缓存服务。
配置文件 /etc/matrix-synapse/homeserver.yaml里其他内容我也还在摸索,官方的详细说明可以在这里看到
确定一切都修改完成后,保存文件,并用
# systemctl restart matrix-synapse
来重新启动Synapse服务器。
重启完成后,需要注册一个管理员用户。用
# register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
来创建用户,按照提示输入用户名、密码,当提示是否为管理员时,输入yes来将用户注册为管理员。在终端中创建用户不受配置文件中的 enable_registration 参数影响。
最后,我们来设置Synapse开机启动,这样服务器一开机,Synapse就开始运行了。
# systemctl enable matrix-synapse
4、设置外部访问
当安装完Synapse以后,你会发现Synapse仅在本地可以访问,虽然我们可以修改配置文件 /etc/matrix-synapse/homeserver.yaml来让它为外网提供服务,但是这并不是官方推荐的做法,官方推荐的做法就是用Nginx进行反向代理。
所以,首先安装nginx:
# apt-get install nginx
接下来,需要创建一个对应Synapse反向代理的虚拟主机配置文件,nginx的虚拟主机文件默认存在于/etc/nginx/sites-available目录下。
在这个目录下创建一个虚拟主机配置文件,这里以matrix.conf为例:
# nano /etc/nginx/sitees-available/matrix.conf
在文件中输入以下内容:
server {
listen 443 ssl;
listen [::]:443 ssl;
client_max_body_size 10480M; #设置nginx上传大小为10G
ssl_certificate /home/debianuser/certs/Server_root.crt;
ssl_certificate_key /home/debianuser/certs/Server_private.key; #这里修改为服务器域名对应的SSL证书的证书和私钥地址
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name matrix.example.com; #把matrix.example.com换成服务器的域名
location /{
ssl_certificate /home/eastmoe/certs/Server_root.crt;
ssl_certificate_key /home/eastmoe/certs/Server_private.key;
proxy_pass http://127.0.0.1:8008; #如果你的Synapse服务器不是运行在8008端口,请修改这里的端口号
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ /.well-known {
allow all;
}
}
如上面所示,修改域名和证书。上传大小则受到此处nginx与Synapse配置的双重限制。
然后重启nginx,来让我们的配置生效。
# systemctl restart nginx
然后就是防火墙了,使用ufw防火墙放行指定端口:
# ufw allow 443
# ufw allow 22
然后可以用
# ufw status
来查看端口开放情况。
5、结束语与其他
完成这一切之后,理论上就可以使用客户端(比如Element)连接到服务器,开始使用了。注意, Element 要在开始的“选择服务器”里选择其他,然后输入你的服务器地址进行连接。
原本想多插一些图的,想想看还是算了。
下次我会来尝试搭建一下element的WebUI和Nextcloud Talk。
6、参考资料
2、如何在CVM上安装Matrix Synapse - 云+社区 - 腾讯云
Comments 5 条评论
博主 InkNight_DedNET
捉虫,修改Matrix配置文件时允许注册代码应为
博主 89060607
添加Matrix官方源 这部分就失败了,进行不下去了
博主 yh
大佬的matrix还在用吗?可不可以加个matrix ID聊一聊?
博主 KeithX
捉个虫,退出psql的语句应该是\q,斜杠方向反了。
博主 admin
@KeithX 谢谢你的反馈!