简介
Conduit 是一个用 Rust 编写的 Matrix 服务端,它是一个轻量级的 Matrix 服务器,旨在提供一个快速、可靠的 Matrix 服务端,同时保持简单和可读性。
Matrix 是一个安全和去中心化的开放网络通信协议。来自任何 Matrix 主机服务器的用户都可以与其他 Matrix 服务器上的用户进行聊天。 你甚至可以使用桥接器(也称为 Matrix 应用服务)与 Matrix 之外的用户进行通信,比如 Discord 上的社区。
在 nanopi R5S 上运行时,CPU 占用率在 1%左右,内存占用率在 100MB 左右。
安装和编译
从官方仓库克隆源代码,然后使用cargo
编译。
你需要先安装rust
,可以参考这里。
# 克隆仓库
git clone https://gitlab.com/famedly/conduit
cd conduit
# 安装编译所需的依赖
sudo apt install libclang-dev build-essential
# 编译
cargo build --release
创建用户
创建一个名为conduit
的用户,用于运行conduit
服务。
sudo adduser --system conduit --group --disabled-login --no-create-home
防火墙配置
Conduit 使用端口 443 和 8448,这两个端口需要在防火墙中打开。
如果 Conduit 运行在路由器后面或容器中,并且具有与主机系统不同的公共 IP 地址,则需要直接或间接地将这些公共端口转发到配置中提到的端口。
配置 systemd 服务
创建/etc/systemd/system/conduit.service
文件,内容如下:
[Unit]
Description=Conduit Matrix Server
After=network.target
[Service]
Environment="CONDUIT_CONFIG=/etc/conduit/conduit.toml"
User=conduit
Group=conduit
Restart=always
ExecStart=/path/to/conduit
[Install]
WantedBy=multi-user.target
重新加载systemd
配置。
sudo systemctl daemon-reload
配置
Conduit 的配置文件位于/etc/conduit/conduit.toml
,内容如下:
[global]
# 这是 Conduit 服务器的名称,它将作为用户和房间 ID 的后缀。
#server_name = "your.server.name"
# 这是 Conduit 将保存其数据的唯一目录
database_path = "/var/lib/matrix-conduit/"
database_backend = "rocksdb"
# Conduit 运行的端口。您需要在您的 Web 服务器(例如 apache 或 nginx)中设置反向代理,
# 以便将端口 443 和 8448 的所有请求转发到运行在此端口上的 Conduit 实例
# Docker 用户:不要更改此项,您需要将外部端口映射到此端口。
port = 6167
# 上传的最大大小
max_request_size = 20_000_000 # in bytes
# 启用注册。如果设置为 false,则无法在此服务器上注册用户。
allow_registration = true
allow_federation = true
allow_check_for_updates = true
# 从中获取公钥的服务器。
trusted_servers = ["matrix.org"]
#max_concurrent_requests = 100 # Conduit 同时发送给其他服务器的请求数量
#log = "warn,state_res=warn,rocket=off,_=off,sled=off"
address = "127.0.0.1" # 这样可以确保只能通过反向代理访问 Conduit
#address = "0.0.0.0" # # 如果 Conduit 在容器中运行,请确保反向代理可以访问它。
配置文件夹权限
我们使用 Conduit 特定的用户,需要允许它读取配置文件。在 Debian 或 RHEL 上,可以运行以下命令:
sudo chown -R root:root /etc/matrix-conduit
sudo chmod 755 /etc/matrix-conduit
如果使用默认的数据库路径,还需要运行以下命令:
sudo mkdir -p /var/lib/matrix-conduit/
sudo chown -R conduit:conduit /var/lib/matrix-conduit/
sudo chmod 700 /var/lib/matrix-conduit/
配置反向代理
Conduit 服务器需要一个反向代理,以便将端口 443 和 8448 的所有请求转发到运行在此端口上的 Conduit 实例。
nginx
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
listen 8448 ssl http2;
listen [::]:8448 ssl http2;
server_name your.server.name; # EDIT THIS
merge_slashes off;
# Nginx defaults to only allow 1MB uploads
# Increase this to allow posting large files such as videos
client_max_body_size 20M;
location /_matrix/ {
proxy_pass http://127.0.0.1:6167$request_uri;
proxy_set_header Host $http_host;
proxy_buffering off;
proxy_read_timeout 5m;
}
ssl_certificate /etc/letsencrypt/live/your.server.name/fullchain.pem; # EDIT THIS
ssl_certificate_key /etc/letsencrypt/live/your.server.name/privkey.pem; # EDIT THIS
ssl_trusted_certificate /etc/letsencrypt/live/your.server.name/chain.pem; # EDIT THIS
include /etc/letsencrypt/options-ssl-nginx.conf;
}
ssl
你可以使用certbot
来获取免费的证书。
sudo certbot -d your.server.name
启动服务
sudo systemctl enable conduit
sudo systemctl start conduit