Частые вопросы

Короткие ответы о работе nostrfy. Всё ниже ссылается на документацию — а если хотите, можно сравнить со strfry.

Что такое nostrfy?

nostrfy — универсальный серверный движок Nostr-релея на Rust. Он хранит события от клиентов Nostr и доставляет их по подпискам, реализуя все релейные NIP, а также дополнительный медиасервер Blossom, REST API только для чтения и API управления NIP-86 — всё в одном бинарнике.

nostrfy бесплатен и открыт?

Да. nostrfy — свободное ПО с двойной лицензией MIT или Apache-2.0 на ваш выбор. Исходный код на GitHub, без платных уровней, телеметрии и привязки.

Что нужно для работы nostrfy?

Один статический бинарник работает на Linux (x86_64 и aarch64) и FreeBSD (x86_64). Проверен на VPS с 0.25 vCPU / 512 MB. Хранилище — локальная база LMDB; внешний сервер базы данных не нужен.

Как установить nostrfy?

Одна строка: curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh. Скрипт определяет вашу ОС и архитектуру, скачивает подходящий готовый бинарник, проверяет его контрольную сумму и помещает в PATH. Также можно собрать из исходников с Cargo или скопировать готовый шаблон конфигурации.

Как настраивается nostrfy?

Всё находится в одном подробно документированном файле nostrfy.toml — идентичность релея, лимиты, хранилище, контроль доступа, Blossom и RPC. nostrfy check проверяет его перед запуском, а большинство настроек перезагружается на SIGHUP без перезапуска.

Какие NIP поддерживает nostrfy?

nostrfy реализует 36 NIP, включая NIP-01, удаление NIP-09, группы NIP-29, аутентификацию NIP-42, поиск NIP-50, Zap NIP-57, подарочную упаковку NIP-59, списки релеев NIP-65, negentropy NIP-77, управление NIP-86 и HTTP-аутентификацию NIP-98. Список supported_nips в NIP-11 динамический: NIP исчезает, когда нужные ему kinds заблокированы или отключены.

Хостит ли nostrfy медиафайлы?

Да. Встроенный файловый сервер Blossom размещает загрузки с адресацией по содержимому на отдельном домене: локальный диск или S3-совместимый бакет (AWS S3, Cloudflare R2). Загрузки авторизуются подписанными событиями kind-24242 и могут быть ограничены списком.

Можно ли мигрировать со strfry?

Да. nostrfy migrate-strfry напрямую импортирует базу strfry или экспорт JSONL, применяя семантику заменяемых/адресуемых событий, удаления NIP-09 и побочные эффекты модерации NIP-29, а также при желании объединяет эквивалентные настройки strfry в nostrfy.toml. Миграция офлайн, поддерживает dry-run и безопасна при повторе.

Может ли nostrfy работать за обратным прокси или Cloudflare?

Да. Укажите адреса прокси в server.trusted_proxies (loopback для nginx или Caddy на том же хосте, диапазон балансировщика в облаке), чтобы ограничения по IP, blockip и журналы видели реальный адрес клиента. TLS завершается вашим прокси или туннелем; nostrfy за ним отдаёт обычные HTTP и WebSocket.

Есть ли у nostrfy REST API?

Да — /api/v1 только для чтения работает на том же порту, что и WebSocket-релей, в отдельном потоке чтения, поэтому REST-трафик никогда не блокирует подписчиков. Можно запрашивать события по npub, nevent или naddr и получать счётчики, статистику авторов, разбивку по дням/месяцам и полнотекстовый поиск.

Как nostrfy остаётся в строю под нагрузкой и атаками?

Защита от перегрузки, выделенные потоки чтения, изоляция паник и строгие лимиты ресурсов. Ограниченные очереди быстро отклоняют запросы вместо исчерпания памяти, лимиты соединений на IP останавливают флуд сокетов, а зависший диск не блокирует чтение. Подсистемы изолированы, и релей продолжает работать.

Как управлять пользователями, банами и ролями?

Через API управления NIP-86 JSON-RPC с Bearer token или ключом администратора NIP-98: банить публичные ключи, блокировать IP, управлять списками kinds, ролями и кодами приглашений. Назначение методов позволяет делегировать модерацию другим ключам без полных прав администратора.