आपका अपना मेलबॉक्स रिले
अंतिम अपडेट: 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 दूसरी चीज़ों के लिए अच्छा टूल है (निजी आउटबॉक्स, मीडिया, निजी नोट्स), लेकिन मेलबॉक्स के रूप में यह हर उस व्यक्ति का मेल लौटा देगा जिसे आप फ़ॉलो नहीं करते, उस ब्रिज का भी जो सामान्य ईमेल लाता है।
आपको क्या चाहिए
- एक मशीन जो हमेशा चालू हो और इंटरनेट से पहुंच में हो: एक छोटा VPS (लगभग 4-6 € महीना) या घर का कोई कंप्यूटर।
- उसकी ओर इशारा करने वाला एक डोमेन या सबडोमेन, जैसे
relay.example.com। - Docker और एक रिवर्स प्रॉक्सी जो HTTPS दे। उदाहरणों में Caddy का इस्तेमाल किया गया है, जो सर्टिफ़िकेट ख़ुद ले लेता है।
चरण 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 को बताएं
- Herkos में सेटिंग → नेटवर्क और सर्वर → आपका अपना रिले खोलें और
रिले जांचें पर टैप करें।
wss://relay.example.comदर्ज करें। - Herkos कनेक्ट होकर उसे परखता है: वह किसी और का मेल मांगता है, और किसी अजनबी की ओर से एक टेस्ट लिफ़ाफ़ा छोड़ता है (फिर उसे मिटा देता है)। आपको यहां सिर्फ़ आप अपना मेल पढ़ सकते हैं और किसी भी भेजने वाले का मेल स्वीकार करता है दिखना चाहिए।
- इसे अपना पहला DM रिले बनाएं पर टैप करें, और सबसे ऊपर सेव करें पर।
सूची में दूसरे नंबर पर एक सार्वजनिक रिले भी रखें: अगर आपका सर्वर बंद हो, तो मेल के पास
इंतज़ार करने की कोई जगह रहेगी। relay.damus.io दूसरे विकल्प के रूप में अच्छा है, क्योंकि वह
भी पूछता है कि कौन पढ़ रहा है।
चरण 4: हर रात बैकअप लें
Herkos अपने लिए गए मेल की अपनी कॉपी रखता है, लेकिन जो लिफ़ाफ़ा आपका ऐप बंद रहते हुए आया, वह तब तक सिर्फ़ आपके सर्वर पर होता है जब तक आप Herkos नहीं खोलते। हर रात की कॉपी इस कमी को पूरा करती है, और अगर डिस्क ख़राब हो जाए या प्रोवाइडर आपका खाता बंद कर दे, तो इससे आप सर्वर फिर से बना सकते हैं।
रिले सब कुछ Docker वॉल्यूम nostr-relay_relay-db के अंदर एक LMDB डेटाबेस में रखता है
(नाम उस फ़ोल्डर से शुरू होता है जिसमें आपने क्लोन किया था; इसे
docker volume ls से जांचें)। जिस LMDB फ़ाइल में रिले लिख रहा हो, उस दौरान कॉपी की गई फ़ाइल
शायद न खुले, इसलिए स्क्रिप्ट लोकल कॉपी में लगने वाले कुछ सेकंड के लिए रिले को रोकती है,
उसे फिर शुरू करती है, और उसके बाद ही कॉपी अपलोड करती है। जब तक वह रुका रहता है,
मेल उस सार्वजनिक रिले पर इंतज़ार करता है जिसे आपने अपनी सूची में दूसरे नंबर पर रखा है।
कॉपी restic के ज़रिए सर्वर से बाहर जाती है, जो उसे बाहर जाने से पहले एन्क्रिप्ट करता है। सर्वर वाले प्रोवाइडर से अलग प्रोवाइडर की जगह इस्तेमाल करें: एक SFTP खाता (स्टोरेज बॉक्स, घर का कंप्यूटर) या S3-संगत बकेट।
-
टूल इंस्टॉल करें और रिपॉज़िटरी बनाएं। पासवर्ड अपने पासवर्ड मैनेजर में भी रखें: उसके बिना कॉपी पढ़ी नहीं जा सकतीं, और अगर वह सिर्फ़ सर्वर पर है, तो सर्वर के साथ ही ख़त्म हो जाएगा। 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' -
इसे
/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 -
इसे एक बार हाथ से चलाएं (
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
साल में एक बार, यह रीस्टोर किसी अतिरिक्त मशीन पर करें और जांचें कि रिले आपके मेल के साथ शुरू होता है: यही एकमात्र टेस्ट है जो पासवर्ड समेत पूरी कड़ी को साबित करता है।
जानने लायक बातें
- यह एक सामान्य-उद्देश्य वाला रिले है। आपके मेल के अलावा यह किसी के भी सार्वजनिक नोट स्वीकार करता है, इसलिए दूसरे लोग आपके सर्वर पर चीज़ें स्टोर कर सकते हैं। इन्हें मना करने की सेटिंग अभी इसमें नहीं है।
- सामान्य ईमेल से आने वाला मेल एक ब्रिज के ज़रिए आता है, जिसे आपके रिले के पूछने पर अपनी पहचान बतानी होती है। अगर बदलाव के बाद सामान्य ईमेल आना बंद हो जाए, तो सूची में रखा सार्वजनिक रिले उसे फिर भी पाता रहेगा।
- डेटा का बैकअप लें (चरण 4)। लिफ़ाफ़े Docker वॉल्यूम
relay-dbमें रहते हैं, और जो मेल आपके ऐप ने अभी तक नहीं लिया, वह सिर्फ़ वहीं होता है। - आपका IP पता। रिले उससे कनेक्ट होने वाले हर ऐप का पता देखता है, जैसा कि हर रिले करता है। आपके अपने सर्वर पर, उन्हें देखने वाले सिर्फ़ आप हैं।