Questions fréquentes
Réponses courtes sur l’exploitation de nostrfy. Tout ci-dessous renvoie vers la documentation — et si vous préférez, vous pouvez le comparer à strfry.
Qu’est-ce que nostrfy ?
nostrfy est un moteur de serveur relais Nostr tout-en-un écrit en Rust. Il stocke les événements des clients Nostr et les distribue en réponse aux abonnements, en implémentant tous les NIP côté relais, plus un serveur multimédia Blossom optionnel, une API REST en lecture seule et une API de gestion NIP-86 — le tout dans un seul binaire.
nostrfy est-il gratuit et open source ?
Oui. nostrfy est un logiciel libre, sous double licence MIT ou Apache-2.0, au choix. Le code source est sur GitHub, sans offre payante, télémétrie ni verrouillage.
De quoi ai-je besoin pour exécuter nostrfy ?
Un seul binaire statique fonctionne sur Linux (x86_64 et aarch64) et FreeBSD (x86_64). Il a été vérifié sur un VPS 0,25 vCPU / 512 Mo. Le stockage est une base LMDB locale — aucun serveur de base de données externe n’est requis.
Comment installer nostrfy ?
Une ligne : curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh. Le script détecte votre OS et votre architecture, télécharge le binaire précompilé correspondant, vérifie sa somme de contrôle et le place dans le PATH. Vous pouvez aussi compiler depuis les sources avec Cargo ou copier un modèle de configuration prêt à l’emploi.
Comment nostrfy est-il configuré ?
Tout tient dans un seul nostrfy.toml entièrement commenté — identité du relais, limites, stockage, contrôle d’accès, Blossom et RPC. nostrfy check le valide avant le démarrage, et la plupart des réglages se rechargent à chaud via SIGHUP sans redémarrage.
Quels NIP nostrfy prend-il en charge ?
nostrfy implémente 36 NIP, dont NIP-01, la suppression NIP-09, les groupes NIP-29, l’authentification NIP-42, la recherche NIP-50, les zaps NIP-57, le gift wrap NIP-59, les listes de relais NIP-65, negentropy NIP-77, la gestion NIP-86 et l’authentification HTTP NIP-98. La liste supported_nips de NIP-11 est dynamique : un NIP disparaît lorsque les kinds nécessaires sont bloqués ou désactivés.
nostrfy héberge-t-il des fichiers multimédias ?
Oui. Le serveur de fichiers Blossom intégré héberge des téléversements adressés par contenu sur son propre nom d’hôte — disque local ou bucket compatible S3 comme AWS S3 ou Cloudflare R2. Les téléversements sont autorisés par des événements kind-24242 signés et peuvent être limités à une allowlist.
Puis-je migrer depuis strfry ?
Oui. nostrfy migrate-strfry importe directement une base strfry ou un export JSONL, en appliquant la sémantique remplaçable/adressable, les suppressions NIP-09 et les effets de bord de modération NIP-29, et peut fusionner les réglages strfry équivalents dans nostrfy.toml. La migration est hors ligne, testable à blanc et sûre à relancer.
nostrfy peut-il tourner derrière un proxy inverse ou Cloudflare ?
Oui. Configurez server.trusted_proxies avec les adresses du proxy (bouclage local pour nginx ou Caddy sur le même hôte, la plage du load balancer dans le cloud) pour que les limites par IP, blockip et les journaux voient la vraie adresse client. Le TLS est terminé par votre proxy ou tunnel ; nostrfy sert derrière en HTTP et WebSocket classiques.
nostrfy a-t-il une API REST ?
Oui — une API /api/v1 en lecture seule sur le même port que le relais WebSocket, dans son propre thread de lecture, donc le trafic REST ne bloque jamais les abonnés. Elle interroge les événements par npub, nevent ou naddr et fournit compteurs, statistiques d’auteur, répartitions par jour/mois et recherche plein texte.
Comment nostrfy reste-t-il en ligne sous charge ou abus ?
Protection contre la surcharge, threads de lecture dédiés, isolation des panics et limites de ressources strictes. Les files bornées échouent vite au lieu d’épuiser la mémoire ; les plafonds de connexions par IP arrêtent les floods de sockets, et un disque bloqué ne bloque pas les lectures. Les sous-systèmes sont isolés, le relais continue de servir.
Comment gérer les utilisateurs, bannissements et rôles ?
Via l’API de gestion JSON-RPC NIP-86 avec un token Bearer ou une clé admin NIP-98 : bannir des clés, bloquer des IP, gérer les allowlists de kinds, les rôles et les codes d’invitation. Les attributions de méthodes permettent de déléguer la modération à d’autres clés sans donner les pleins droits d’admin.