Conduit 是一个用 Rust 编写的、支持基础的 Matrix 协议 的服务器后端。不建议用在生产环境中,因为功能真的很少,只支持基础的加密聊天、语音视频、文件分享,文档又少。如果买了小内存机、想弄一个自用的端到端加密聊天服务器的可以试试。
注意:
- 它要求 glibc 版本在 2.29 以上,所以至少需要 Debian 11, Ubuntu 20 或 Arch 大法(大雾)。
- 在 electron 界面注册的第一个用户为 admin,后续为普通。把普通用户拉入 Admin Room 就可以变成 admin 了。无需手动添加。
安装笔记[1]如下:
# 安装 Element-Web(可选,若使用客户端可以忽略)
wget https://github.com/vector-im/element-web/releases/download/v1.11.33/element-v1.11.33.tar.gz # 最好更改为最新版本,下面一并更改
tar xf element-v1.11.33.tar.gz
cp element-v1.11.33/config.sample.json element-v1.11.33/config.json
vim element-v1.11.33/config.json # 修改 m.homeserver 为你的服务器
# gzip 静态压缩(可选,推荐)
for i in element-v1.11.33/bundles/*/*.js; do
if [ `ls -l $i | head -1 | awk '{print $5}'` -gt $((1024)) ]; then
gzip -k $i -7
fi
done
for i in element-v1.11.33/bundles/*/*.css; do
if [ `ls -l $i | head -1 | awk '{print $5}'` -gt $((1024)) ]; then
gzip -k $i -7
fi
done
sudo mv element-v1.11.33 /var/www/element
sudo vim /etc/nginx/nginx.conf # 看下面,这里使用 nginx 作为代理服务器
# 安装 conduit 后端
sudo wget -O /usr/local/bin/matrix-conduit "https://gitlab.com/famedly/conduit/-/jobs/artifacts/master/raw/build-output/linux_amd64/conduit?job=docker:master" && sudo chmod +x /usr/local/bin/matrix-conduit
sudo vim /etc/systemd/system/conduit.service # 看下面
sudo mkdir /etc/matrix-conduit
sudo vim /etc/matrix-conduit/conduit.toml # 看下面
sudo systemctl daemon-reload
sudo systemctl start conduit
/etc/nginx/nginx.conf
...
http {
...
tcp_nopush on;
tcp_nodelay on;
gzip on; # gzip 配置
gzip_min_length 1k;
gzip_comp_level 5;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css application/json;
gzip_static on; # 若不用 element-web 或没有前述 gzip 静态压缩,可以删除此行
server { # https 跳转
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2; # 支持 http2
server_name 你的域名;
root /var/www/element; # 若不用 element-web 可删除
location /.well-known/matrix/client {
return 200 '{"m.homeserver": {"base_url": "https://你的域名"}}';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
location /.well-known/matrix/server {
return 200 '{ "m.server": "你的域名:443" }';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
location ~ ^(/_matrix) {
proxy_pass http://127.0.0.1:8008;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
client_max_body_size 40M; # 根据 conduit.toml 中设置决定
proxy_http_version 1.1;
}
}
}
...
/etc/systemd/system/conduit.service
[Unit]
Description=Conduit Matrix Server
After=network.target
[Service]
Environment="CONDUIT_CONFIG=/etc/matrix-conduit/conduit.toml"
User=conduit
DynamicUser=yes
LogsDirectory=matrix-conduit
StateDirectory=matrix-conduit
Restart=always
ExecStart=/usr/local/bin/matrix-conduit
[Install]
WantedBy=multi-user.target
/etc/matrix-conduit/conduit.toml
[global]
server_name = "你的域名"
database_path = "/var/lib/matrix-conduit/"
database_backend = "rocksdb"
port = 8008
max_request_size = 40_000_000 # in bytes
allow_registration = true
allow_federation = true
trusted_servers = ["你的域名"]
log = "warn,state_res=warn,rocket=off,_=off,sled=off"
address = "127.0.0.1"
由于很多地方需要手动更改或者需要编辑配置文件,这段 bash 并不能作为一键脚本复制粘贴运行。 ↩︎