Hacker News 中文摘要

RSS订阅

运行我自己的XMPP服务器 -- Running My Own XMPP Server

文章摘要

作者分享了自己搭建XMPP服务器的经历,使用Prosody和Docker实现联邦式通讯,支持文件共享、语音通话和端到端加密。他提到虽然Signal很好用,但依赖单一公司服务存在风险,而XMPP的分布式特性可以避免这个问题,实现真正的自主掌控。

文章总结

自建XMPP服务器全记录

作者Danny在2026年2月16日分享了使用Docker部署Prosody XMPP服务器的完整过程。此前他已将日常通讯迁移至Signal,但为摆脱对单一服务的依赖,决定搭建基于联邦协议的开源通讯方案。

核心配置要点:

  1. 基础环境
  • 需准备Docker主机和自有域名
  • 通过SRV记录配置客户端(5222)和服务端(5269)通信端口
  • 使用Let's Encrypt证书配合Cloudflare DNS验证
  1. Docker部署
  • 采用prosodyim/prosody:13.0镜像
  • 数据卷存储用户账户和消息存档
  • 证书和配置文件以只读方式挂载
  1. 关键功能配置
  • 模块化开启核心功能:多设备同步(carbons)、弱网恢复(smacks)、移动推送(cloud_notify)
  • 强制TLS加密并关闭公开注册
  • 默认启用OMEMO端到端加密(与Signal同源加密方案)
  • 设置1年期的消息存档策略
  1. 扩展服务
  • 会议组件支持群聊(muc),限制仅本地用户可创建房间
  • 文件分享组件设置10MB/30天的存储限制
  • 通过Caddy反向代理实现HTTPS文件传输
  1. 音视频支持
  • 部署coturn作为TURN/STUN服务器
  • 使用49152-49200 UDP端口范围进行NAT穿透
  • 通过共享密钥实现与Prosody的自动鉴权

客户端推荐: - iOS:Monal(支持推送通知) - Android:Conversations - 桌面端:Gajim/Linux/Win,Monal/macOS

验证方式: - 内置prosodyctl check工具 - XMPP合规性测试得分90%+

作者指出,虽然日常仍以Signal为主,但自建XMPP服务器提供了重要的通讯自主权。整套系统仅需两个Docker容器,适合作为周末技术实践项目。

(注:原文中关于博客导航菜单、版权声明等非技术内容已省略,完整技术细节可参考原始文档)

评论总结

以下是评论内容的总结:

  1. 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)
  2. 自托管聊天服务的挑战

    • 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)
  3. 协议与生态问题

    • 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)
  4. 加密与隐私

    • OMEMO加密与Signal类似,但存在技术差异和潜在风险。
      • "OMEMO and Signal have fewer similarities that people often assume" (jszymborski)
  5. 理想解决方案

    • 需要简单、全功能的开源通信工具,整合文本、音视频和笔记功能。
      • "what's really missing is a single application... including text chat, audio/video chat" (kkfx)

总结:评论者普遍认为当前去中心化通信工具(如XMPP、Matrix)在技术上有优势,但客户端体验和生态支持不足;Signal和Telegram虽流行,但存在中心化风险。理想解决方案尚未出现。