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 去中心化加密聊天服务器部署教程

posted @ 2025-02-04 11:13  Dorimui  阅读(570)  评论(0)    收藏  举报