> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Nostr

Nostr — это загружаемый плагин канала (`@openclaw/nostr`), который позволяет OpenClaw получать зашифрованные личные сообщения NIP-04 через ретрансляторы Nostr и отвечать на них. Одна учетная запись на Gateway; только личные сообщения.

## Установка

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw plugins install @openclaw/nostr
```

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

Из локальной рабочей копии (для процессов разработки):

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw plugins install --link <path-to-local-nostr-plugin>
```

После установки или включения плагинов перезапустите Gateway. Первоначальная настройка (`openclaw onboard`) и `openclaw channels add` отображают Nostr из общего каталога каналов после установки плагина.

### Неинтерактивная настройка

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY"
openclaw channels add --channel nostr --private-key "$NOSTR_PRIVATE_KEY" --relay-urls "wss://relay.damus.io,wss://relay.primal.net"
```

Используйте `--use-env`, чтобы хранить `NOSTR_PRIVATE_KEY` в окружении, а не сохранять ключ в конфигурации (только для учетной записи по умолчанию).

## Быстрая настройка

1. Создайте пару ключей Nostr (если необходимо):

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
# С помощью nak
nak key generate
```

2. Добавьте в конфигурацию:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
    },
  },
}
```

3. Экспортируйте ключ:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
export NOSTR_PRIVATE_KEY="nsec1..."
```

4. Перезапустите Gateway.

## Справочник по конфигурации

| Ключ | Тип | Значение по умолчанию | Описание |
| - | - | - | - |
| `privateKey` | string | обязательно | Закрытый ключ в формате `nsec` или hex; допускаются ссылки на секреты |
| `relays` | string\[] | `['wss://relay.damus.io', 'wss://nos.lol']` | URL-адреса ретрансляторов (WebSocket) |
| `dmPolicy` | string | `pairing` | Политика доступа к личным сообщениям |
| `allowFrom` | string\[] | `[]` | Разрешенные открытые ключи отправителей |
| `enabled` | boolean | `true` | Включить или отключить канал |
| `name` | string | - | Отображаемое имя |
| `profile` | object | - | Метаданные профиля NIP-01 |

## Метаданные профиля

Данные профиля публикуются как событие NIP-01 `kind:0`. Управлять ими можно в Control UI (Channels -> Nostr -> Profile) или непосредственно в конфигурации.

Пример:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      profile: {
        name: "openclaw",
        displayName: "OpenClaw",
        about: "Бот-помощник для личных сообщений",
        picture: "https://example.com/avatar.png",
        banner: "https://example.com/banner.png",
        website: "https://example.com",
        nip05: "openclaw@example.com",
        lud16: "openclaw@example.com",
      },
    },
  },
}
```

Примечания:

* URL-адреса профиля должны использовать `https://`.
* При импорте из ретрансляторов поля объединяются, а локальные переопределения сохраняются.

## Управление доступом

### Политики личных сообщений

* **pairing** (по умолчанию): неизвестные отправители получают код сопряжения.
* **allowlist**: личные сообщения могут отправлять только открытые ключи из `allowFrom`.
* **open**: общедоступные входящие личные сообщения (требуется `allowFrom: ["*"]`).
* **disabled**: игнорировать входящие личные сообщения.

Примечания о применении политик:

* Подписи входящих событий проверяются до применения политики отправителей и расшифровки NIP-04, поэтому поддельные события отклоняются на раннем этапе.
* Ответы для сопряжения отправляются без расшифровки или обработки исходного содержимого личного сообщения.
* Частота входящих личных сообщений ограничивается глобально и для каждого отправителя, а сообщения слишком большого размера отбрасываются до расшифровки.

### Пример списка разрешенных отправителей

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      dmPolicy: "allowlist",
      allowFrom: ["npub1abc...", "npub1xyz..."],
    },
  },
}
```

## Форматы ключей

Допустимые форматы:

* **Закрытый ключ:** `nsec...` или 64-символьный hex
* **Открытые ключи (`allowFrom`):** `npub...` или hex

## Ретрансляторы

Значения по умолчанию: `relay.damus.io` и `nos.lol`.

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      relays: ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"],
    },
  },
}
```

Рекомендации:

* Используйте 2–3 ретранслятора для резервирования.
* Избегайте слишком большого количества ретрансляторов из-за задержек и дублирования.
* Платные ретрансляторы могут повысить надежность.
* Локальные ретрансляторы подходят для тестирования (`ws://localhost:7777`).

## Поддержка протоколов

| NIP | Состояние | Описание |
| - | - | - |
| NIP-01 | Поддерживается | Базовый формат событий и метаданные профиля |
| NIP-04 | Поддерживается | Зашифрованные личные сообщения (`kind:4`) |
| NIP-17 | Запланировано | Личные сообщения в подарочной упаковке |
| NIP-44 | Запланировано | Версионированное шифрование |

## Тестирование

### Локальный ретранслятор

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
# Запустите strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
```

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      relays: ["ws://localhost:7777"],
    },
  },
}
```

### Ручная проверка

1. Найдите открытый ключ бота в журналах Gateway или в `openclaw channels status` (hex; при необходимости преобразуйте его в npub в своем клиенте).
2. Откройте клиент Nostr (Amethyst, Damus и т. п.).
3. Отправьте личное сообщение на открытый ключ бота.
4. Убедитесь, что получен ответ.

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

### Сообщения не поступают

* Убедитесь, что закрытый ключ действителен.
* Убедитесь, что URL-адреса ретрансляторов доступны и используют `wss://` (или `ws://` для локального подключения).
* Убедитесь, что `enabled` не имеет значения `false`.
* Проверьте журналы Gateway на наличие ошибок подключения к ретрансляторам.

### Ответы не отправляются

* Убедитесь, что ретранслятор принимает запись.
* Проверьте исходящее подключение.
* Проверьте, не применяет ли ретранслятор ограничения частоты запросов.

### Дублирующиеся ответы

* Это ожидаемо при использовании нескольких ретрансляторов.
* Сообщения дедуплицируются по идентификатору события; ответ формируется только при первой доставке.

## Безопасность

* Никогда не добавляйте закрытые ключи в репозиторий.
* Используйте переменные окружения для ключей.
* Для рабочих ботов рассмотрите возможность использования `allowlist`.
* Подписи проверяются до применения политики отправителей, а политика отправителей применяется до расшифровки, поэтому поддельные события отклоняются на раннем этапе, а неизвестные отправители не могут принудительно запустить полный набор криптографических операций.

## Ограничения (MVP)

* Только личные сообщения (без групповых чатов).
* Медиавложения не поддерживаются.
* Поддерживается только NIP-04 (поддержка подарочной упаковки NIP-17 запланирована).

## Связанные материалы

* [Обзор каналов](https://docs2.openclaw.ai/ru/channels.md) — все поддерживаемые каналы
* [Сопряжение](https://docs2.openclaw.ai/ru/channels/pairing.md) — аутентификация личных сообщений и процесс сопряжения
* [Группы](https://docs2.openclaw.ai/ru/channels/groups.md) — поведение групповых чатов и ограничение по упоминаниям
* [Маршрутизация каналов](https://docs2.openclaw.ai/ru/channels/channel-routing.md) — маршрутизация сеансов для сообщений
* [Безопасность](https://docs2.openclaw.ai/ru/gateway/security.md) — модель доступа и усиление защиты
