文章摘要
作者分享了自己搭建XMPP服务器的经历,使用Prosody和Docker实现联邦式通讯,支持文件共享、语音通话和端到端加密。他提到虽然Signal很好用,但依赖单一公司服务存在风险,而XMPP的分布式特性可以避免这个问题,实现真正的自主掌控。
文章总结
自建XMPP服务器全记录
作者Danny在2026年2月16日分享了使用Docker部署Prosody XMPP服务器的完整过程。此前他已将日常通讯迁移至Signal,但为摆脱对单一服务的依赖,决定搭建基于联邦协议的开源通讯方案。
核心配置要点:
- 基础环境
- 需准备Docker主机和自有域名
- 通过SRV记录配置客户端(5222)和服务端(5269)通信端口
- 使用Let's Encrypt证书配合Cloudflare DNS验证
- Docker部署
- 采用prosodyim/prosody:13.0镜像
- 数据卷存储用户账户和消息存档
- 证书和配置文件以只读方式挂载
- 关键功能配置
- 模块化开启核心功能:多设备同步(carbons)、弱网恢复(smacks)、移动推送(cloud_notify)
- 强制TLS加密并关闭公开注册
- 默认启用OMEMO端到端加密(与Signal同源加密方案)
- 设置1年期的消息存档策略
- 扩展服务
- 会议组件支持群聊(muc),限制仅本地用户可创建房间
- 文件分享组件设置10MB/30天的存储限制
- 通过Caddy反向代理实现HTTPS文件传输
- 音视频支持
- 部署coturn作为TURN/STUN服务器
- 使用49152-49200 UDP端口范围进行NAT穿透
- 通过共享密钥实现与Prosody的自动鉴权
客户端推荐: - iOS:Monal(支持推送通知) - Android:Conversations - 桌面端:Gajim/Linux/Win,Monal/macOS
验证方式: - 内置prosodyctl check工具 - XMPP合规性测试得分90%+
作者指出,虽然日常仍以Signal为主,但自建XMPP服务器提供了重要的通讯自主权。整套系统仅需两个Docker容器,适合作为周末技术实践项目。
(注:原文中关于博客导航菜单、版权声明等非技术内容已省略,完整技术细节可参考原始文档)
评论总结
以下是评论内容的总结:
Signal vs. Telegram vs. XMPP/Matrix
- 支持Signal的观点:日常交流使用Signal(95%的对话),因其端到端加密和可靠性。
- "Most of my contacts made the switch, and I’m now at roughly 95% Signal for day-to-day conversations" (skerit)
- 反对Signal的观点:Signal由单一公司运营,存在关闭或改变方向的风险;Telegram UI更好,但创始人问题令人担忧。
- "But Signal is still one company running one service. If they shut down tomorrow or change direction, I’m back to square one." (morning-coffee)
- "Unfortunately, it's also run by a severe weirdo." (skerit)
- 支持Signal的观点:日常交流使用Signal(95%的对话),因其端到端加密和可靠性。
自托管聊天服务的挑战
- XMPP(如ejabberd)资源占用低,长期稳定,但客户端体验差。
- "ejabberd instance has been running for years with no effort." (kuon)
- "the UX for Monal and Siskin IM leave a lot to be desired" (rascallbee)
- Matrix(如Synapse)资源占用高,维护复杂,客户端问题多。
- "Synapse is a beast. It’s basically taken over my entire VPS." (WD-42)
- "It consumed a lot of resources when doing almost nothing" (seba_dos1)
- XMPP(如ejabberd)资源占用低,长期稳定,但客户端体验差。
协议与生态问题
- XMPP协议成熟但生态分散,客户端支持不足。
- "why we collectively ditched xmpp for matrix when it seems like the protocol is still miles ahead?" (WD-42)
- 缺乏统一协议导致通信碎片化。
- "The only good solution would be if all messaging apps used the same protocol" (elminjo)
- XMPP协议成熟但生态分散,客户端支持不足。
加密与隐私
- OMEMO加密与Signal类似,但存在技术差异和潜在风险。
- "OMEMO and Signal have fewer similarities that people often assume" (jszymborski)
- OMEMO加密与Signal类似,但存在技术差异和潜在风险。
理想解决方案
- 需要简单、全功能的开源通信工具,整合文本、音视频和笔记功能。
- "what's really missing is a single application... including text chat, audio/video chat" (kkfx)
- 需要简单、全功能的开源通信工具,整合文本、音视频和笔记功能。
总结:评论者普遍认为当前去中心化通信工具(如XMPP、Matrix)在技术上有优势,但客户端体验和生态支持不足;Signal和Telegram虽流行,但存在中心化风险。理想解决方案尚未出现。