Гид по технологиям

Настройка Nostr Relay с Nostream на Ubuntu

6 min read DevOps Обновлено 05 Dec 2025
Nostream Relay на Ubuntu — руководство
Nostream Relay на Ubuntu — руководство

Оглавление

  • Почему стоит выбрать Nostream
  • Требования и предварительная подготовка
  • Установка Docker и Docker Compose
  • Установка Nostream
  • Настройка обратного прокси Nginx и SSL
  • Подключение клиентов Gossip и Amethyst
  • Проверка и тестирование работоспособности
  • Безопасность и эксплуатация
  • Устранение неполадок
  • Контрольный список развертывания

Почему стоит выбрать Nostream

Nostream — лёгкий relay для протокола Nostr, написанный на TypeScript. Он позволяет вам контролировать свои данные и управлять поведением узла в сети Nostr. Поддержка Docker обеспечивает удобное развёртывание и изоляцию сервисов. Кратко:

  • Приватность и контроль данных: вы управляете хранилищем и конфигурацией.
  • Простота развёртывания: готовые скрипты и Docker-контейнеры.
  • Совместимость: работает с популярными клиентами Nostr, такими как Gossip и Amethyst.

Важно: Nostr — это децентрализованный протокол для обмена короткими сообщениями и событиями. Relay принимает и ретранслирует зашифрованные события между клиентами.

Требования и предварительная подготовка

Коротко о требованиях:

  • VPS с Ubuntu (рекомендуется 8 ГБ RAM и больше). В production можно использовать 2 CPU/8GB минимум. Это оценка, зависящая от нагрузки.
  • Домен с A-записью на IP сервера и корректной PTR-записью для обратного разрешения.
  • Рабочая пара ключей Nostr для администратора (pubkey/privkey).
  • Пользователь с sudo.

Рекомендации перед началом:

  • Забекапьте важные данные и конфигурации.
  • Откройте порты в брандмауэре: 80 и 443 для HTTP/HTTPS, при необходимости 8008 для внутреннего доступа.
  • Настройте мониторинг и алерты для дискового пространства и использования CPU.

Установка Docker и Docker Compose

  1. Импортируйте GPG-ключ Docker и создайте каталог для ключей:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
  1. Создайте файл репозитория Docker:
sudo nano /etc/apt/sources.list.d/docker.list

Вставьте в него:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable
  1. Обновите систему и установите пакеты:
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx git nodejs npm
  1. Добавьте текущего пользователя в группу docker (замените myuser на ваше имя пользователя):
sudo usermod -aG docker myuser

Примечание: для применения группы выйдите и войдите снова в сеанс SSH или выполните newgrp docker.

Установка Nostream

  1. Клонируйте репозиторий и перейдите в папку:
git clone https://github.com/Cameri/nostream.git && cd nostream
  1. Запустите скрипт bootstrap для сборки и запуска контейнеров Docker:
./scripts/start

Дождитесь появления логотипа «nostream» в выводе контейнера, затем нажмите Ctrl+C, чтобы прервать показ логов.

Терминал с успешным запуском nostream.

  1. Откройте файл конфигурации и отредактируйте параметры:
nano ./.nostr/settings.yaml

Обновите значения:

  • relay_url: укажите домен вашего инстанса, например nostr.example.com
  • name: удобное имя вашего релея
  • pubkey: публичный ключ администратора (ваш основной nostr pubkey)
  • contact: рабочий email для обратной связи

Подсветка адреса nostream в конфигурации.

Подсветка публичного ключа администратора.

Подсветка контактного email администратора.

  1. Отредактируйте docker-compose.yml и задайте секрет окружения:
nano ./docker-compose.yml

В разделе environment замените значение SECRET на случайную строку:

SECRET: your_random_secret_here

Генерация случайной строки 64 символа:

cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 64 | head -n 1
  1. Перезапустите сервис:
./scripts/start

Настройка обратного прокси Nginx и SSL

Для публичного доступа используйте Nginx как обратный прокси, маршрутизирующий WebSocket и HTTP трафик к контейнерам.

  1. Создайте конфигурацию сайта:
sudo nano /etc/nginx/sites-available/nostream

Пример конфигурации (замените nostr.myvpsserver.top на ваш домен):

