在 VPS 上自托管 Matrix。
Synapse + Element。联合。端对端加密。
Matrix 是如果电子邮件在开放协议时代被设计用于聊天会是什么样子。Synapse 作为 homeserver,Element 作为客户端,PostgreSQL 作为存储,Caddy 作为前门——以及一个没有特定拥有者的联合聊天室图谱。
- 01
Synapse 是 2026 年正确的默认 homeserver——经过生产验证、功能完整的参考实现。Conduit 和 Dendrite 适用于更窄的使用场景。
- 02
第一天就切换至 PostgreSQL;默认的 SQLite 仅用于测试,超过少数用户就会崩溃。为媒体上传规划磁盘——联合聊天室积累媒体内容的速度很快。
- 03
关闭注册是安全的默认选项。公开注册需要真正的管理工作;只有在您准备好承担时才开启。
五句话解读 Matrix。您实际部署的内容。
Matrix 是一个用于实时通信的开放协议。homeserver 是运行该协议的服务器;用户各属于一个 homeserver,标识为 @alice:example.com——与电子邮件相同的模式。聊天室是对话的单位;一个聊天室可以有来自多个不同 homeserver 的成员,聊天室状态在所有参与的 homeserver 间复制。私有聊天室用每设备密钥(Olm/Megolm)加密每条消息,因此服务器只能看到密文。整个网络是一个 homeserver 相互联合聊天室状态的图谱。
有趣的属性:没有中央权威能关闭 Matrix(协议是开放的,运行于任何地方),不同服务器上的用户透明交流(联合),私有聊天室有真正的端对端加密(而非广告式传输层加密),用户可以切换 homeserver 并通过运行自己的 homeserver 保留身份。权衡是运营复杂度——运行 homeserver 比登录 Discord 需要更多工作——以及比专有平台更小的成熟客户端生态系统。
本指南中您部署的内容:Synapse(homeserver)、PostgreSQL(其数据库)、Element Web(从您自己域名托管的浏览器客户端)以及 Caddy(反向代理 + 自动 TLS)。可选媒体存储后端和用于联合发现的 well-known 端点。整个技术栈是两个 Docker Compose 文件和一个 Caddy 配置。
规格选择。Synapse 是内存密集型的。
Synapse 在内存中保留每个聊天室的状态,加入一个大型联合聊天室(比如拥有 6 万成员的 #matrix:matrix.org)会将大量状态拉入您的 homeserver。结果是,即使是单用户 Synapse,若用户在繁忙的联合聊天室中,也可能稳定使用 2–3 GB RAM。请据此规划。
单用户,适度联合。 2 vCPU、4 GB RAM、40 GB SSD。NordBastion 的<a href="/zh/vps/" class="text-nord-cyan border-b border-nord-cyan/40 hover:border-nord-cyan transition"> Ravelin 套餐($5.90/月)</a>规格配置合理。对于活跃的单一用户,磁盘每年增长约 10 GB,请预留相应空间。
小团队,5–20 用户。 4 vCPU,8 GB RAM,100 GB SSD。Iron 套餐($24.90/月)可轻松胜任。在同一 VPS 上运行 PostgreSQL;数据库可容纳于剩余 RAM 和磁盘中。
公开 homeserver,100+ 用户。 超过 100 个活跃用户后,Synapse 受益于工作进程(独立的联合发送者、联合读取者、客户端读取者工作进程)和经过调优的 PostgreSQL。Iron 或 Granite 套餐可以处理这种情况,但运营复杂度会非线性增长——在这个规模下,您除了是软件用户,还是 Matrix 管理员。
磁盘实况。 来自联合聊天室的媒体上传(图片、视频、文件)会在您的 homeserver 上积累,因为 Matrix 联合会将媒体拉取到本地以便提供服务。繁忙的公开 homeserver 每周可能增加 1 GB 媒体内容。Synapse 的 media_retention 配置允许您修剪旧内容;每季度审查一次。
Docker Compose 安装。Synapse、PostgreSQL、Element。
启动全新 Debian 12 VPS,将三条 DNS 记录指向它:matrix.example.com(homeserver 主机名)、element.example.com(Web 客户端),以及 example.com 本身(若想使用 @alice:example.com 短格式标识符)。以 sudo 用户 SSH 登录。
1. 安装 Docker 和 Compose。 curl -fsSL https://get.docker.com | sh — Docker Engine 在同一软件包中附带 Compose v2。
2. 生成 Synapse 配置。 mkdir -p ~/synapse/data && docker run -it --rm -v ~/synapse/data:/data -e SYNAPSE_SERVER_NAME=example.com -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:latest generate — 这将写入 homeserver.yaml。编辑它:将数据库从 SQLite 改为 PostgreSQL,设置媒体 URL,将 enable_registration 设为 false 作为起点(目前通过管理 CLI 创建用户)。
3. 编写 docker-compose.yml。 三个服务:postgres(postgres:16,持久卷,locale C)、synapse(matrixdotorg/synapse:latest,挂载 ~/synapse/data,依赖 postgres)、element(vectorim/element-web:latest,挂载一个指向 https://matrix.example.com 的小型 config.json)。只将 synapse:8008 和 element:80 映射到 localhost;不要绑定到 0.0.0.0。
4. 使用 Caddy 做前端代理。 两个 Caddyfile 站点:matrix.example.com 代理到 127.0.0.1:8008(Synapse),同时在端口 443 和 8448(联邦端口);element.example.com 代理到 127.0.0.1:8001(Element Web)。Caddy 自动获取 Let's Encrypt 证书。
5. 联合发现(.well-known)。 在 example.com 上添加两个静态 JSON 文件:/.well-known/matrix/server 返回 {"m.server": "matrix.example.com:443"},/.well-known/matrix/client 返回 {"m.homeserver": {"base_url": "https://matrix.example.com"}}。这使短格式标识符 @alice:example.com 能正确解析。通过 federationtester.matrix.org 上的联合测试工具验证。
6. 创建第一个用户。 docker exec -it synapse register_new_matrix_user -u alice -p <password> -a -c /data/homeserver.yaml http://localhost:8008 — 这将创建一个管理员账户。通过 https://element.example.com 登录。
Element、品牌、注册策略。一旦决定便难以更改。
Element 配置。 Element Web 读取一个 config.json,其中指向您的 homeserver,设置默认主题、品牌及新账户的「推荐聊天室」列表。将 default_server_config.m.homeserver.base_url 设置为 https://matrix.example.com,将品牌名设为您的项目名,并禁用建议 matrix.org 的 brand_url 字段。新用户进入 Element Web 时将指向您的服务器,而非他人的。
注册策略。 三种模式:关闭(只有管理员可通过 CLI 注册用户;管理立场最干净)、基于 token(通过管理 API 生成注册 token 并分享;适合小团体)、开放(任何人可注册;仅在您打算运营带管理工具的公开 homeserver 时启用)。从关闭状态开始,仅在有充分理由时才放宽。
联合屏蔽列表。 Synapse 支持 federation_domain_whitelist(仅允许列表)以及通过管理 API 进行的每服务器屏蔽。对于大多数公开 homeserver,默认是「与所有人联合」,并根据需要对滥用服务器进行响应式屏蔽。如果您成为目标,Mjolnir 机器人可自动化处理。
备份。 PostgreSQL 每晚转储 + ~/synapse/data 压缩包,通过 rclone 发送至第二台 VPS 或 B2 存储桶。两者都是必需的;数据库保存聊天室状态和账户,数据目录保存签名密钥和媒体文件。与任何备份一样,每季度进行还原测试。
管理现实。自托管实际意味着什么。
运行 Matrix homeserver 意味着接受托管方对服务器行为负责。在私有仅限邀请的 homeserver 上,这种责任很小——您认识每一个用户。在公开 homeserver 上,责任随用户基数增长。
入站滥用。 联合公共聊天室可能被卷入滥用协调、图片倾倒或骚扰行为。Synapse 提供管理员 API 端点,可封禁用户(跨所有聊天室)、屏蔽某个 homeserver(停止联合)并强制服务器退出聊天室。Mjolnir 机器人将这些功能整合进管理聊天室工作流;Draupnir 分支是其积极维护的延续版本。
出站滥用。 被盗用的用户账户可能向联合聊天室发布滥用内容,损害您服务器在整个网络中的声誉。两项缓解措施:对每个用户启用速率限制(Synapse 默认速率限制合理),以及对新账户要求邮箱验证(提高自动注册门槛)。
法律立场。 在欧盟,基础设施提供商角色享有强大的中间商责任保护(《电子商务指令》第 14 条、DSA 第 6 条)——只要您响应通知和下架要求,就无需对用户内容承担责任。北欧司法管辖区在此基础上增加了明确的宪法新闻自由保护。同样的 homeserver 若运行在缺乏中间商保护的司法管辖区,运营风险更高;请据此选择托管地点。
安全的默认选项。 仅限邀请注册,联合功能启用并配以响应式屏蔽,Mjolnir / Draupnir 已安装但在需要前不使用,homeserver 网站上发布了带明确可接受使用政策的服务条款。这一立场无需额外努力即可应对 95% 的运营场景。
为何托管商很重要。加密保护内容,托管商保护元数据。
Matrix E2EE 保护消息正文——服务器对私有聊天室只保存密文。它无法保护的是元数据:哪些 homeserver 相互联合、哪些用户在哪些聊天室、何时在线、发送消息的频率、使用的设备。这些元数据图谱存在于 homeserver 及其联合的 homeserver 上,在技术上超出了加密层的保护范围。
运行在 KYC 关联 VPS 上的 homeserver 会将元数据图谱与运营者的法律身份绑定。向托管商发出传票所获取的不仅是加密数据库,还有从 @alice:example.com 标识符到真实姓名的关联。加密依然有效;但元数据层已暴露。
NordBastion 的立场恰恰相反:<a href="/zh/doctrine/" class="text-nord-cyan border-b border-nord-cyan/40 hover:border-nord-cyan transition">无 KYC 注册</a>、加密货币付款、北欧宪法性管辖区。家庭服务器归您所有;从家庭服务器到任何姓名的关联根本不存在;管辖磁盘的法律体制具有明确的新闻自由保护条款。这种组合与 Matrix 自身的安全模型相吻合——加密内容层和元数据操作层均得到保护。
问题,已解答。
2026 年运行 Matrix homeserver 常见的八个问题。
Matrix 是什么,它与 Discord 或 Slack 有何不同?
Matrix 是一个联合的、基于开放标准的实时通信协议——可以把它想象成聊天界的 SMTP。任何人都可以运行 homeserver(Synapse、Dendrite、Conduit),不同 homeserver 上的用户透明地相互交流,私有聊天室中的每条消息默认端对端加密,没有中央公司控制网络。Discord 和 Slack 是中心化的、专有的,公司托管每一次对话。权衡:Matrix 的运营复杂度略高,且成熟客户端生态系统较小,但您拥有每一个字节。
Synapse、Dendrite 还是 Conduit——选哪个 homeserver?
Synapse 是参考实现,用 Python 编写,功能最完整,且经过生产验证。它内存消耗较高。Dendrite 是较新的 Go 重写版本,轻量得多,缺少少数高级管理功能但正在快速追赶。Conduit 是第三个选项,一个专注于极小资源占用的 Rust homeserver,适合在廉价 VPS 上运行单用户 homeserver。除非有特定原因,否则默认选择 Synapse——文档、管理工具和第三方桥接都以 Synapse 为假设前提。
运行 Matrix homeserver 需要多少 VPS 资源?
单用户联合至更广泛 Matrix 网络——2 vCPU、4 GB RAM、40 GB SSD 是实际底线。小团队(5–20 用户)——4 vCPU、8 GB RAM、100 GB SSD。Ravelin 或 Iron 套餐涵盖两种情况。主导资源是 RAM(Synapse 在内存中保留大量聊天室状态)和磁盘(媒体上传和联合聊天室历史持续增长)。
我应该启用联合功能吗?
几乎总是「是」——这正是 Matrix 的核心所在。联合功能让您的用户能与 matrix.org、mozilla.org、kde.org 及数千个其他 homeserver 上的任何人交流。例外情况:不希望任何人发现聊天室的私有内部团队服务器;联合流量模式会泄漏信息的高风险威胁模型;托管敏感内容并需要严格成员控制的服务器。之后禁用联合没问题;重新启用会让您变得可被发现。
私有聊天室默认启用端对端加密吗?
是——每个 Element 客户端默认为新的私信和私有聊天室启用 E2EE。加密采用带交叉签名设备验证的按聊天室 Olm/Megolm。服务器对消息正文只能看到密文。公开聊天室在设计上不加密(因为任何人都可以加入,加密不会保护任何内容)。联合公开聊天室对任何人可见——这正是公开聊天室的意义所在。
运营公开 homeserver 的管理现实是什么?
这是真正的工作量。如果您允许公开注册,您的 homeserver 将与垃圾聊天室联合,被卷入滥用协调聊天室,并偶尔显示来自联合服务器的令人反感的内容。运营公开 homeserver 需要愿意执行服务器级封禁、联合屏蔽敌对服务器并响应滥用报告。对大多数运营者而言,正确立场是关闭注册(仅限邀请)——每个用户都是您认识的人,滥用面降至接近零。
我能将 Matrix homeserver 用作工作中的 Slack / Discord 替代品吗?
是——Element Server Suite 及其底层 Synapse + Element Web 组合涵盖「带持久聊天室、话题、反应、语音/视频会议的团队聊天」功能集。相对于 Slack 的主要差距是第三方集成(预构建应用较少);相对于 Discord 的主要差距是精致的语音频道。两者都可行,但需要一些运营者的努力。对于重视数据主权而非精致度的小团队,这一权衡显然值得。
我租用 VPS 的托管商对 Matrix 服务器有何重要意义?
因为联合聊天协议会在 homeserver 上产生关于「谁在何时与谁交流」的持久元数据。这些元数据内容丰富(联合聊天室图谱、联合事件、媒体上传)。将其放在有 KYC 的托管商处会将元数据与您的身份绑定;放在敌对司法管辖区的托管商处意味着国家行为者可以强制获取。无 KYC 的 Nordic VPS 使托管商的元数据立场与协议的加密立场保持一致——这是隐私故事的两个半部分。
为您的家庭服务器提供 Nordic VPS。无 KYC,加密货币付款。
Ravelin(2 vCPU,4 GB,$5.90/月)满足单用户联合 Synapse 的需求。Iron(4 vCPU,8 GB,$24.90/月)是小团队的答案。
最后审核 · 2026-05-20 · 来源 · Synapse 上游文档,Element 配置参考,Matrix 规范,EU DSA 第 6 条 · 周期 · 每年
Anonymous VPS hosting in 2026 — the cluster.
This guide is one spoke of a larger series. The pillar walks the three privacy layers end to end — the sibling spokes below dive into the specifics.
Three independent layers — signup, payment, network — explained, legal context included, common mistakes flagged.
Fediverse instance, Docker Compose, federation-ready in 90 min.
What “no KYC” actually means — and what it does not.
Why Sweden, Finland, Norway and Iceland — the legal floor of each.
XMR end-to-end — wallet, transfer, confirmations, change.