使用 Ansible 和 Docker 搭建 Matrix(一个用于安全、去中心化通信的开放网络)服务器
目的
这个 Ansible playbook 旨在帮助您运行自己的 Matrix 家庭服务器,以及与之相关的各种服务。
也就是说,它允许您使用自己的 @<用户名>:<您的域名>
标识符加入 Matrix 网络,所有服务都托管在您自己的服务器上(参见前提条件)。
我们在 Docker 容器中运行所有服务(参见我们使用的容器镜像),这让我们能够在多个支持的发行版(参见前提条件)和架构(推荐 x86/amd64)上拥有可预测且最新的设置。
使用 Ansible 自动化安装(升级)和一些维护任务(参见我们的 Ansible 指南)。
自托管或托管服务 / SaaS
这个 Ansible playbook 试图使自托管和维护 Matrix 服务器变得相当容易。尽管如此,顺利运行任何服务仍然需要知识、时间和精力。
如果您喜欢这个 Ansible playbook 的 FOSS 精神,但更愿意将责任交给其他人,您也可以从 etke.cc 获得托管的 Matrix 服务器(托管和本地部署) - 这是一个基于这个 Ansible playbook 构建的服务,但具有额外组件和服务,它们都可以帮助您轻松运行 Matrix 服务器。请注意,etke.cc 采用基于订阅的方式运营,没有"只设置一次服务器就完事"的选项。
支持的服务
使用这个 playbook,您可以在服务器上配置以下服务列表。基本上,这个 playbook 旨在让您无需做任何其他事情就能启动并运行 Matrix 所需的所有必要组件。
注意:以下列表是详尽的。它包括一些可选或甚至高级组件,您很可能不需要这些组件。 坚持使用默认设置(安装上述组件的子集)是最佳选择,尤其是对于新安装。 您以后随时可以重新运行 playbook 来添加或删除组件。
家庭服务器
家庭服务器是您的 Matrix 系统的骨干。从以下列表中选择一个。
名称 | 默认? | 描述 | 文档 |
---|---|---|---|
Synapse | ✓ | 存储您的数据并管理您在 Matrix 网络中的存在 | 链接 |
Conduit | x | 存储您的数据并管理您在 Matrix 网络中的存在。Conduit 是一个轻量级的开源 Matrix 规范服务器实现,注重易于设置和低系统要求 | 链接 |
Dendrite | x | 存储您的数据并管理您在 Matrix 网络中的存在。Dendrite 是用 Go 编写的第二代 Matrix 家庭服务器,是 Synapse 的替代方案 | 链接 |
客户端
您可以在自己的域名上托管的 Matrix 网页客户端。
名称 | 默认? | 描述 | 文档 |
---|---|---|---|
Element | ✓ | Web UI,默认配置为连接到您自己的 Synapse 服务器 | 链接 |
Hydrogen | x | 轻量级 Matrix 客户端,支持旧版和移动浏览器 | 链接 |
Cinny | x | 简单、优雅和安全的网页客户端 | 链接 |
SchildiChat | x | 基于 Element,提供更传统的即时通讯体验 | 链接 |
服务器组件
在服务器上运行以使安装的各个部分正常工作的服务。
名称 | 默认? | 描述 | 文档 |
---|---|---|---|
PostgreSQL | ✓ | Synapse 的数据库。也可以使用外部 PostgreSQL 服务器 | 链接 |
Coturn | ✓ | WebRTC 音频/视频通话的 STUN/TURN 服务器 | 链接 |
Traefik | ✓ | Web 服务器,监听 80、443 和 8448 端口 - 位于所有其他服务的前面。可以使用您自己的 Web 服务器 | 链接 |
Let's Encrypt | ✓ | 免费 SSL 证书,用于保护与所有组件的连接 | 链接 |
ma1sd | x | Matrix 身份服务器 | 链接 |
Exim | ✓ | 邮件服务器,所有 Matrix 服务通过它发送出站电子邮件(可以配置为通过另一个 SMTP 服务器中继) | 链接 |
Dimension | x | Matrix 客户端的开源集成管理器 | 链接 |
Sygnal | x | 推送网关 | 链接 |
ntfy | x | 推送通知服务器 | 链接 |
身份验证
扩展和修改用户在您的家庭服务器上的身份验证方式。
名称 | 默认? | 描述 | 文档 |
---|---|---|---|
matrix-synapse-rest-auth(高级) | x | REST 身份验证密码提供程序模块 | 链接 |
matrix-synapse-shared-secret-auth(高级) | x | 密码提供程序模块 | 链接 |
matrix-synapse-ldap3(高级) | x | LDAP 身份验证密码提供程序模块 | 链接 |
matrix-ldap-registration-proxy(高级) | x | 处理 Matrix 注册请求并将其转发到 LDAP 的代理 | 链接 |
matrix-registration | x | 一个简单的 Python 应用程序,用于基于令牌的 Matrix 注册 | 链接 |
文件存储
使用替代文件存储来代替默认的 media_store
文件夹。
名称 | 默认启用? | 描述 | 文档 |
---|---|---|---|
Goofys | x | 用于 Synapse 内容存储库(media_store )文件的 Amazon S3(或其他兼容 S3 的对象存储)存储 | 链接 |
synapse-s3-storage-provider | x | 用于 Synapse 内容存储库(media_store )文件的 Amazon S3(或其他兼容 S3 的对象存储)存储 | 链接 |
matrix-media-repo | x | matrix-media-repo 是一个高度可定制的多域媒体存储库,专为 Matrix 设计。适用于中型到大型部署,这个媒体存储库在完全符合规范的同时对媒体进行去重。 | 链接 |
桥接器
桥接器可用于将您的 Matrix 安装与第三方通信网络连接。
机器人
机器人为您的安装提供各种额外功能。
名称 | 默认? | 描述 | 文档 |
---|---|---|---|
matrix-reminder-bot | x | 用于安排一次性和重复提醒及闹钟的机器人 | 链接 |
matrix-registration-bot | x | 通过创建和管理注册令牌进行邀请的机器人 | 链接 |
maubot | x | 基于插件的Matrix机器人系统 | 链接 |
honoroit | x | 帮助台机器人 | 链接 |
Postmoogle | x | 电子邮件转Matrix机器人 | 链接 |
Go-NEB | x | 用Go编写的多功能机器人 | 链接 |
Mjolnir | x | Matrix的审核工具 | 链接 |
Draupnir | x | Matrix的审核工具(Mjolnir的分支) | 链接 |
Buscarron | x | 网页表单(HTTP POST)转Matrix | 链接 |
matrix-chatgpt-bot | x | 从Matrix访问ChatGPT | 链接 |
管理
帮助您管理和监控Matrix安装的服务。
名称 | 默认? | 描述 | 文档 |
---|---|---|---|
synapse-admin | x | 用于管理Matrix服务器上的用户和房间的Web UI工具 | 链接 |
指标和图表 | x | 包括Prometheus时间序列数据库服务器、Prometheus node-exporter主机指标导出器和Grafana Web UI | 链接 |
Borg | x | 备份 | 链接 |
Rageshake | x | 错误报告服务器 | 链接 |
synapse-usage-exporter | x | 导出Synapse主服务器的使用统计数据以供Prometheus抓取 | 链接 |
其他
不属于任何其他类别的各种服务。
名称 | 默认? | 描述 | 文档 |
---|---|---|---|
sliding-sync | x | 为需要的客户端(如Element X)提供滑动同步支持 | 链接 |
synapse_auto_accept_invite | x | 自动接受邀请的Synapse模块 | 链接 |
synapse_auto_compressor | x | 在后台自动压缩state_groups 数据库表的命令行工具 | 链接 |
synapse-simple-antispam(高级) | x | 垃圾信息检查模块 | 链接 |
Matrix Corporal(高级) | x | 托管Matrix服务器的协调器和网关 | 链接 |
Etherpad | x | 开源协作文本编辑器 | 链接 |
Jitsi | x | 开源视频会议平台 | 链接 |
Cactus Comments | x | 基于Matrix构建的联邦评论系统 | 链接 |
Pantalaimon | x | 支持端到端加密的代理守护进程 | 链接 |
安装
要在您自己的服务器上配置和安装Matrix,请参阅docs/目录中的README。
更改
该剧本随时间不断发展,有时会有不向后兼容的变更。
更新剧本时,请参阅更新日志了解新内容。
支持
-
IRC频道:Libera Chat IRC网络(irc.libera.chat:6697)上的
#matrix-docker-ansible-deploy
相关
您可能还对mash-playbook感兴趣 - 另一个用于自托管非Matrix服务的Ansible剧本(查看其支持的服务列表)。
mash-playbook还使用Traefik作为反向代理,通过进行一些小的互操作性调整,您可以使matrix-docker-ansible-deploy和mash-playbook共存,在同一服务器上托管Matrix和非Matrix服务。