server {
    server_name nostr.myvpsserver.top;

    location / {
        proxy_pass http://127.0.0.1:8008;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
}
  1. Активируйте сайт и проверьте конфигурацию:
sudo ln -s /etc/nginx/sites-available/nostream /etc/nginx/sites-enabled/nostream
sudo nginx -t
sudo systemctl restart nginx
  1. Установка certbot и получение SSL:
sudo snap install core
sudo snap install certbot --classic
sudo certbot register --agree-tos -m you@your-email.invalid
sudo certbot --nginx -d nostr.myvpsserver.top

После успешного запроса сертификата сайт должен быть доступен по HTTPS и WebSocket через wss://.

Скриншот успешной установки nostream.

Важно: при работе с WebSocket убедитесь, что Nginx правильно проксирует заголовки Upgrade и Connection.

Подключение к Gossip

  1. Откройте Gossip и выберите в боковом меню “Relays”.

Опция Relays в Gossip.

  1. Нажмите Add Relay.
  2. Введите адрес вашего релея с префиксом wss://, например wss://nostr.example.com.

Адрес нового nostream релея.

  1. Нажмите Check, затем Configure. Включите Read и Write для отправки и получения сообщений.

  2. Включите Inbox, Outbox и Advertise при необходимости для взаимодействия с другими релеями.

Активные функции инстанса.

  1. Отправьте тестовую заметку (note) в Gossip, чтобы проверить ретрансляцию.

Подключение к Amethyst

  1. В Amethyst кликните по иконке пользователя в левом верхнем углу.

Меню пользователя в Amethyst.

  1. Выберите Relays в боковой панели.

Раздел Relays в Amethyst.

  1. Нажмите Add a Relay и введите адрес релея без протокола, например nostr.example.com.

Поле для добавления релея.

  1. Нажмите Add и отправьте тестовую заметку, чтобы убедиться в работоспособности.

Пример заметки Nostr в Amethyst.

Проверка и тестирование работоспособности

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

  • HTTPS доступ к домену и валидный сертификат.
  • WebSocket соединение устанавливается (wss://).
  • Клиент может отправлять и получать заметки через релей.
  • Логи контейнеров не содержат критических ошибок при старте.

Тесты и приёмо-испытания:

  • Отправьте note из Gossip и убедитесь, что оно появляется в Amethyst.
  • Проверьте заголовки в HTTP-response от Nginx на предмет Upgrade и Connection.
  • Сделайте curl-запрос к HTTP endpoint для проверки доступности (если доступен API).

Пример базовой проверки WebSocket из терминала:

# с использованием websocat (установите предварительно):
websocat wss://nostr.myvpsserver.top

Безопасность и эксплуатация

Рекомендации по безопасности:

  • Храните приватный ключ администратора отдельно, используйте менеджер секретов.
  • Ограничьте доступ к SSH с помощью ключей и двухфакторной аутентификации.
  • Периодически выполнять обновления образов Docker и операционной системы.
  • Настройте ротацию логов и дисковую квоту для контейнеров.

Жёсткая настройка Nginx и Docker:

  • Используйте fail2ban или аналог для защиты от bruteforce.
  • Запуск контейнеров с минимальными привилегиями, не используйте –privileged.
  • Ограничьте ресурсы Docker через limits в docker-compose (cpu, memory).

Мониторинг и бэкап:

  • Настройте прометей/графану или простой мониторинг использования CPU/памяти.
  • Делайте резервные копии конфигураций и важных данных (settings.yaml, docker-compose.yml).

Устранение неполадок

Сценарии и решения:

  • Проблема: Nginx не проксирует WebSocket. Решение: проверьте proxy_set_header Upgrade и Connection, убедитесь, что nginx перезапущен.
  • Проблема: Сертификат certbot не может получить challenge. Решение: проверьте A-запись DNS и доступ к порту 80.
  • Проблема: Клиенты не видят релей. Решение: проверьте лог контейнера nostream (docker logs ) и проверьте настройки relay_url и pubkey в settings.yaml.

Полезные команды для диагностики:

sudo journalctl -u nginx -f
sudo docker ps
sudo docker logs -f nostream
sudo nginx -t

Контрольный список развертывания

Роль: администратор сервера

  • Домен и DNS: A и PTR записи настроены
  • Установлен Docker и зависимости
  • Клонирован nostream и запущен ./scripts/start
  • Настроен settings.yaml (relay_url, name, pubkey, contact)
  • Задан SECRET в docker-compose.yml
  • Настроен Nginx и сертификат SSL через certbot
  • Подключены клиенты Gossip и Amethyst и выполнены тесты
  • Настроены бэкапы и мониторинг

Частые ошибки и когда развёртывание не подходит

Когда собственный релей не лучший выбор:

  • Если у вас очень низкая доступность канала или частые перезапуски VPS — релей будет ненадёжен.
  • Если вы не готовы обслуживать обновления и безопасность — лучше использовать доверенные публичные релею.
  • При ограниченном бюджете на трафик и хранение данных публичные решения могут быть экономичнее.

Короткая методология эксплуатации

  1. Подготовка: домен, DNS, ключи.
  2. Развёртывание: Docker, Nostream, Nginx.
  3. Защита: SSL, firewall, SSH.
  4. Тестирование: клиенты и логирование.
  5. Эксплуатация: мониторинг, обновления, бэкап.

Краткая справка по терминологии

  • Relay: сервер, принимающий и ретранслирующий события Nostr.
  • Pod: Docker контейнер или сервис.
  • wss://: WebSocket over TLS — защищённый канал для передачи событий.

Заключение

Развёртывание собственного Nostr Relay даёт контроль над вашими данными и гибкость в настройке. Nostream упрощает процесс благодаря Docker-ориентированной архитектуре. Следуйте приведённым шагам, проверьте работу клиентов и настройте базовую безопасность перед долгосрочной эксплуатацией.

Кредиты изображения: Paulina Chmolowska via Unsplash. Все изменения и скриншоты подготовлены Ramces Red.

Ноутбук на деревянном столе.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как установить CentOS на рабочий стол
Linux

Как установить CentOS на рабочий стол

Обзор нового Bing с ChatGPT
Поисковые системы

Обзор нового Bing с ChatGPT

Google Watchlist: как следить за фильмами и сериалами
Руководство

Google Watchlist: как следить за фильмами и сериалами

Как отменить событие в Google Календаре
Руководство

Как отменить событие в Google Календаре

Как снизить высокий пинг в Windows 10
Сеть

Как снизить высокий пинг в Windows 10

Instagram на компьютере: как публиковать и смотреть
Социальные сети

Instagram на компьютере: как публиковать и смотреть