Introduzione a nostrfy

Cos’è nostrfy, cosa fa di serie e le idee alla base del motore relay Nostr tutto-in-uno scritto in Rust.

nostrfy è un server relay per il protocollo Nostr. Memorizza gli eventi inviati dai client (post, reazioni, profili…) e li distribuisce in risposta alle sottoscrizioni.

Funzionalità principali

  • Semplice e stabile — scritto in Rust; un unico binario fa tutto.
  • Archiviazione e ricerca rapide — database LMDB con indice di ricerca full-text (NIP-50).
  • Ampio supporto NIP — 36 NIP implementati, più il file server Blossom: eliminazione, proof-of-work, delega, gruppi, ricerca e un’API di gestione.
  • Facile da gestire — modalità demone, rotazione dei log, ricaricamento a caldo della configurazione (SIGHUP), statistiche in tempo reale, API REST e metriche Prometheus.
  • Migrazione facile — un comando importa un strfry database: dry-run, unione delle impostazioni e ripetizioni sicure (guida alla migrazione).

Cosa ottieni di serie

Un unico binario nostrfy su un’unica porta fornisce:

  • Il relay WebSocket e il documento informativo NIP-11.
  • Un’API REST in sola lettura su /api/v1/... — il suo thread di lettura dedicato garantisce che il traffico REST non blocchi mai gli abbonati WebSocket.
  • Il file server Blossom (hosting multimediale) su un hostname dedicato.
  • L’RPC di gestione NIP-86, il controllo dello stato e Prometheus /metrics.

Profilo delle risorse

nostrfy è stato verificato su un 0.25 vCPU / 512 MB VPS. La mappa di memoria LMDB è una prenotazione virtuale sparsa da 1 TiB — il disco fisico cresce solo con i dati reali — e la memoria del processo resta stabile: un relay con un database da 252 MB occupava 7,9 MB di RSS privato.

Un assaggio rapido

Tre comandi per installare, inizializzare e avviare:

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

Poi verifica che il relay sia attivo:

sh
curl http://127.0.0.1:8080/health

Poi recupera il documento NIP-11:

sh
curl -H "Accept: application/nostr+json" http://127.0.0.1:8080/
Passi successivi
Segui la guida di avvio rapido per la prima esecuzione, oppure passa direttamente al riferimento di configurazione per regolare il relay.