对比

nostrfy vs strfry

两者都是单二进制的 Nostr 中继,将事件存储在 LMDB 中并使用相同的协议。它们做出了不同的权衡: strfry 是成熟的 C++ 中继,拥有写入策略插件系统;而 nostrfy 是用 Rust 编写的引擎,将运营者所需的功能 — 群组、媒体、REST、管理 — 打包在一个二进制文件和一个配置文件中。

一览

nostrfystrfry
语言RustC++
许可MIT OR Apache-2.0GPL-3.0
存储LMDB(无需外部数据库)LMDB(无需外部数据库)
配置单个 nostrfy.toml,热重载(SIGHUP)strfry.conf,热重载
公布的 NIP34 个(实现 36 个,含可选)11 个核心 NIP
NIP-29 群组 + LiveKit内置—
Blossom 媒体服务器内置(本地磁盘或 S3/R2)—
REST API内置 /api/v1—
管理 APINIP-86 JSON-RPC,可委派管理员—
Negentropy(NIP-77)支持支持 — strfry 是它的发源地
写入策略 / 插件内置白名单/黑名单 + NIP-86写入策略插件接口
迁移工具nostrfy migrate-strfrystrfry import / export / sync

许可

strfry 采用 GPL-3.0 许可,要求衍生作品以相同条款发布。 nostrfy 采用 MIT 或 Apache-2.0 双许可,因此可以嵌入闭源产品并自由重新许可。 如果你的中继是商业或其他许可栈的一部分,这往往就是决定性差异。

配置与运维

  • nostrfy 由单个带完整注释的 nostrfy.toml 配置:身份、限制、存储、访问控制、Blossom 和 RPC 集中在一处。大部分设置在 SIGHUP 时热重载。
  • 每个选项都会在中继启动前由 nostrfy check 验证 — 错误的类型、不可能的限制和锁定组合都会连同修复建议一起报告。
  • 守护进程自带日志轮转、实时统计、健康端点和 Prometheus 指标;CLI 管理访问列表、升级和迁移。

内置功能

nostrfy 无需外挂附属服务,而是内置了公共中继通常需要的服务:

NIP-29 群组 + LiveKit

中继强制的群组、管理事件和中继签名的群组元数据,外加通过 LiveKit 的音视频房间。

Blossom 媒体服务器

内容寻址的上传运行在独立主机名上,支持本地磁盘或 S3 兼容存储桶(AWS S3、Cloudflare R2)。

REST API

只读 /api/v1 运行在自己的读取线程上 — 可按 npub、nevent 或 naddr 查询事件,支持计数、统计和搜索。

NIP-86 管理

JSON-RPC 管理 API,支持 Bearer 或 NIP-98 认证、委派方法授权和邀请码。

strfry 的优势

strfry 仍然是极佳的选择:它开创了 negentropy 协议,支持零停机重启和可选的 WebSocket 压缩, 其写入策略插件接口让你能在每次发布时运行任意逻辑。如果你需要插件沙箱,而不需要这份清单上的其他功能, strfry 非常合适。如果你更希望在开箱即用的方案里拥有群组、媒体、REST 和管理 — 或者需要宽松许可 — nostrfy 是更短的路。

从 strfry 迁移

你不必从头开始。nostrfy migrate-strfry 读取 strfry 自己的导出格式,验证每一个事件,并导入整个数据库 — 包括 NIP-09 删除、NIP-29 管理副作用和 首次出现时间戳。它是离线的、支持 dry-run,且可安全重复。