---
read_when:
    - आप चाहते हैं कि OpenClaw Nostr के ज़रिए निजी संदेश प्राप्त करे
    - आप विकेंद्रीकृत मैसेजिंग सेट अप कर रहे हैं
summary: NIP-04 एन्क्रिप्टेड संदेशों के माध्यम से Nostr DM चैनल
title: Nostr
x-i18n:
    generated_at: "2026-06-28T22:38:33Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: d6158c22c0ffc5aea56d0ac2b68955f30c3a785013dba5410cbd70f9b689dc3c
    source_path: channels/nostr.md
    workflow: 16
---

**स्थिति:** वैकल्पिक बंडल किया गया Plugin (कॉन्फ़िगर होने तक डिफ़ॉल्ट रूप से अक्षम)।

Nostr सोशल नेटवर्किंग के लिए एक विकेंद्रीकृत प्रोटोकॉल है। यह चैनल OpenClaw को NIP-04 के ज़रिए एन्क्रिप्टेड डायरेक्ट मैसेज (DMs) प्राप्त करने और उनका जवाब देने में सक्षम बनाता है।

## बंडल किया गया Plugin

वर्तमान OpenClaw रिलीज़ Nostr को बंडल किए गए Plugin के रूप में शिप करती हैं, इसलिए सामान्य पैकेज्ड
बिल्ड को अलग इंस्टॉल की ज़रूरत नहीं होती।

### पुराने/कस्टम इंस्टॉल

- ऑनबोर्डिंग (`openclaw onboard`) और `openclaw channels add` अब भी साझा चैनल कैटलॉग से
  Nostr दिखाते हैं।
- अगर आपका बिल्ड बंडल किए गए Nostr को बाहर रखता है, तो npm पैकेज सीधे इंस्टॉल करें।

```bash
openclaw plugins install @openclaw/nostr
```

वर्तमान आधिकारिक रिलीज़ टैग का अनुसरण करने के लिए बिना संस्करण वाला पैकेज इस्तेमाल करें। सटीक
संस्करण केवल तब पिन करें जब आपको पुनरुत्पादनीय इंस्टॉल चाहिए।

लोकल चेकआउट इस्तेमाल करें (डेव वर्कफ़्लो):

```bash
openclaw plugins install --link <path-to-local-nostr-plugin>
```

Plugin इंस्टॉल या सक्षम करने के बाद Gateway रीस्टार्ट करें।

### गैर-इंटरैक्टिव सेटअप

```bash
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"
```

कुंजी को कॉन्फ़िग में स्टोर करने के बजाय `NOSTR_PRIVATE_KEY` को एनवायरनमेंट में रखने के लिए `--use-env` इस्तेमाल करें।

## त्वरित सेटअप

1. Nostr कीपेयर जनरेट करें (यदि ज़रूरत हो):

```bash
# Using nak
nak key generate
```

2. कॉन्फ़िग में जोड़ें:

```json5
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
    },
  },
}
```

3. कुंजी एक्सपोर्ट करें:

```bash
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`                                   | DM एक्सेस नीति                    |
| `allowFrom`  | string[] | `[]`                                        | अनुमत भेजने वाले pubkeys          |
| `enabled`    | boolean  | `true`                                      | चैनल सक्षम/अक्षम करें             |
| `name`       | string   | -                                           | प्रदर्शित नाम                     |
| `profile`    | object   | -                                           | NIP-01 प्रोफ़ाइल मेटाडेटा         |

## प्रोफ़ाइल मेटाडेटा

प्रोफ़ाइल डेटा NIP-01 `kind:0` इवेंट के रूप में प्रकाशित होता है। आप इसे Control UI (चैनल -> Nostr -> प्रोफ़ाइल) से प्रबंधित कर सकते हैं या सीधे कॉन्फ़िग में सेट कर सकते हैं।

उदाहरण:

```json5
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      profile: {
        name: "openclaw",
        displayName: "OpenClaw",
        about: "Personal assistant DM bot",
        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://` इस्तेमाल होना चाहिए।
- रिले से इम्पोर्ट करने पर फ़ील्ड मर्ज होते हैं और लोकल ओवरराइड सुरक्षित रहते हैं।

## एक्सेस नियंत्रण

### DM नीतियां

- **pairing** (डिफ़ॉल्ट): अज्ञात भेजने वालों को पेयरिंग कोड मिलता है।
- **allowlist**: केवल `allowFrom` में मौजूद pubkeys DM कर सकते हैं।
- **open**: सार्वजनिक इनबाउंड DMs (`allowFrom: ["*"]` आवश्यक)।
- **disabled**: इनबाउंड DMs अनदेखा करें।

