Herkos

आपका अपना मेलबॉक्स रिले

अंतिम अपडेट: 3 अक्टूबर 2026

Herkos का मेल सीलबंद लिफ़ाफ़ों (NIP-59 गिफ़्ट रैप) के रूप में यात्रा करता है और आपकी DM रिले सूची के रिले पर तब तक इंतज़ार करता है जब तक आपका ऐप उसे ले न ले। ज़्यादातर सार्वजनिक रिले ये लिफ़ाफ़े किसी को भी दे देते हैं जो मांगे। इन्हें कोई खोल नहीं सकता, लेकिन कोई भी गिन सकता है कि किसे मेल मिलता है और कब, और रिले जब चाहे इन्हें मिटा सकता है।

आपका अपना रिले, जो पूछता है कि कौन पढ़ रहा है (NIP-42), आपके लिफ़ाफ़े सिर्फ़ आपको देता है, किसी और को नहीं, और उन्हें तब तक रखता है जब तक आप तय करें। यह पेज बताता है कि तीन चरणों में एक रिले कैसे सेट करें, साथ में हर रात का बैकअप भी। अगर आपके पास पहले से सर्वर है, तो इसमें लगभग पंद्रह मिनट लगते हैं।

कौन-सा रिले इस्तेमाल करें

हमने 24 सितंबर 2026 को दोनों विकल्प चलाकर देखे और जांचा कि वे मेल के साथ असल में क्या करते हैं, न कि वे क्या दावा करते हैं।

nogringo/nostr-relay HAVEN 1.2.2
आपके लिफ़ाफ़े कौन पढ़ सकता है सिर्फ़ आप, पहचान बताने के बाद /chat: आपके वेब ऑफ़ ट्रस्ट में कोई भी, पहचान बताने के बाद। /inbox: कोई भी, बिना पहचान बताए
आपको मेल कौन डिलीवर कर सकता है कोई भी भेजने वाला जो पहचान बताए सिर्फ़ आपका वेब ऑफ़ ट्रस्ट
मिले हुए मेल को मिटाना हां नहीं
तेज़ रीसिंक (NIP-77) हां नहीं
लाइसेंस MIT MIT

अपने मेलबॉक्स के रूप में nogringo/nostr-relay का इस्तेमाल करें। यही वह है जो मेल की ज़रूरत के हिसाब से काम करता है: कोई भी आपको लिख सकता है, और सिर्फ़ आप पढ़ सकते हैं। HAVEN दूसरी चीज़ों के लिए अच्छा टूल है (निजी आउटबॉक्स, मीडिया, निजी नोट्स), लेकिन मेलबॉक्स के रूप में यह हर उस व्यक्ति का मेल लौटा देगा जिसे आप फ़ॉलो नहीं करते, उस ब्रिज का भी जो सामान्य ईमेल लाता है।

आपको क्या चाहिए

चरण 1: रिले चलाएं

git clone https://github.com/nogringo/nostr-relay
cd nostr-relay
cp .env.example .env

.env में बदलाव करें: रिले को एक नाम दें (RELAY_NAME) और RELAY_URLS में उसका सार्वजनिक पता, wss://relay.example.com, डालें।

फिर docker-compose.yml खोलें और पोर्ट वाली लाइन को "127.0.0.1:3334:3334" में बदलें। यह जांचते समय कि कौन पहचान बता रहा है, रिले उस पते पर भरोसा करता है जो प्रॉक्सी उसे आगे भेजता है, इसलिए वह सिर्फ़ प्रॉक्सी के ज़रिए ही पहुंच में होना चाहिए। इसे शुरू करें:

docker compose up -d

चरण 2: आगे HTTPS लगाएं

Caddy के साथ पूरा कॉन्फ़िगरेशन (/etc/caddy/Caddyfile) यह है:

relay.example.com {
    reverse_proxy 127.0.0.1:3334
}

Caddy को फिर से लोड करें (sudo systemctl reload caddy)। अब ब्राउज़र में https://relay.example.com खोलने पर जवाब आना चाहिए।

चरण 3: Herkos को बताएं

  1. Herkos में सेटिंग → नेटवर्क और सर्वर → आपका अपना रिले खोलें और रिले जांचें पर टैप करें। wss://relay.example.com दर्ज करें।
  2. Herkos कनेक्ट होकर उसे परखता है: वह किसी और का मेल मांगता है, और किसी अजनबी की ओर से एक टेस्ट लिफ़ाफ़ा छोड़ता है (फिर उसे मिटा देता है)। आपको यहां सिर्फ़ आप अपना मेल पढ़ सकते हैं और किसी भी भेजने वाले का मेल स्वीकार करता है दिखना चाहिए।
  3. इसे अपना पहला DM रिले बनाएं पर टैप करें, और सबसे ऊपर सेव करें पर।

सूची में दूसरे नंबर पर एक सार्वजनिक रिले भी रखें: अगर आपका सर्वर बंद हो, तो मेल के पास इंतज़ार करने की कोई जगह रहेगी। relay.damus.io दूसरे विकल्प के रूप में अच्छा है, क्योंकि वह भी पूछता है कि कौन पढ़ रहा है।

चरण 4: हर रात बैकअप लें

Herkos अपने लिए गए मेल की अपनी कॉपी रखता है, लेकिन जो लिफ़ाफ़ा आपका ऐप बंद रहते हुए आया, वह तब तक सिर्फ़ आपके सर्वर पर होता है जब तक आप Herkos नहीं खोलते। हर रात की कॉपी इस कमी को पूरा करती है, और अगर डिस्क ख़राब हो जाए या प्रोवाइडर आपका खाता बंद कर दे, तो इससे आप सर्वर फिर से बना सकते हैं।

