Matrix / Element 自托管即时通讯:搭一个不被监控的私有聊天服务器(2026)

想在微信、钉钉之外拥有一个真正属于自己的聊天服务器?本文手把手教你在 VPS 上用 Matrix + Element 搭建私有即时通讯,对比 Synapse 与 Conduit 选型、讲清联邦联通与端到端加密原理、并给出国内访问优化方案。适合想要隐私通讯与跨平台群聊、又不想把聊天记录交给大厂的中高阶玩家。

说句大实话:我们每天在微信、钉钉、Discord 里聊的东西,本质上都不在自己手里。服务商能读元数据、能调聊天记录、能随时改规则甚至封号。很多人想要一个"自己的聊天服务器"——既能像微信一样多端同步、建群开聊,又没人能偷看、没人能删档。Matrix 协议加 Element 客户端,就是目前开源圈最接近这个目标、且能真正跑起来的方案。这篇我把 2026 年实测过的搭建思路、选型坑和国内访问优化全摊开讲。

延伸阅读

更多相关攻略推荐:别被多核骗了!为什么买 VPS 必须看单核(Single-Core)【区块链节点 03】用 VPS 运行比特币全节点:UTXO、prun在 VPS 上自托管 CI Runner:GitLab Runner【VPS 自建影音与网盘 01】用 VPS 搭建私人影音服务器:JeImmich / PhotoPrism 自建照片备份:把 Googl

一、为什么要在 VPS 上自建 Matrix / Element

Matrix 不是某个 App,而是一套开放协议,你可以理解成"聊天界的电子邮件"。你自己跑的那台服务器叫 homeserver(家庭服务器,别被名字骗了,它跑在 VPS 上),负责存消息、管账号、和其他 Matrix 服务器互相联通;你手机电脑上装的 Element、FluffyChat、Cinny 只是客户端。好处有三条,而且都很硬:

  • 数据归你:聊天记录存在你租的 VPS 硬盘上,服务商动不了,你也随时能导出备份。
  • 联邦互通:你的服务器能和世界上任何一台 Matrix 服务器聊天,@alice:你的域名 能直接私聊 @bob:matrix.org,就像你自建邮箱也能给 Gmail 发信。
  • 端到端加密:一对一私聊默认端到端加密,连你的服务器都只能看到密文,更别提第三方。

当然也得泼盆冷水:自托管是实打实的运维活。你要管域名、证书、防火墙、升级和备份。如果你的需求只是"找个群聊天",直接用 matrix.org 或 Element 官方托管更省心;但如果你在意掌控感,往下看。

二、先选 homeserver:Synapse、Conduit、Dendrite 到底用哪个

这是整篇文章最关键的决策。Matrix 官方和社区目前主要有三个成熟实现,定位完全不同:

实现语言空闲内存数据库成熟度适合谁
SynapsePython1–4 GBPostgreSQL(必须)参考实现,最全多用户社群、要桥接
ConduitRust50–300 MB内嵌 RocksDB稳定,功能略少个人 / 小团队,省资源
DendriteGo200–500 MBPostgreSQL稳定,仍在追赶想要比 Synapse 省、又比 Conduit 全

一句话结论:个人或小家庭用,闭眼选 Conduit——它是 Rust 写的单文件二进制,起步只要几十 MB 内存,不用装 PostgreSQL,配置文件就一小撮;如果要开公开注册、做几十人以上的社群、或想把 Discord/Telegram 桥接进来,老老实实用 Synapse,它的桥接生态和 worker 横向扩展是最成熟的。还有一个叫 conduwuit 的 Rust 分支,活跃度不错,本质和 Conduit 一类,先别碰以免踩坑。

三、配置需求:你的 VPS 到底要吃多少资源

很多人被"聊天服务器"吓到,其实 Conduit 极省。下面是 2026 年实测的参考区间:

场景推荐配置说明
个人 Conduit1 核 / 1–2 GB / 20 GB SSD单用户或三五好友,内存 100–300 MB 闲时占用
小社群 Synapse2 核 / 4 GB / 40 GB SSD联邦回源时内存会脉冲到 4 GB 以上,4 GB 是底线
公开大社群 Synapse4 核 / 8 GB+ / 100 GB+需开 worker 拆分 federation、媒体、sync,配 Redis 缓存

经验法则:Conduit 在 1 GB 内存的机器上能跑得很舒服,这也是它被称为"五美元 VPS 或树莓派级别负载"的原因;Synapse 单用户空闲就要吃掉 1–2 GB,加入 matrix.org 那种大型公共房间后数据库几个月能涨到 5–15 GB,所以磁盘别太小。媒体(图片、文件)是占用大头,人多建议把媒体存到对象存储或定期清理。

四、域名、端口与联邦:别人怎么找到你的服务器

Matrix 的联邦(federation)有点像邮件的 SMTP:别的服务器要能连上你,才能给你发消息。默认规则有两条路,选一条即可:

  • 端口 8448:在你的 server_name 对应的主机名上开放 8448(TLS),这是最直观的方式,但要在防火墙放行。
  • .well-known 委托:更灵活,你在域名根下提供 https://你的域名/.well-known/matrix/server 这个 JSON,里面写明真正处理联邦的地址和端口,就能把联邦流量引到 443,避免额外开端口。绝大多数教程推荐这条。

