命令参考

所有 nostrfy 命令:init、start、stop、stats、upgrade 和 migrate-strfry,外加 CLI 访问列表和 inbox/outbox 订阅过滤器。

概览

所有命令都接受 --config <path>(默认 nostrfy.toml)。

命令说明
nostrfy init写入默认 nostrfy.toml 并退出;文件以 0600 权限创建
nostrfy genkey为 NIP-29 群组生成密钥,写入 relay.private_key,将配置设为 0600 并打印公钥;当文件在读取后发生变化时中止而不写入
nostrfy check校验配置(启动前运行)
nostrfy start以守护进程方式启动;--foreground 在终端中运行
nostrfy stop停止正在运行的守护进程
nostrfy restart停止并重新启动(重新读取配置)
nostrfy stats显示实时统计
nostrfy upgrade [version]将二进制更新到最新 GitHub 发布版(或指定版本);下载匹配平台的资产,校验其 sha256 校验和并运行 --version 探测,然后原子替换二进制;并发运行通过锁文件串行化;除非指定版本,否则不会降级;--force 重新安装
nostrfy migrate-strfry从 strfry 中继导入事件 — 可通过 --strfry-db 运行 strfry export,用 --input 读取 JSONL 文件,或通过 stdin 管道输入;可重复运行,支持 --dry-run、--since 和可选的设置合并

管理访问列表

中继公钥白名单/黑名单和 Blossom 上传白名单存储在 LMDB 中并立即生效 — 运行中的守护进程会自动重载:

sh
nostrfy relay allow npub1...
nostrfy relay deny npub1...
nostrfy relay list

nostrfy blossom allow npub1...
nostrfy blossom deny npub1...
nostrfy blossom list

被拒绝的公钥在发布时始终被拒绝,读取时也永远不会被提供。

nostrfy access unblockip <ip> 从持久化的 NIP-86 被封 IP 列表中移除一个 IP (自我锁定恢复);重启守护进程以生效。

Inbox/outbox 订阅过滤器

nostrfy 为 inbox/outbox 路由模型扩展了 REQ 过滤器语法,增加了两个便捷键 — 这是 nostrfy 扩展,不属于任何 NIP。"outbox" 展开为 "authors":只包含由该公钥创作的事件。 "inbox" 展开为 "#p":只包含发给该公钥的事件(提及、回复、Zap 和私信)。 值可以是 64 位十六进制或 npub1 编码,也可以是与现有 authors/#p 键合并的数组;无效的公钥会拒绝该订阅:

jsonc
["REQ", "my-feed", {"outbox": "npub1..."}]
["REQ", "mentions", {"inbox": "npub1...", "kinds": [1, 7]}]

端点也有写入限制:/outbox 只接受由连接的 NIP-42 认证公钥创作的事件 (server.outbox_write_policy = "any"),或仅接受中继自身的事件("relay"); /inbox 只接受带有 p 标签的事件。

从 strfry 迁移

用一条命令导入现有 strfry 中继的事件。迁移是离线的(先停止 nostrfy 中继 — 数据库被占用时它会拒绝运行), 读取 strfry 自己的导出格式,且可安全重复运行:重复项被跳过,删除副作用会重新应用。

sh
# 先 dry-run — 验证每个事件,不写入任何内容
nostrfy migrate-strfry --strfry-db /var/lib/strfry-db --dry-run

# 导入(先停止 nostrfy 中继)
nostrfy migrate-strfry --strfry-db /var/lib/strfry-db

它还会提议将等效的 strfry 设置合并到 nostrfy.toml,并可在中断后用 --since 续传。NIP-29 群组和 NIP-43 角色会在首次启动时从导入的事件重建。完整操作手册见 迁移指南。

分步说明
大多数命令在快速开始指南中也有分步说明。