रिले सब कुछ Docker वॉल्यूम nostr-relay_relay-db के अंदर एक LMDB डेटाबेस में रखता है (नाम उस फ़ोल्डर से शुरू होता है जिसमें आपने क्लोन किया था; इसे docker volume ls से जांचें)। जिस LMDB फ़ाइल में रिले लिख रहा हो, उस दौरान कॉपी की गई फ़ाइल शायद न खुले, इसलिए स्क्रिप्ट लोकल कॉपी में लगने वाले कुछ सेकंड के लिए रिले को रोकती है, उसे फिर शुरू करती है, और उसके बाद ही कॉपी अपलोड करती है। जब तक वह रुका रहता है, मेल उस सार्वजनिक रिले पर इंतज़ार करता है जिसे आपने अपनी सूची में दूसरे नंबर पर रखा है।

कॉपी restic के ज़रिए सर्वर से बाहर जाती है, जो उसे बाहर जाने से पहले एन्क्रिप्ट करता है। सर्वर वाले प्रोवाइडर से अलग प्रोवाइडर की जगह इस्तेमाल करें: एक SFTP खाता (स्टोरेज बॉक्स, घर का कंप्यूटर) या S3-संगत बकेट।

  1. टूल इंस्टॉल करें और रिपॉज़िटरी बनाएं। पासवर्ड अपने पासवर्ड मैनेजर में भी रखें: उसके बिना कॉपी पढ़ी नहीं जा सकतीं, और अगर वह सिर्फ़ सर्वर पर है, तो सर्वर के साथ ही ख़त्म हो जाएगा। SFTP के लिए, root को एक ऐसी SSH कुंजी भी चाहिए जिसे बैकअप मशीन स्वीकार करे (sudo ssh-keygen -t ed25519, फिर /root/.ssh/id_ed25519.pub को वहां जोड़ें)।

    sudo apt install restic rsync
    sudo sh -c 'openssl rand -base64 32 > /root/.restic-password'
    sudo sh -c 'cat > /root/.restic-env' <<'END'
    export RESTIC_REPOSITORY=sftp:backup@backup.example.com:/relay
    export RESTIC_PASSWORD_FILE=/root/.restic-password
    END
    sudo chmod 600 /root/.restic-password /root/.restic-env
    sudo sh -c '. /root/.restic-env && restic init'
    
  2. इसे /usr/local/bin/backup-relay के रूप में सेव करें और एक्ज़ीक्यूटेबल बनाएं (sudo chmod 700 /usr/local/bin/backup-relay)। अगर आपने /root/nostr-relay में क्लोन नहीं किया था, तो RELAY_DIR बदलें। यह पिछले 14 दिन, 8 हफ़्ते और 12 महीने की कॉपी रखती है: एक साल पीछे तक, लगभग डेटाबेस जितने आकार में।

    #!/bin/sh
    set -eu
    . /root/.restic-env
    RELAY_DIR=/root/nostr-relay
    COPY=/var/backups/relay-db
    VOLUME=$(docker volume inspect --format '{{ .Mountpoint }}' nostr-relay_relay-db)
    mkdir -p "$COPY"
    cd "$RELAY_DIR"
    docker compose stop relay
    trap 'docker compose start relay' EXIT
    rsync -a --delete "$VOLUME/" "$COPY/"
    docker compose start relay
    trap - EXIT
    restic backup "$COPY" --tag relay
    restic forget --tag relay --keep-daily 14 --keep-weekly 8 --keep-monthly 12 --prune
    
  3. इसे एक बार हाथ से चलाएं (sudo /usr/local/bin/backup-relay), फिर sudo crontab -e से शेड्यूल करें। दूसरी लाइन हर महीने स्टोर किए गए डेटा का दसवां हिस्सा वापस पढ़ती है, हर बार अलग दसवां हिस्सा, ताकि साबित हो सके कि कॉपी अब भी खोली जा सकती हैं। बीच-बीच में /var/log/backup-relay.log देखते रहें: Fatal वाली लाइन का मतलब है कि उस रात की कॉपी विफल रही।

    15 4 * * * /usr/local/bin/backup-relay >> /var/log/backup-relay.log 2>&1
    45 5 1 * * . /root/.restic-env && restic check --read-data-subset=10% >> /var/log/backup-relay.log 2>&1
    

रीस्टोर करने के लिए (नया सर्वर, या डिस्क ख़राब होने के बाद): रिले को फिर से सेट करें (चरण 1 से 3) और इसी रिपॉज़िटरी के साथ इस चरण के बिंदु 1 और 2 दोहराएं, लेकिन नया पासवर्ड बनाने के बजाय अपना सेव किया हुआ पासवर्ड /root/.restic-password में लिखें, और restic init छोड़ दें। फिर नवीनतम बैकअप को रिले के वॉल्यूम में कॉपी करें:

sudo sh -c '. /root/.restic-env && restic restore latest --tag relay --target /'
cd /root/nostr-relay && sudo docker compose stop relay
sudo rsync -a --delete /var/backups/relay-db/ "$(sudo docker volume inspect --format '{{ .Mountpoint }}' nostr-relay_relay-db)/"
sudo docker compose start relay

साल में एक बार, यह रीस्टोर किसी अतिरिक्त मशीन पर करें और जांचें कि रिले आपके मेल के साथ शुरू होता है: यही एकमात्र टेस्ट है जो पासवर्ड समेत पूरी कड़ी को साबित करता है।

जानने लायक बातें