Nostr-релей, который не падает.
nostrfy — универсальный серверный движок Nostr-релея. Скорость по замыслу, лёгкость по природе, мощь по умолчанию. Установка одной строкой, настройка из одного файла TOML и запуск практически на любом VPS.
Установка одной строкой
Скрипт установки определяет вашу ОС и архитектуру, скачивает подходящий готовый бинарник,
проверяет его sha256-контрольную сумму и помещает в PATH.
Без клонирования, без сборки, без sudo.
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.
Проверка контрольной суммы
Контрольная сумма релиза скачивается и проверяется до записи бинарника на диск.
VERSION=v0.1.16 curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | shINSTALL_DIR=/usr/local/bin sudo curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | shcurl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh -s -- --forcegit clone https://github.com/iqbqioza/nostrfy.git && cd nostrfy && cargo build --releaseПереходите со strfry?
Перенесите существующие события одной командой — офлайн, с проверкой и безопасным повтором.
Запуск меньше чем за минуту
nostrfy включает демон, валидатор конфигурации, живую статистику, ротацию логов и горячую перезагрузку — всё, что нужно оператору релея, в одном бинарнике.
- nostrfy init создаёт стандартный nostrfy.toml с полными комментариями
- nostrfy check проверяет конфигурацию перед запуском
- SIGHUP перезагружает большинство настроек без перезапуска
- nostrfy upgrade обновляет бинарник до последнего релиза
nostrfy init
# создаёт стандартный nostrfy.toml и завершаетсяnostrfy start
# запускает релей как демонnostrfy stats
# соединения, события, размер базы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; потоки чтения ему не мешают.
Воспроизводится встроенными бенчмарками — см. заметки о производительности.
Полная поддержка NIP по спецификации
Все релейные NIP реализованы и проверены. Список в NIP-11 динамический — NIP исчезает из него, когда его kind блокируются.
Экосистема отличных клиентов
nostrfy говорит на открытых стандартах NIP, на которые опираются клиенты, — лучшие приложения Nostr подключаются и получают всё. Любой клиент, совместимый с NIP, работает с вашим релеем.
Ditto действительно использует эти NIP — поиск NIP-50, ветки комментариев NIP-22, Zap NIP-57, медиа NIP-94 и статистику NIP-85 — и каждый из них соответствует возможности релея nostrfy.
Полнофункциональный клиент, который действительно использует эти NIP — поиск NIP-50, личные сообщения NIP-17/59, Zap NIP-57, опросы NIP-88 и медиа Blossom работают с вашим релеем.
Разрабатываете на Nostr? Направьте любой клиент на ваш релей — см. полный справочник NIP.
Запустите свой релей за минуты
От крошечного VPS до глобального парка — готовый бинарник, валидатор конфигурации и руководства по развёртыванию делают это простым.
Есть вопросы? Прочитайте FAQ или узнайте, как nostrfy отличается от strfry — и перейдите одной командой.