Introduction à nostrfy
Ce qu’est nostrfy, ce qu’il fait d’origine et les idées qui sous-tendent le moteur de relais Nostr tout-en-un écrit en Rust.
nostrfy est un serveur relais pour le protocole Nostr. Il stocke les événements envoyés par les clients (posts, réactions, profils…) et les distribue en réponse aux demandes d’abonnement.
Fonctionnalités clés
- Simple et stable — écrit en Rust ; un seul binaire fait tout.
- Stockage et recherche rapides — base de données LMDB avec index de recherche plein texte (NIP-50).
- Large prise en charge des NIP — 36 NIP implémentés, plus le serveur de fichiers Blossom : suppression, preuve de travail, délégation, groupes, recherche et API de gestion.
- Facile à exploiter — mode démon, rotation des journaux, rechargement à chaud de la configuration (SIGHUP), statistiques en direct, API REST et métriques Prometheus.
- Migration facile — une commande importe une strfry base de données : essai à blanc, fusion des réglages et réexécutions sûres (guide de migration).
Ce que vous obtenez d’origine
Un seul binaire nostrfy sur un seul port sert :
- relais WebSocket et le document d’information NIP-11.
- Une API REST en lecture seule, située à
/api/v1/...— son propre thread de lecture garantit que le trafic REST ne bloque jamais les abonnés WebSocket. - serveur de fichiers Blossom (hébergement de médias) sur son propre nom d’hôte.
- RPC de gestion NIP-86, le contrôle de santé et Prometheus
/metrics.
Profil de ressources
nostrfy a été vérifié sur un VPS 0,25 vCPU / 512 Mo. La carte mémoire LMDB est une réservation virtuelle creuse de 1 TiB — le disque physique ne grandit qu’avec les données réelles — et la mémoire du processus reste stable : un relais avec une base de 252 Mo n’occupait que 7,9 Mo de RSS privé.
Un aperçu rapide
Trois commandes pour installer, initialiser et démarrer :
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
nostrfy --config nostrfy.toml init
nostrfy --config nostrfy.toml startVérifiez ensuite que le relais est en marche :
curl http://127.0.0.1:8080/healthPuis récupérez son document NIP-11 :
curl -H "Accept: application/nostr+json" http://127.0.0.1:8080/