常见问题
关于运行 nostrfy 的简短解答。以下内容都链接到 文档 — 如果愿意,你也可以 将其与 strfry 对比。
什么是 nostrfy?
nostrfy 是用 Rust 编写的一体化 Nostr 中继服务器引擎。它存储来自 Nostr 客户端的事件,并响应订阅将其提供出去,实现了所有中继侧 NIP,外加可选的 Blossom 媒体服务器、只读 REST API 和 NIP-86 管理 API — 全部在一个二进制文件里。
nostrfy 免费且开源吗?
是的。nostrfy 是自由软件,采用 MIT 或 Apache-2.0 双许可,任选其一。源代码在 GitHub 上,没有付费层级、遥测或锁定。
运行 nostrfy 需要什么?
单一静态二进制文件即可运行于 Linux(x86_64 和 aarch64)和 FreeBSD(x86_64)。已在 0.25 vCPU / 512 MB 的 VPS 上验证。存储使用本地 LMDB 数据库 — 无需外部数据库服务器。
如何安装 nostrfy?
一行命令:curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh。脚本会检测你的操作系统和架构,下载匹配的预编译二进制文件,校验校验和并将其放入 PATH。你也可以用 Cargo 从源码构建,或复制现成的配置模板。
nostrfy 如何配置?
一切都集中在一个带完整注释的 nostrfy.toml 文件中 — 中继身份、限制、存储、访问控制、Blossom 和 RPC。nostrfy check 会在启动前校验它,大部分设置在运行时通过 SIGHUP 重载,无需重启。
nostrfy 支持哪些 NIP?
nostrfy 实现了 36 个 NIP,包括 NIP-01、NIP-09 删除、NIP-29 群组、NIP-42 认证、NIP-50 搜索、NIP-57 Zap、NIP-59 礼物包装、NIP-65 中继列表、NIP-77 negentropy、NIP-86 管理和 NIP-98 HTTP 认证。NIP-11 的 supported_nips 列表是动态的:当某个 NIP 需要的类型被屏蔽或禁用时,它会消失。
nostrfy 托管媒体文件吗?
是的。内置的 Blossom 文件服务器在独立主机名上托管内容寻址的上传,可存储在本地磁盘或 AWS S3、Cloudflare R2 等 S3 兼容存储桶。上传通过签名的 kind-24242 事件授权,并可限制为白名单。
可以从 strfry 迁移吗?
可以。nostrfy migrate-strfry 可直接导入 strfry 数据库或 JSONL 导出,应用可替换/可寻址语义、NIP-09 删除和 NIP-29 管理副作用,并可选择将等效的 strfry 设置合并到 nostrfy.toml。迁移是离线的、支持 dry-run,且可安全重复运行。
nostrfy 能运行在反向代理或 Cloudflare 后面吗?
可以。用你的代理地址配置 server.trusted_proxies(同主机上的 nginx 或 Caddy 用回环地址,云端用负载均衡器网段),使按 IP 的限制、blockip 和日志能看到真实客户端地址。TLS 由你的代理或隧道终止;nostrfy 在其后提供普通 HTTP 和 WebSocket。
nostrfy 有 REST API 吗?
有 — 只读 /api/v1 与 WebSocket 中继共用同一端口,运行在独立的读取线程上,因此 REST 流量永远不会阻塞订阅者。它可以按 npub、nevent 或 naddr 查询事件,并提供计数、作者统计、按日/月分解和全文搜索。
nostrfy 如何在负载或滥用下保持在线?
过载保护、专用读取线程、panic 隔离和严格的资源上限。有界队列快速失败,而不是耗尽内存;按 IP 的连接上限阻止 socket 洪泛;磁盘停滞也不会阻塞读取。子系统被隔离时,中继仍持续服务。
如何管理用户、封禁和角色?
通过 NIP-86 JSON-RPC 管理 API,使用 Bearer token 或 NIP-98 管理员密钥:封禁公钥、屏蔽 IP、管理类型白名单、角色和邀请码。方法授权让你可以把审核工作委托给其他公钥,而无需给予完整管理员权限。