客户端流量走标准 443(你在前面套 Nginx/Caddy 反代,自动签 Let's Encrypt 证书)。部署完去 Matrix 官方的 Federation Tester 测一下,三处连接全绿才算联邦真正通了。另外别忘了 DNS:给 matrix.你的域名 建一条 A 记录指向 VPS IP。

五、用 Docker 部署 Synapse(成熟全家桶)

下面是简化版 docker-compose,把 Synapse 和 PostgreSQL 串起来。先生成配置:

docker run --rm \
  -v $PWD/synapse-data:/data \
  -e SYNAPSE_SERVER_NAME=matrix.example.com \
  -e SYNAPSE_REPORT_STATS=no \
  matrixdotorg/synapse:v1.149.1 generate

然后把 homeserver.yaml 里的数据库换成 PostgreSQL(默认是 SQLite,正式用不推荐),并给 registration_shared_secret、macaroon_secret_key、form_secret 各填一个 openssl rand -hex 32 生成的强随机串。compose 文件大致长这样:

services:
  synapse:
    image: matrixdotorg/synapse:v1.149.1
    restart: unless-stopped
    volumes:
      - ./synapse-data:/data
    depends_on:
      - postgres
    ports:
      - "8008:8008"
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: synapse
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: 换成你的强密码
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

启动后创建第一个管理员账号(默认客户端注册是关的):

docker compose exec synapse register_new_matrix_user \
  -c /data/homeserver.yaml http://localhost:8008

这一步大约要 20–40 分钟跑通,Synapse 整体从零到能聊天通常得 1–2 小时,耐心点。

六、用 Docker 部署 Conduit(极省内存的轻量之选)

如果你只是自己用,Conduit 明显更香,一条 compose 搞定,连数据库都不用单独装:

services:
  conduit:
    image: matrixconduit/matrix-conduit:latest
    restart: unless-stopped
    ports:
      - "6167:6167"
    volumes:
      - ./conduit-data:/var/lib/matrix-conduit
    environment:
      CONDUIT_SERVER_NAME: matrix.example.com
      CONDUIT_DATABASE_BACKEND: rocksdb
      CONDUIT_PORT: 6167
      CONDUIT_ALLOW_REGISTRATION: "false"
      CONDUIT_ALLOW_FEDERATION: "true"
      CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'

注意:部署完、自己注册好账号后,记得把 CONDUIT_ALLOW_REGISTRATION 改回 "false",免得被扫到开放注册。Conduit 从安装到发出第一条消息一般 15–30 分钟,对低配 VPS 极其友好。

七、端到端加密:你的消息到底安不安全

这是隐私通讯的核心,得把它讲透。Matrix 的端到端加密(叫 Olm/Megolm)在私聊里默认开启:消息在客户端就用你的设备密钥加密,服务器只负责中转密文,所以连你自己的 homeserver 管理员都看不到聊天内容。但有两件事要清醒:

  • 服务器仍看得到元数据:谁和谁在聊、什么时候、房间里有哪些人,这些"信封表面信息"服务器是知道的。要彻底匿名,得配合不收集 KYC 的离岸 VPS。
  • 密钥设备绑定:换手机或重装客户端,需要用安全密钥或旧设备做"密钥备份/交叉签名"恢复历史消息,否则旧记录解不开。第一次用务必把安全密钥抄下来。

群聊的加密体验在 Element 里也很顺,创建加密房间即可。语音视频走 Element Call 或 Jitsi,Synapse 支持最完整,Conduit 也在补。

八、客户端与桥接:把微信、Discord、Telegram 接进来

服务器和客户端是彻底分离的——你装 Element 官方 App,登录时把"服务器地址"改成你的域名就行,其他体验和官方一模一样。想体验更轻的,可以试试 FluffyChat(手机)或 Cinny(网页)。

真正让 Matrix 封神的,是桥接(bridge):通过 matrix-appservice 或 mautrix 系列桥,你能把 Telegram、Discord、Slack 甚至 WhatsApp 的聊天"镜像"进你的 Matrix 房间,在一个客户端里统一收发。这里要划重点:桥接生态是 Synapse 的绝对强项,Conduit 的桥接还在补课,复杂桥接会卡壳。所以"想用桥接"基本等于"得用 Synapse"。

九、国内访问优化:让 Matrix 在天朝也能稳

大陆用户自建 Matrix 最大的痛是网络。两点建议:

  • 选对 VPS 线路:matrix.org 等海外大服务器在国内直连质量差异很大。如果你主要给自己和国内朋友用,优先选带三网优化/直连线路的商家(如 RackNerdContabo 的部分节点,或用本站评测过的低延迟节点),别盲目上欧洲裸机,否则图片加载转圈。
  • 用 .well-known 委托 + 443 反代:尽量少开 8448 这种非常规端口,全部收口到 443,叠加 CDN 或反代可以缓解部分链路质量问题。媒体走你自己的服务器,带宽和流量额度要留足。
  • 接受联邦延迟:和境外大房间联邦时,回源拉取历史消息会慢,这是物理距离决定的,不是你配置错了。

另外,部分大型公共服务器会对"隐私激进"的实例限制联邦,属于正常风控,别慌;自建小圈子的价值本来就不靠和 matrix.org 互通。

十、备份与运维:丢了数据库就丢了全部聊天记录

自托管最惨的事不是部署失败,是硬盘坏了、聊天全没。两个铁律:

  • 定期备份数据库:Synapse 用 pg_dump 导出 PostgreSQL;Conduit 直接打包 RocksDB 数据目录做快照。用 Restic 或 Borg 自动跑,异地再存一份。
  • 媒体单独管:图片文件占空间,备份策略可以和数据库分开,或丢到 S3 兼容存储。

运维上:Synapse 升级前先看 changelog,大版本有数据库迁移;Conduit 升级基本无感。前面套一层 fail2ban 或 CrowdSec,防止有人暴力扫你的登录接口。监控可以用 Uptime Kuma 探 /_matrix/federation/v1/version 看联邦是否还活着。

#Matrix #Element #自托管 #VPS #即时通讯 #端到端加密 #Synapse #Conduit