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 /metrics do 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 start

Depois verifique se o relay está no ar:

sh
curl http://127.0.0.1:8080/health

E obtenha o documento NIP-11:

sh
curl -H "Accept: application/nostr+json" http://127.0.0.1:8080/
Próximos passos
Siga o início rápido para a primeira execução, ou vá direto para a referência de configuração para ajustar o relay.