Introdução ao nostrfy
O que é o nostrfy, o que ele faz de fábrica e as ideias por trás do motor de relay Nostr tudo-em-um escrito em Rust.
nostrfy é um servidor de relay para o protocolo Nostr. Ele armazena os eventos enviados pelos clientes (posts, reações, perfis…) e os entrega em resposta às assinaturas.
Recursos principais
- Simples e estável — escrito em Rust; um único binário faz tudo.
- Armazenamento e pesquisa rápidos — banco LMDB com índice de pesquisa de texto completo (NIP-50).
- Amplo suporte a NIP — 36 NIP implementados, além do servidor de arquivos Blossom: exclusão, prova de trabalho, delegação, grupos, pesquisa e uma API de gerenciamento.
- Fácil de operar — modo daemon, rotação de logs, recarga a quente da configuração (SIGHUP), estatísticas ao vivo, API REST e métricas Prometheus.
- Migração fácil — um comando importa um banco de dados strfry existente: simulação, mesclagem de configurações e repetições seguras (guia de migração).
O que você ganha de fábrica
Um único binário nostrfy em uma única porta serve:
- O relay WebSocket e o documento de informações NIP-11.
- Uma API REST somente leitura em
/api/v1/...— com thread de leitura próprio, o tráfego REST nunca bloqueia os assinantes WebSocket. - O servidor de arquivos Blossom (hospedagem de mídia) em seu próprio hostname.
- O RPC de gerenciamento NIP-86, a verificação de saúde e o
/metricsdo Prometheus.
Perfil de recursos
O nostrfy foi verificado em um VPS de 0,25 vCPU / 512 MB. O mapa de memória LMDB é uma reserva virtual esparsa de 1 TiB — o disco físico só cresce com dados reais — e a memória do processo permanece estável: um relay com banco de 252 MB usava 7,9 MB de RSS privado.
Uma ideia rápida
Três comandos para instalar, inicializar e iniciar:
sh
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
nostrfy --config nostrfy.toml init
nostrfy --config nostrfy.toml startDepois verifique se o relay está no ar:
sh
curl http://127.0.0.1:8080/healthE obtenha o documento NIP-11:
sh
curl -H "Accept: application/nostr+json" http://127.0.0.1:8080/