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_3pid
pattern
验证正则规则
【可选】电子邮件配置
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
服务支持
如需远程部署安装,可通过以下服务下单。
该商城支持开票服务,如需开票,请在下单后联系客服说明情况。