指令參考

所有 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 角色會在首次啟動時從匯入的事件重建。完整操作手冊見 遷移指南。

逐步說明
大多數指令在快速開始指南中也有逐步說明。