Introducción a nostrfy
Qué es nostrfy, qué hace de serie y las ideas de diseño detrás del motor de relé Nostr todo en uno escrito en Rust.
nostrfy es un servidor de relé para el protocolo Nostr. Almacena los eventos enviados por los clientes (publicaciones, reacciones, perfiles…) y los entrega en respuesta a las suscripciones.
Funciones clave
- Simple y estable — escrito en Rust; un solo binario lo hace todo.
- Almacenamiento y búsqueda rápidos — base de datos LMDB con índice de búsqueda de texto completo (NIP-50).
- Amplia compatibilidad con NIP — 36 NIP implementados, más el servidor de archivos Blossom: eliminación, prueba de trabajo, delegación, grupos, búsqueda y una API de gestión.
- Fácil de operar — modo demonio, rotación de registros, recarga en caliente de la configuración (SIGHUP), estadísticas en vivo, API REST y métricas Prometheus.
- Migración sencilla — un comando importa una strfry base de datos: dry-run, fusión de ajustes y repeticiones seguras (guía de migración).
Lo que obtienes de serie
Un único binario nostrfy en un solo puerto sirve:
- relé WebSocket y el documento de información NIP-11.
- Una API REST de solo lectura, ubicada en
/api/v1/...— su propio hilo de lectura garantiza que el tráfico REST nunca bloquee a los suscriptores WebSocket. - servidor de archivos Blossom (alojamiento de medios) en su propio nombre de host.
- RPC de gestión NIP-86, la comprobación de estado y Prometheus
/metrics.
Perfil de recursos
nostrfy se ha verificado que funciona en un VPS de 0,25 vCPU / 512 MB. El mapa de memoria LMDB es una reserva virtual dispersa de 1 TiB — el disco físico solo crece con datos reales — y la memoria del proceso se mantiene estable: un relé con una base de 252 MB ocupaba 7,9 MB de RSS privado.
Una idea rápida
Tres comandos para instalar, inicializar y arrancar:
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
nostrfy --config nostrfy.toml init
nostrfy --config nostrfy.toml startLuego verifica que el relé esté activo:
curl http://127.0.0.1:8080/healthY obtén su documento NIP-11:
curl -H "Accept: application/nostr+json" http://127.0.0.1:8080/