在开始之前
如果你对相关概念不太熟悉,可以跳转到最下面的介绍。
部署
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
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:是你的服务端域名
Synapse 配置
配置位于 /data/matrix-synapse-data/ 的 homeserver.yaml。
server_name: "my-example.com"public_baseurl: https://chat.my-example.com/ # 输入你的域名pid_file: /data/homeserver.pidlisteners: - port: 8008 tls: false type: http x_forwarded: true resources: - names: [client, federation, openid] compress: falsedatabase: # 按照你的数据库配置 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: 3log_config: "/data/dorimu.cn.log.config"media_store_path: /data/media_store
# 这几行自动生成的,内容不要动registration_shared_secret: ""report_stats: falsemacaroon_secret_key: ""form_secret: ""signing_key_path: ""
trusted_key_servers: - server_name: "matrix.org"suppress_key_server_warning: trueenable_registration: trueenable_registration_without_verification: falseemail: # 邮件配置 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.comregistrations_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?
Matrix 协议的灵活性和安全性使其成为一个强大的通信解决方案,特别适用于那些关注隐私和通信自由的用户。开放性和互操作性使 Matrix 协议成为一个极有前景的通信标准。
Matrix 有以下特点:
- 分散式架构:Matrix 采用了分散式架构,没有单一的中央服务器,而是由多个独立的服务器组成网络。这意味着用户可以选择自己的服务器,或者自行托管服务器,而不必依赖单一的服务提供商。
- 端到端加密:Matrix 提供了端到端加密的支持,确保消息在发送方和接收方之间加密,中间服务器无法访问消息内容。这提供了高级的通信隐私和安全性。
- 互操作性:Matrix 的一个主要目标是实现不同通信应用之间的互操作性。这意味着用户可以使用不同的客户端应用程序,仍然能够与其他用户进行通信,无论他们使用哪种应用程序或服务器。
- 开源和开放标准:Matrix 协议是一个开放标准,可供任何人查看和实施。这种开放性有助于确保安全性和可扩展性,并减少了隐藏的后门风险。
- 多种身份验证机制:Matrix 支持多种身份验证方式,包括用户名和密码、单点登录、OpenID Connect 等,使用户能够选择适合他们需求的身份验证方式。
- 活跃的社区支持:Matrix 社区非常活跃,有大量的开发者和用户参与,不断改进和扩展协议,以满足不断变化的通信需求。
作为一个去中心化通讯协议,你可以使用不同的客户端(只要客户端支持 Matrix 协议),连接到任意一个 Matrix 服务端。
Matrix 协议支持诸多特性:
- 去中心化通信(选择任意一台 Matrix 服务器创建账号,再通过 “联邦” 和其它服务器上的用户通信)
- 端到端加密
- WebRTC 语音通话 / 视频通话(没错!Matrix 协议居然支持视频通话)
- 消息已读提示
- 输入状态提示
- 群组聊天
什么是端到端加密?
端到端加密可以理解为是两台终端的直接通信,我们举个例子更容易理解:
假设小明用 A 设备 给小红的 B 设备 发了一条消息,这时候小黑想看看他俩在聊什么,于是小黑盗取了小红的账号密码,并成功在 C 设备 上登录了小红的账号。
小黑能不能看到他们俩的聊天记录呢?不能。在端到端加密对话中,所有发出去的消息都会被自动加密。
当小明给小红发送一段消息时,还会自动附上一串用于解密这段消息的 解密密钥 。小红在 B 设备 上收到消息时,同时收到了这串 解密密钥 ,所以能正常查看消息。但小黑后来登录时使用的 C 设备 并没有收到 解密密钥 ,因此无法解密这些历史消息。
端到端加密算是当今相对最安全的一种隐私保护方式,能够满足大多数人的安全需求。
Synapse 是什么?
Matrix 是一个协议,而 Matrix Synapse 则是 Matrix 协议的一个具体实现。
除了 Synapse,Matrix 还包含许多其它分支,例如 Dendrite:
另外,Synapse 本身也只是一个不包含图形界面的服务端,我们还需要一个支持 Matrix 协议的客户端才能正常聊天。常见支持 Matrix 协议的客户端例如 Element (最为熟知和常用)
部分信息可能已经过时