लागू करने के नोट्स:

- इनबाउंड इवेंट हस्ताक्षर भेजने वाले की नीति और NIP-04 डिक्रिप्शन से पहले सत्यापित किए जाते हैं, इसलिए जाली इवेंट जल्दी अस्वीकार हो जाते हैं।
- पेयरिंग जवाब मूल DM बॉडी को प्रोसेस किए बिना भेजे जाते हैं।
- इनबाउंड DMs पर रेट लिमिट लगती है और बहुत बड़े पेलोड डिक्रिप्ट से पहले ड्रॉप कर दिए जाते हैं।

### Allowlist उदाहरण

```json5
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      dmPolicy: "allowlist",
      allowFrom: ["npub1abc...", "npub1xyz..."],
    },
  },
}
```

## कुंजी फ़ॉर्मैट

स्वीकृत फ़ॉर्मैट:

- **निजी कुंजी:** `nsec...` या 64-अक्षर hex
- **Pubkeys (`allowFrom`):** `npub...` या hex

## रिले

डिफ़ॉल्ट: `relay.damus.io` और `nos.lol`।

```json5
{
  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 | समर्थित | एन्क्रिप्टेड DMs (`kind:4`)            |
| NIP-17 | योजनाबद्ध | गिफ़्ट-रैप्ड DMs                       |
| NIP-44 | योजनाबद्ध | संस्करणयुक्त एन्क्रिप्शन              |

## टेस्टिंग

### लोकल रिले

```bash
# Start strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
```

```json5
{
  channels: {
    nostr: {
      privateKey: "${NOSTR_PRIVATE_KEY}",
      relays: ["ws://localhost:7777"],
    },
  },
}
```

### मैनुअल टेस्ट

1. लॉग से बॉट pubkey (npub) नोट करें।
2. कोई Nostr क्लाइंट खोलें (Damus, Amethyst, आदि)।
3. बॉट pubkey को DM करें।
4. प्रतिक्रिया सत्यापित करें।

## समस्या निवारण

### संदेश प्राप्त नहीं हो रहे

- सत्यापित करें कि निजी कुंजी मान्य है।
- सुनिश्चित करें कि रिले URL पहुंच योग्य हैं और `wss://` इस्तेमाल करते हैं (या लोकल के लिए `ws://`)।
- पुष्टि करें कि `enabled` `false` नहीं है।
- रिले कनेक्शन त्रुटियों के लिए Gateway लॉग देखें।

### प्रतिक्रियाएं नहीं भेजी जा रहीं

- जांचें कि रिले राइट स्वीकार करता है।
- आउटबाउंड कनेक्टिविटी सत्यापित करें।
- रिले रेट लिमिट पर नज़र रखें।

### डुप्लिकेट प्रतिक्रियाएं

- कई रिले इस्तेमाल करते समय यह अपेक्षित है।
- संदेशों को इवेंट ID से डीडुप्लिकेट किया जाता है; केवल पहली डिलीवरी प्रतिक्रिया ट्रिगर करती है।

## सुरक्षा

- निजी कुंजियां कभी कमिट न करें।
- कुंजियों के लिए एनवायरनमेंट वैरिएबल इस्तेमाल करें।
- प्रोडक्शन बॉट्स के लिए `allowlist` पर विचार करें।
- हस्ताक्षर भेजने वाले की नीति से पहले सत्यापित किए जाते हैं, और भेजने वाले की नीति डिक्रिप्ट से पहले लागू होती है, इसलिए जाली इवेंट जल्दी अस्वीकार हो जाते हैं और अज्ञात भेजने वाले पूरा क्रिप्टो काम मजबूर नहीं कर सकते।

## सीमाएं (MVP)

- केवल डायरेक्ट मैसेज (ग्रुप चैट नहीं)।
- कोई मीडिया अटैचमेंट नहीं।
- केवल NIP-04 (NIP-17 गिफ़्ट-रैप योजनाबद्ध)।

## संबंधित

- [चैनल अवलोकन](/hi/channels) — सभी समर्थित चैनल
- [पेयरिंग](/hi/channels/pairing) — DM प्रमाणीकरण और पेयरिंग फ़्लो
- [ग्रुप](/hi/channels/groups) — ग्रुप चैट व्यवहार और मेंशन गेटिंग
- [चैनल रूटिंग](/hi/channels/channel-routing) — संदेशों के लिए सेशन रूटिंग
- [सुरक्षा](/hi/gateway/security) — एक्सेस मॉडल और हार्डनिंग
