永不下线的 Nostr 中继。
nostrfy 是一体化 Nostr 中继服务器引擎。为极致速度而设计,天生轻量,默认强大。 一行命令安装,使用单个 TOML 文件配置,几乎可在任何 VPS 上运行。
一行命令安装
安装脚本会检测你的操作系统和架构,下载匹配的预编译二进制文件,校验 sha256 校验和并将其放入你的 PATH。
无需克隆、无需编译、无需 sudo。
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。
校验和验证
在二进制写入磁盘之前,获取并验证发布校验和。
VERSION=v0.1.16 curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | shINSTALL_DIR=/usr/local/bin sudo curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | shcurl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh -s -- --forcegit clone https://github.com/iqbqioza/nostrfy.git && cd nostrfy && cargo build --release从 strfry 迁移?
用一条命令导入你现有的事件 — 离线、经过验证、可安全重复运行。
一分钟内跑起来
nostrfy 自带守护进程、配置校验器、实时统计、日志轮转和热重载 — 中继运营所需的一切,都在一个二进制文件里。
- nostrfy init 写入一份带完整注释的默认 nostrfy.toml
- nostrfy check 在启动前校验配置
- SIGHUP 无需重启即可重载大部分设置
- nostrfy upgrade 将二进制更新到最新版本
nostrfy init
# 写入默认 nostrfy.toml 并退出nostrfy start
# 以守护进程方式运行中继nostrfy stats
# 实时连接数、事件数、数据库大小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 提交的约束;读取线程永远不会阻塞它。
使用随附的基准测试复现 — 参见 性能说明。
完整实现 NIP 支持
所有中继侧 NIP 均已实现并验证。NIP-11 中公布的列表是动态的 — 当某个 NIP 的类型被屏蔽时会自动移除。
优秀客户端生态
nostrfy 使用客户端所依赖的开放 NIP 标准 — 最好的 Nostr 应用可以即插即用,获得完整体验。任何符合 NIP 的客户端都能与你的中继配合。
Ditto 真正使用了这些 NIP — NIP-50 搜索、NIP-22 线程评论、NIP-57 Zap、NIP-94 媒体和 NIP-85 统计都是它的日常体验 — 每一个都对应 nostrfy 的中继功能。
一个功能完整的客户端,真正使用了这些 NIP — NIP-50 搜索、NIP-17/59 私信、NIP-57 Zap、NIP-88 投票和 Blossom 媒体都能在你的中继上运行。
在 Nostr 上开发?把任意客户端指向你的中继 — 参见 完整 NIP 参考。