Обзор развёртывания

Как распространяется nostrfy и как его развернуть — Fly.io, AWS, Google Cloud, Azure, DigitalOcean или любой VPS, с заметками о TLS, systemd и контейнерах.

Один бинарник, несколько платформ

nostrfy поставляет готовые бинарники для x86_64 и aarch64 (артефакты релизов GitHub, проверяемые контрольной суммой через install.sh), образ контейнера, который скачивает эти бинарники (компиляция не нужна), и руководства по развёртыванию для основных платформ.

Платформы

ПлатформаТипРуководство
Fly.ioУправляемая платформа (контейнеры, тома, TLS)fly.md
Digital OceanDroplet (VM) или App Platformdeploy/digitalocean.md
AWSEC2 (VM), Lightsail или ECSdeploy/aws.md
Google CloudCompute Engine (VM) или Cloud Rundeploy/gcp.md
AzureVM или Container Appsdeploy/azure.md
Любой VPSОбычный сервер Ubuntu/Debiandeploy/vps.md

Общий шаблон для VM

Все руководства для VM (Digital Ocean, AWS EC2, GCP, Azure, любой VPS) следуют одному шаблону:

sh
# 1. Установите последний релизный бинарник (sudo для самой установки не нужен)
curl -fsSL https://raw.githubusercontent.com/iqbqioza/nostrfy/main/install.sh | sh

# 2. Скачайте шаблон конфигурации и отредактируйте его (клонировать репозиторий не нужно)
sudo mkdir -p /etc/nostrfy
sudo curl -fsSL -o /etc/nostrfy/nostrfy.toml \
  https://raw.githubusercontent.com/iqbqioza/nostrfy/main/deploy/nostrfy.toml
sudo nano /etc/nostrfy/nostrfy.toml                   # задайте name, public_url, private_key

# 3. Скачайте systemd-юнит и запустите сервис
sudo curl -fsSL -o /etc/systemd/system/nostrfy.service \
  https://raw.githubusercontent.com/iqbqioza/nostrfy/main/deploy/nostrfy.service
sudo systemctl daemon-reload
sudo systemctl enable --now nostrfy

# 4. Откройте порт (обычно 8080) в брандмауэре провайдера и проверьте
curl http://localhost:8080/health

Перед запуском в производство

Каждое развёртывание использует одни и те же параметры nostrfy.toml. Перед запуском в производство задайте как минимум:

toml
[relay]
name = "My Relay"
public_url = "wss://relay.example.com"   # обязательно для NIP-42 AUTH / NIP-62 / NIP-98
private_key = ""                          # выполните 'nostrfy genkey' и вставьте ключ

VM или контейнер?

  • VM (systemd): проще всего, дешевле, полный контроль. Рекомендуется для большинства развёртываний релея.
  • Контейнер: используйте Dockerfile из репозитория (скачивает релизный бинарник во время сборки) на Fly.io, Digital Ocean App Platform, AWS ECS, GCP Cloud Run или Azure Container Apps. Для данных LMDB (/data) требуется постоянное хранилище.

Медиа-хост Blossom

Если задан blossom.host, направьте это имя хоста на тот же порт в TLS-прокси (примеры блоков nginx/Caddy см. в руководстве по VPS).

TLS завершается вашим прокси или провайдером
Сам релей обслуживает обычный WebSocket на порту 8080 и учитывает X-Forwarded-Proto.