• 简体中文
  • 简介

    Firmiana 是一个轻量级、自包含的 Matrix 协议主服务器实现。它提供了一个适用于开发、测试和小规模部署的本地单服务器 Client-Server 主服务器。

    什么是 Matrix?

    Matrix 是一个用于去中心化、持久通信的开放标准。它定义了以下 API:

    • Client-Server API — 客户端(Element、Cinny、Element X)如何与主服务器通信
    • Server-Server API — 主服务器之间如何联邦通信
    • Application Service API — 外部服务如何与主服务器集成

    Firmiana 目前实现了完整的 Client-Server API 和大部分 Server-Server(联邦)API。

    为什么选择 Firmiana?

    问题Firmiana 的解决方案
    Synapse 需要 PostgreSQL 和复杂的配置内嵌 H2 数据库,零外部依赖
    Dendrite 使用 Go 编写(不同的技术生态)GraalVM JDK 21,Micronaut 框架
    测试 Matrix 客户端需要运行服务器快速启动,支持内存模式
    联邦难以本地测试完整的联邦栈,支持本地签名

    架构概览

    客户端(Element/Cinny/Element X)
    
    
    ┌─────────────────────────────┐
    │   Micronaut HTTP 服务器     │
    │   (Netty, 端口 8899)        │
    ├─────────────────────────────┤
    │   控制器 (43+)              │  ← Matrix Client-Server API 路由
    ├─────────────────────────────┤
    │   服务层                    │  ← 业务逻辑
    ├─────────────────────────────┤
    │   仓储层                    │  ← Micronaut Data JDBC
    ├─────────────────────────────┤
    │   H2 数据库                 │  ← 内嵌、文件模式
    │   Flyway 迁移 (V1-V23)      │
    └─────────────────────────────┘

    核心能力

    • 认证:Bearer Token 认证、UIAA 注册流程、设备管理
    • 房间与事件:完整的事件 DAG、状态解析、成员关系、撤回
    • 同步:长轮询 /sync、流令牌、临时事件
    • 端到端加密:密钥上传/查询/领取、交叉签名、设备密钥、设备间消息
    • 媒体:上传、下载、缩略图、URL 预览(含 SSRF 防护)
    • 联邦:请求签名、密钥缓存、事务处理、跨服务器加入/邀请/退出
    • 推送:推送规则、推送器、通知
    • 管理:用户/房间管理、健康检查、限流

    当前状态

    所有阶段 P0–P5 已完成,244 个测试全部通过。详见路线图