Rust · MIT 或 Apache-2.0 · 最新版本 v0.1.16

永不下线的 Nostr 中继。

nostrfy 是一体化 Nostr 中继服务器引擎。为极致速度而设计,天生轻量,默认强大。 一行命令安装,使用单个 TOML 文件配置,几乎可在任何 VPS 上运行。

36+ 个中继侧 NIP Linux · FreeBSD · 容器 单一二进制,无依赖

一行命令安装

安装脚本会检测你的操作系统和架构,下载匹配的预编译二进制文件,校验 sha256 校验和并将其放入你的 PATH。 无需克隆、无需编译、无需 sudo。

sh
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh

无需 sudo

安装到 ~/.local/bin、~/bin 或 ~/.cargo/bin — PATH 中第一个已存在的目录。

Linux + FreeBSD

提供 x86_64 与 aarch64 Linux 预编译二进制,以及 FreeBSD x86_64。

校验和验证

在二进制写入磁盘之前,获取并验证发布校验和。

指定版本
sh
VERSION=v0.1.16 curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
系统全局安装
sh
INSTALL_DIR=/usr/local/bin sudo curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
覆盖现有安装
sh
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh -s -- --force
从源码构建
sh
git clone https://github.com/iqbqioza/nostrfy.git && cd nostrfy && cargo build --release

从 strfry 迁移?

用一条命令导入你现有的事件 — 离线、经过验证、可安全重复运行。

迁移指南

一分钟内跑起来

nostrfy 自带守护进程、配置校验器、实时统计、日志轮转和热重载 — 中继运营所需的一切,都在一个二进制文件里。

  • nostrfy init 写入一份带完整注释的默认 nostrfy.toml
  • nostrfy check 在启动前校验配置
  • SIGHUP 无需重启即可重载大部分设置
  • nostrfy upgrade 将二进制更新到最新版本
打开快速开始指南
sh
nostrfy init
# 写入默认 nostrfy.toml 并退出
sh
nostrfy start
# 以守护进程方式运行中继
sh
nostrfy stats
# 实时连接数、事件数、数据库大小
sh
curl http://localhost:8080/health
# {"status":"ok"}

把任意 Nostr 客户端指向 ws://<host>:8080 — 完成。

为真实环境的中继而构建

每个功能都围绕两个目标设计:永不下线,完整实现规范。结果就是一个能抵御滥用、磁盘停滞和内存受限主机的中继。

完整实现规范

所有中继侧 NIP 均已实现并对照官方规范验证 — 36+ 个 NIP 以及 Blossom 文件服务器。

永不下线

过载保护、专用读取线程、panic 隔离和严格的资源上限,让中继在持续滥用下仍能稳定服务。

Blossom 媒体服务器

以 SHA-256 寻址的上传运行在独立主机名上 — 本地磁盘或 S3 兼容存储桶(AWS S3、Cloudflare R2),支持上传者签名删除。

REST API

只读 /api/v1,可按 npub1、nevent1 或 naddr1 查询事件 — 独立的读取线程意味着 REST 流量永远不会阻塞 WebSocket 订阅者。

LMDB 持久化

通过 heed 实现耐用、崩溃安全的存储。内存映射按上限以稀疏方式预留 — 运行时无需扩容,物理占用极小。

一切皆可配置

所有设置都在 nostrfy.toml — 没有编译期选项。编辑、SIGHUP、完成。限制、NIP 开关、存储等等。

适配 TLS 反向代理

nginx、Caddy、Cloudflare Tunnel — 支持 WebSocket 升级和 X-Forwarded-Proto,wss:// 在任何代理前都能正常工作。

Rust + FreeBSD

单一静态 Rust 二进制文件,支持 Linux x86_64、Linux aarch64 和 FreeBSD x86_64 — 已验证可在 0.25 vCPU / 512 MB 的 VPS 上运行。

实测性能

Release 构建、全新数据库、8 线程笔记本。写入速度受单个 LMDB 写入线程和批量、无 fsync 提交的约束;读取线程永远不会阻塞它。

~21k
事件/秒 写入
单连接
100%
实时扇出
10,000 / 10,000 次投递
0.32s
存储查询
20,000 事件
0.26s
NIP-50 搜索
10,000 结果
7.9 MB
私有 RSS
数据库 252 MB

使用随附的基准测试复现 — 参见 性能说明。

完整实现 NIP 支持

所有中继侧 NIP 均已实现并验证。NIP-11 中公布的列表是动态的 — 当某个 NIP 的类型被屏蔽时会自动移除。

完整 NIP 参考
19111317222628293233344042434546475057596265666770777884858687889498A3Blossom

几分钟内运行你自己的中继

从最小的 VPS 到全球集群 — 预编译二进制、配置校验器和部署指南让这一切毫无痛苦。

有疑问?阅读 常见问题,或了解 nostrfy 与 strfry 的对比 — 并用一条命令迁移。