Знакомство с nostrfy

Что такое nostrfy, что он умеет из коробки и какие идеи лежат в основе универсального движка Nostr-релея на Rust.

nostrfy — сервер релея для протокола Nostr. Он хранит события (посты, реакции, профили…), отправленные клиентами, и доставляет их в ответ на запросы по подпискам.

Ключевые возможности

  • Простой и стабильный — написан на Rust; один бинарник делает всё.
  • Быстрое хранилище и поиск — база LMDB с индексом полнотекстового поиска (NIP-50).
  • Широкая поддержка NIP — реализовано 36 NIP плюс файловый сервер Blossom: удаление, proof-of-work, делегирование, группы, поиск и API управления.
  • Прост в эксплуатации — режим демона, ротация логов, горячая перезагрузка конфигурации (SIGHUP), живая статистика, REST API и метрики Prometheus.
  • Лёгкая миграция — одна команда импортирует существующую strfry базы данных: dry-run, объединение настроек и безопасные повторные запуски (руководство по миграции).

Что вы получаете из коробки

Один бинарник nostrfy на одном порту предоставляет:

  • WebSocket-релей и информационный документ NIP-11.
  • Доступный только для чтения REST API, расположенный по адресу /api/v1/... — отдельный поток чтения гарантирует, что REST-трафик никогда не задержит WebSocket-подписчиков.
  • файловый сервер Blossom (размещение медиа) на отдельном домене.
  • RPC управления NIP-86, проверка работоспособности и метрики Prometheus /metrics.

Потребление ресурсов

Проверено, что nostrfy работает на 0.25 vCPU / 512 MB VPS. Карта памяти LMDB — разреженная виртуальная резервация на 1 TiB, физический диск растёт только с реальными данными, а память процесса остаётся стабильной: релей с базой 252 MB занимал 7.9 MB приватного RSS.

Быстрое знакомство

Три команды — установка, инициализация и запуск:

sh
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
nostrfy --config nostrfy.toml init
nostrfy --config nostrfy.toml start

Затем убедитесь, что релей запущен:

sh
curl http://127.0.0.1:8080/health

И получите его документ NIP-11:

sh
curl -H "Accept: application/nostr+json" http://127.0.0.1:8080/
Что дальше
Начните с быстрого старта для первого запуска или сразу перейдите к справочнику по конфигурации, чтобы настроить релей.