Matrix 是一个开放的联邦式的用 于即时通信( IM )、 IP 语音( VoIP )和物联网 ( IoT )的开放 API。
Matrix 的工作方式有点像电子邮件,但更即时、更安全:
您需要在服务提供商处注册一个账户
无论你的服务提供商是谁,你都可以与其他服务提供商的用户进行交流
同样,您可以使用 Outlook 或 Thunderbird 访问同一个邮箱账户,您也可以使用不同的 Matrix 应用程序访问同一个 Matrix 账户。
概念
中心服务器
一个 homeserver 是一个托管 Matrix 用户账户的软件。它绑定到一个单一的域名,该域名在时间上不能改变。服务器上的账户有一个标识符,由本地部分(用户名)和服务器部分组成,后者是 homeserver 的(虚拟)域名。
一个典型的标识符会是这样的:
@username:example.com
客户端
服务器之间通过服务器-服务器/联邦 API 进行通信,但它们也与客户端以标准方式进行通信:客户端-服务器 API。
客户端是能够使用 Matrix 账户从特定 homeserver 接收和发送事件的软件组件。客户端本身仅与它们所使用的账户的 homeserver 进行通信。如果客户端使用 @alice:example.com 账户,它们将只与 example.com 进行通信。
最常见类型的客户端是面向用户的。在即时通讯的情况下,这些客户端将聊天室显示为消息的时间线,用户加入、离开、撤回消息
应用服务
许多 Matrix机器人 是非人类客户端。它们可以使用与常规客户端相同的 SDK 进行构建,而不是显示 UI 来展示正在发生的事情,它们将监听事件、解析它们,例如发送自动回复。
简单与高级机器人
一个简单的机器人示例可以是 RSS 机器人:它会订阅完全位于 Matrix 之外的 RSS 源,每当它看到源中新的条目时,就会在特定的 Matrix 房间中发布一条消息,消息中包含条目的名称。
这样的机器人不过是一个非常有限且专业的客户端。
但有时你需要获得一个更全面的视角,了解你的家庭服务器上正在发生的事情,以便采取行动。
如果您想编写一个反垃圾邮件模块,例如,您需要能够读取公共房间中的每一条消息,以检测模式并触发警报或直接采取行动。
要在机器人中实现这一功能,您需要将机器人邀请到每个需要进行监控的房间中。应用服务能够监控其命名空间内所有未加密的事件(发送/编辑/撤回的消息,人员加入或离开房间)。
桥接器
有时,你需要做的不仅仅是成为一双无所不见的眼睛:你还需要能够自动创建用户和房间。一个典型的用例是桥接。桥接器允许你将 Matrix 社区连接到第三方平台,例如 IRC、Discord 或 Slack。这些社区的用户在 Matrix 上看起来像是原生用户,理想情况下,在第三方平台上也是如此。
Matrix端通过网关创建的,用以模拟第三方平台用户的用户名为
ghosts。第三方平台通过网关创建的模拟 Matrix 用户的用户名为
puppets。

为了实现这一点,该桥接器需要能够在 Matrix 上创建和冒充用户,以及控制房间。为了限制滥用风险,桥接器可以限制在控制一个命名空间。
自建服务
虽然 matrix.org 免费提供服务,但是由于地区限制,您的网络可能无法访问该节点。
前置准备
条件不是必须的,如果您不需要公网访问的情况下。
Linux 也不是绝对的,Nas系统,1Panel 面板,均可。
如果您使用 Windows 可以参考 WSL2 的部署安装
域名 x1
Linux 服务器 x1
网络可连接 Docker Hub
安装 1Panel
请参考 Docker 应用商店 - 1Panel 版本 的安装
通过 Docker-Compose 安装
可参考配置文件
服务端
服务端 - 用户管理
客户端 - 网页版
通过 1Panel 安装
完成 第三方应用商店 安装后,即可即可进行下一步。
安装服务端
请重点记住 持久化目录,修改配置需要在此目录下进行。


