Matrix Synapse 去中心化加密聊天服务器部署教程(开源no IM)
我的博客上完整文章:Matrix Synapse 去中心化加密聊天服务器部署教程
部署
1. 部署PostgreSQL
安装过程可以参照搜索引擎,这样不过多阐述
创建数据库
如果你的数据库超级用户名为user
psql -U user # 进入数据库
创建一个新用户(假设用户名为 synapse_user):
CREATE USER synapse_user WITH PASSWORD 'password';
将 password 替换为你想要设置的密码。
创建数据库 synapse
CREATE DATABASE synapse
WITH ENCODING 'UTF8'
LC_COLLATE 'C'
LC_CTYPE 'C'
TEMPLATE template0;
GRANT ALL PRIVILEGES ON DATABASE synapse TO synapse_user;
2. 安装 Synapse
因为我希望 Synapse 服务器的 server_name(用户 ID 的后缀,如 @user:my-example.com)与实际访问的域名(如 chat.my-example.com,你服务器分配的域名),所以要通过 Delegation(委托) 来实现。
在 server_name 的根域名(my-example.com)下,创建一个 .well-known/matrix/server 文件,内容如下:
{
"m.server": "chat.my-example.com:443"
}
这个文件告诉其他 Matrix 服务器,实际的 Synapse 服务器地址是 chat.my-example.com:443
docker 部署
安装docker 的操作可以见搜索引擎
docker run -it --rm -v /data/matrix-synapse-data/:/data/ -e SYNAPSE_SERVER_NAME=你的服务端域名 -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:latest generate
解释一下各个参数:
-e SYNAPSE_REPORT_STATS 是否发送匿名统计数据
-v /data/matrix-synapse-data/:/data/ 是映射的具体路径,可以不用修改
-e SYNAPSE_SERVER_NAME 是你的服务端域名,不是 server_name
Synapse 配置
到了本片教程最坑的地方,一定要注意,同时yml有严格的缩进和标点,出错了要仔细排除
配置 Synapse 主要是配置位于 /data/matrix-synapse-data/ 的 homeserver.yaml
这里给出我的示例,一定要注意!其他内容可以参照官方文档Configuration - Synapse
server_name: "my-example.com"
public_baseurl: https://chat.my-example.com/ #输入你的域名
pid_file: /data/homeserver.pid
listeners:
- port: 8008
tls: false
type: http
x_forwarded: true
resources:
- names: [client, federation, openid]
compress: false
database: #按照你的数据库配置
name: psycopg2
args:
user: synapse_user
password: password
database: synapse
host: 192.168.1.1
cp_min: 5
cp_max: 10
keepalives_idle: 30
keepalives_interval: 10
keepalives_count: 3
log_config: "/data/dorimu.cn.log.config"
media_store_path: /data/media_store
# 这几行自动生成的,内容不要动
registration_shared_secret: ""
report_stats: false
macaroon_secret_key: ""
form_secret: ""
signing_key_path: ""
trusted_key_servers:
- server_name: "matrix.org"
suppress_key_server_warning: true
# 为新用户启用注册
enable_registration: true
# 无需电子邮件或 recaptcha 验证即可注册(其实不推荐)
enable_registration_without_verification: false
email: #邮件配置
smtp_host: smtp-mail.outlook.com
smtp_port: 587
smtp_user: "11" #用户名
smtp_pass: "11"
force_tls: false
require_transport_security: false
enable_tls: true
notif_from: "user" #用户名
enable_notifs: true
notif_for_new_users: false
client_base_url: "https://my-example.com"
validation_token_lifetime: 15m
invite_client_location: https://my-example.com
registrations_require_3pid:
- email
运行
docker run -d --name synapse -v /data/matrix-synapse-data/:/data/ -p 8008:8008 -p 8009:8009 -p 8448:8448 matrixdotorg/synapse:latest
创建管理员用户
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -a -u 用户名 -p 密码
3. Nginx 反向代理
location ^~ /_matrix/ {
proxy_pass http://127.0.0.1:8008;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.0;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
}
location ^~ /_synapse/ {
proxy_pass http://127.0.0.1:8007;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.0;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
}
4. 按照网页端和管理端(可选)
网页端
element-hq/element-web: A glossy Matrix collaboration client for the web.
去release下载最新版解压到服务器网站目录即可(静态部署)
记得更改config.sample.json ,里面要改成你的服务器地址,文件名变更为config.json
管理端
Awesome-Technologies/synapse-admin: Admin console for synapse Matrix homeserver
去release下载最新版解压到服务器网站目录即可(静态部署)
5. 测试
用 Matrix Federation Tester 进行测试。输入 server_name ,观察输出结果。
我的博客上完整文章:Matrix Synapse 去中心化加密聊天服务器部署教程

浙公网安备 33010602011771号