Rust · MIT или Apache-2.0 · последний релиз v0.1.16

Nostr-релей, который не падает.

nostrfy — универсальный серверный движок Nostr-релея. Скорость по замыслу, лёгкость по природе, мощь по умолчанию. Установка одной строкой, настройка из одного файла TOML и запуск практически на любом VPS.

более 36 релейных NIP Linux · FreeBSD · контейнеры один бинарник, без зависимостей
Работающий релей
wss://relay.nostrfy.org

Установка одной строкой

Скрипт установки определяет вашу ОС и архитектуру, скачивает подходящий готовый бинарник, проверяет его sha256-контрольную сумму и помещает в PATH. Без клонирования, без сборки, без sudo.

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

Работает без sudo

Устанавливается в ~/.local/bin, ~/bin или ~/.cargo/bin — первый из них, уже присутствующий в PATH.

Linux + FreeBSD

Готовые бинарники для x86_64 и aarch64 Linux, а также FreeBSD x86_64.

Проверка контрольной суммы

Контрольная сумма релиза скачивается и проверяется до записи бинарника на диск.

Конкретная версия
sh
VERSION=v0.1.16 curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
Для всей системы
sh
INSTALL_DIR=/usr/local/bin sudo curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh
Перезаписать существующий
sh
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh -s -- --force
Сборка из исходников
sh
git clone https://github.com/iqbqioza/nostrfy.git && cd nostrfy && cargo build --release

Переходите со strfry?

Перенесите существующие события одной командой — офлайн, с проверкой и безопасным повтором.

Руководство по миграции

Запуск меньше чем за минуту

nostrfy включает демон, валидатор конфигурации, живую статистику, ротацию логов и горячую перезагрузку — всё, что нужно оператору релея, в одном бинарнике.

  • nostrfy init создаёт стандартный nostrfy.toml с полными комментариями
  • nostrfy check проверяет конфигурацию перед запуском
  • SIGHUP перезагружает большинство настроек без перезапуска
  • nostrfy upgrade обновляет бинарник до последнего релиза
Открыть руководство
sh
nostrfy init
# создаёт стандартный nostrfy.toml и завершается
sh
nostrfy start
# запускает релей как демон
sh
nostrfy stats
# соединения, события, размер базы
sh
curl http://localhost:8080/health
# {"status":"ok"}

Направьте любой клиент Nostr на ws://<host>:8080 — готово.

Для реальных релеев

Каждая возможность подчинена двум целям: не падать и полностью соответствовать спецификациям. Результат — релей, который выдерживает атаки, зависшие диски и хосты с малым объёмом памяти.

Полное соответствие спецификациям

Все релейные NIP реализованы и проверены по официальным спецификациям — более 36 NIP плюс файловый сервер Blossom.

Не падает

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

Медиасервер Blossom

Загрузки с адресацией по SHA-256 на отдельном домене — локальный диск или S3-совместимые бакеты (AWS S3, Cloudflare R2), с удалением по подписи владельца.

REST API

Только для чтения /api/v1 для запросов событий по npub1, nevent1 или naddr1 — собственный поток чтения не даёт REST-трафику блокировать WebSocket-подписчиков.

Хранение в LMDB

Надёжное, устойчивое к сбоям хранилище на heed. Карта памяти резервируется разреженно до верхней границы — без изменения размера на ходу, минимальный физический объём.

Всё настраивается

Все параметры находятся в nostrfy.toml — никаких опций времени компиляции. Правьте, SIGHUP, готово. Лимиты, переключатели NIP, хранилище и другое.

Работает за TLS-прокси

nginx, Caddy, Cloudflare Tunnel — обновления WebSocket и X-Forwarded-Proto учитываются, поэтому wss:// работает за любым прокси.

Rust + FreeBSD

Единый статический бинарник Rust для Linux x86_64, Linux aarch64 и FreeBSD x86_64 — проверен на VPS с 0.25 vCPU / 512 MB.

Измеренная производительность

Release-сборка, свежая база, ноутбук с 8 потоками. Скорость записи ограничена единственным потоком записи LMDB и пакетными коммитами без fsync; потоки чтения ему не мешают.

~21k
событий/с приём
одно соединение
100%
живая рассылка
10 000 / 10 000 доставок
0.32s
запрос к базе
20 000 событий
0.26s
поиск NIP-50
10 000 результатов
7.9 MB
частный RSS
при базе 252 MB

Воспроизводится встроенными бенчмарками — см. заметки о производительности.

Полная поддержка NIP по спецификации

Все релейные NIP реализованы и проверены. Список в NIP-11 динамический — NIP исчезает из него, когда его kind блокируются.

Полный справочник NIP
19111317222628293233344042434546475057596265666770777884858687889498A3Blossom

Запустите свой релей за минуты

От крошечного VPS до глобального парка — готовый бинарник, валидатор конфигурации и руководства по развёртыванию делают это простым.

Есть вопросы? Прочитайте FAQ или узнайте, как nostrfy отличается от strfry — и перейдите одной командой.