查看配置文件
通过 主机 >> 文件 >> 查看持久化目录
查看以下配置文件是否存在
homeserver.yaml服务端配置文件{域名}.signing.key签名文件{域名}.log.config日志配置文件
这些是服务端运行的基础配置文件,缺一不可,将无法启动。
修改配置
修改 homeserver.yaml 配置,不存在的配置追加到末尾即可
开启注册功能
enable_registration: true【可选】 开启邮箱验证
开启此配置,需要配置电子邮件功能
registrations_require_3pid:
- email
allowed_local_3pids:
- medium: email
pattern: '^[^@]+@qq\.com$'
- medium: email
pattern: '^[^@]+@163\.com$'
- medium: email
pattern: '^[^@]+@126\.com$'registrations_require_3pid其他支持email邮箱msisdn手机号
allowed_local_3pids【可选】限定验证类型medium验证类型,匹配registrations_require_3pidpattern验证正则规则
【可选】电子邮件配置
email:
smtp_host: mail.server # SMTP 服务器地址
smtp_port: 587 # SMTP 端口
smtp_user: "exampleusername" # SMTP 用户名
smtp_pass: "examplepassword" # SMTP 密码
force_tls: true # 是否强制使用 TLS
require_transport_security: true # 是否需要传输安全
enable_tls: false # 是否启用 TLS
notif_from: "您的朋友 %(app)s 即时通讯服务器 <noreply@example.com>" # 通知邮件的发件人
app_name: my_branded_matrix_server # 应用程序名称
enable_notifs: true # 是否启用通知
notif_for_new_users: false # 是否为新用户启用通知
client_base_url: "http://localhost/riot" # 客户端基础 URL
validation_token_lifetime: 15m # 验证令牌有效期
invite_client_location: https://app.element.io # 邀请链接客户端位置
subjects:
message_from_person_in_room: "[%(app)s] 您收到了来自 %(person)s 在 %(room)s 房间的消息..." # 来自房间中某人的消息通知
message_from_person: "[%(app)s] 您收到了来自 %(person)s 的消息..." # 来自某人的消息通知
messages_from_person: "[%(app)s] 您收到了来自 %(person)s 的多条消息..." # 来自某人的多条消息通知
messages_in_room: "[%(app)s] 您在 %(room)s 房间中有新消息..." # 房间中的新消息通知
messages_in_room_and_others: "[%(app)s] 您在 %(room)s 房间及其他房间中有新消息..." # 房间及其他房间中的新消息通知
messages_from_person_and_others: "[%(app)s] 您收到了来自 %(person)s 和其他人的消息..." # 来自某人和其他人的消息通知
invite_from_person_to_room: "[%(app)s] %(person)s 邀请您加入 %(room)s 房间..." # 来自某人的房间邀请通知
invite_from_person: "[%(app)s] %(person)s 邀请您聊天..." # 来自某人的聊天邀请通知
password_reset: "[%(server_name)s] 密码重置" # 密码重置通知
email_validation: "[%(server_name)s] 验证您的邮箱" # 邮箱验证通知
【可选】管理员联系方式
admin_contact: 'mailto:admin@server.com'【可选】网页客户端重定向
web_client_location: https://riot.example.com/数据库配置
默认采用 SQLite 存储数据
database:
name: sqlite3
args:
database: /path/to/homeserver.db
我们推荐您使用 PostgreSQL 作为数据引擎
database:
name: psycopg2
txn_limit: 10000
# allow_unsafe_locale: true
args:
user: synapse_user
password: synapse_password
dbname: synapse
host: localhost
port: 5432
cp_min: 5
cp_max: 10
将 sqlite3 配置进行覆盖
修改配置
user:
synapse_user连接 用户名password:
synapse_password连接 密码dbname:
synapse数据库 名称host:
localhost数据库 主机地址port:
5432数据库 端口
allow_unsafe_locale如果postgres db设置为非C语言环境,Synapse将拒绝启动。
如果您发现您的服务无法启动,可以尝试取消注释此配置
绑定服务域名
例如,我们准备的域名为:matrix.example.com
请将该域名的 DNS 解析指向服务器地址。

访问域名,看到 running 说明服务端部署完成

创建管理员账户
将 <> 修改为对应参数
# 创建管理员账户
register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u <adminName> -p <password> -a
# 创建普通用户
register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u <userName> -p <password>
# 查看命令帮助
register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --help
# 创建管理员示例
register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -u root -p admin@root -a
至此服务端主体工作就已完成。
安装 服务端后台
可视化管理,注册账户,聊天房间。


安装 网页客户端

完成安装

浏览器不支持
如果您遇到此问题,请升级您的浏览器。
Element 仅支持最后版本的 Chrome、Edge、Firefox、Safari

修改配置
官方推荐配置
{
"default_server_name": "matrix.org",
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix-client.matrix.org"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
},
"brand": "Element",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
"integrations_widgets_urls": [
"https://scalar.vector.im/_matrix/integrations/v1",
"https://scalar.vector.im/api",
"https://scalar-staging.vector.im/_matrix/integrations/v1",
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
],
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"uisi_autorageshake_app": "element-auto-uisi",
"show_labs_settings": false,
"room_directory": {
"servers": ["matrix.org", "gitter.im"]
},
"enable_presence_by_hs_url": {
"https://matrix.org": false,
"https://matrix-client.matrix.org": false
},
"terms_and_conditions_links": [
{
"url": "https://element.io/privacy",
"text": "Privacy Policy"
},
{
"url": "https://element.io/cookie-policy",
"text": "Cookie Policy"
}
],
"posthog": {
"project_api_key": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
"api_host": "https://posthog.element.io"
},
"privacy_policy_url": "https://element.io/cookie-policy",
"map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx",
"setting_defaults": {
"RustCrypto.staged_rollout_percent": 60
},
"features": {
"feature_video_rooms": true,
"feature_group_calls": true,
"feature_element_call_video_rooms": true
},
"element_call": {
"url": "https://call.element.io"
}
}配置修改
default_server_name修改为服务端地址示例:
matrix.example.com
default_server_config修改默认访问配置m.homeserver服务认证地址base_url修改为 服务端地址并携带协议示例:
https://matrix.example.com
m.identity_server身份服务认证地址base_url修改为 服务端地址并携带协议示例:
https://matrix.example.com
brand网页显示标题示例:
聊天室
其他可修改配置
{
"room_directory": {
"servers": [
"matrix.example.com",
"matrix.org"
]
},
"enable_presence_by_hs_url": {
"https://matrix.example.com": false,
"https://matrix.org": false,
"https://matrix-client.matrix.org": false
}
}开始享受


客户端支持
移动客户端
桌面客户端
Linux
sudo apt install -y wget apt-transport-https
sudo wget -O /usr/share/keyrings/element-io-archive-keyring.gpg https://packages.element.io/debian/element-io-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian/ default main" | sudo tee /etc/apt/sources.list.d/element-io.list
sudo apt update
sudo apt install element-desktop服务支持
如需远程部署安装,可通过以下服务下单。
该商城支持开票服务,如需开票,请在下单后联系客服说明情况。
PC 端
手机端
