SSD Nodes Learn 🎉 VPS $5.50/माह से
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-12

Ubuntu VPS पर .onion वेबसाइट कैसे होस्ट करें

Tor और Nginx का उपयोग करके v3 onion service सेटअप करने का तरीका जानें। हम लूपबैक बाइंडिंग और IP लीक रोकने की सटीक प्रक्रिया समझाएंगे ताकि आपकी पहचान पूरी तरह सुरक्षित रहे।

आप क्या बना रहे हैं

एक onion site एक सामान्य वेब सर्वर है जो केवल Tor नेटवर्क पर ही प्रतिक्रिया देता है। tor इंस्टॉल करें, /etc/tor/torrc में दो लाइनें जोड़ें, tor द्वारा आपके लिए लिखे गए पते को पढ़ें, और फिर nginx को 127.0.0.1 पर bind करें ताकि public IP पर कोई प्रतिक्रिया न मिले। इंस्टॉलेशन का काम दस मिनट में हो जाता है। इस गाइड का बाकी हिस्सा लीक सूची है, क्योंकि onion site के विफल होने का सामान्य कारण यह है कि इसकी अपनी कॉन्फ़िगरेशन सीधे ऑपरेटर की ओर इशारा करती है।

Tor की शुरुआत "the onion router" के रूप में हुई थी, और एक onion service वह सेवा है जिसे आप केवल इसके माध्यम से ही एक्सेस कर सकते हैं। एक version 3 पता 56 वर्णों का होता है जिसके बाद .onion आता है, और ये वर्ण सेवा की ed25519 public key, एक चेकसम और एक version byte होते हैं, जिन्हें base32 में एन्कोड किया जाता है। Version 2 पते (16 वर्ण) 2021 में नेटवर्क से हटा दिए गए थे, इसलिए आज आप जो भी जनरेट करेंगे वह v3 होगा। पता ही कुंजी (key) है, जिसके दो परिणाम होते हैं। कनेक्शन end-to-end एन्क्रिप्टेड और प्रमाणित होता है जिसमें किसी certificate authority की आवश्यकता नहीं होती, और key file खोने का मतलब है पता हमेशा के लिए खो देना।

आपका सर्वर कभी भी इनबाउंड कनेक्शन स्वीकार नहीं करता है। Tor कुछ relays को introduction points के रूप में चुनता है, directory servers पर एक हस्ताक्षरित डिस्क्रिप्टर अपलोड करता है, और प्रत्येक आगंतुक से उस rendezvous relay पर मिलता है जिसे आगंतुक ने चुना है। इनमें से प्रत्येक कनेक्शन आपके बॉक्स से आउटबाउंड होता है। इसमें खोलने के लिए कोई पोर्ट नहीं है और प्रकाशित करने के लिए कोई DNS रिकॉर्ड नहीं है।

Tor Project repository से Tor इंस्टॉल करें

Ubuntu में universe रिपॉजिटरी में tor पैकेज उपलब्ध होता है, लेकिन यह उस वर्ज़न के आसपास ही रहता है जो release के समय स्थिर था। Tor Project की अपनी रिपॉजिटरी वर्तमान stable release को ट्रैक करती है, जो कि उस सॉफ़्टवेयर के लिए आवश्यक है जो यह तय करता है कि आपका पता गोपनीय रहेगा या नहीं।

sudo apt update
sudo apt install -y apt-transport-https gnupg wget
KEYURL=https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc
wget -qO- "$KEYURL" | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null

रिपॉजिटरी एंट्री deb822 फॉर्मेट का उपयोग करती है, और Suites में आपका Ubuntu codename होना चाहिए। इसे टाइप करने के बजाय /etc/os-release से पढ़ें, क्योंकि गलत codename डालने पर रिपॉजिटरी तो ठीक से resolve हो जाएगी, लेकिन आपके release के लिए कोई पैकेज नहीं मिलेगा।

. /etc/os-release
sudo tee /etc/apt/sources.list.d/tor.sources >/dev/null <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $VERSION_CODENAME
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring

deb.torproject.org-keyring पैकेज signing key को अपडेट रखता है, ताकि एक साल बाद key rotation होने पर apt update में कोई बाधा न आए। जाँचें कि tor शुरू हो गया है और नेटवर्क से जुड़ गया है:

tor --version
sudo journalctl -u tor@default -n 20

Journal का अंत Bootstrapped 100% (done): Done के साथ होना चाहिए। यदि tor Bootstrapped 10% पर अटक जाता है, तो इसका मतलब है कि कोई outbound path नहीं है। अपने प्रदाता के नेटवर्क firewall और अपने स्वयं के egress नियमों की जाँच करें: sudo ufw status verbose में डिफ़ॉल्ट के रूप में allow (outgoing) दिखना चाहिए।

यहाँ से आगे दो नाम महत्वपूर्ण हैं। पैकेज tor को debian-tor user के रूप में चलाता है, और running unit tor@default.service है, क्योंकि Debian और Ubuntu पर tor.service एक wrapper की तरह काम करता है। status और logs के लिए हमेशा instance के नाम का उपयोग करें, इससे आपको वास्तविक process की जानकारी मिलेगी।

torrc में onion service को कॉन्फ़िगर करें

/etc/tor/torrc में निम्नलिखित दो लाइनें जोड़ें:

HiddenServiceDir /var/lib/tor/onion_site/
HiddenServicePort 80 127.0.0.1:8080

HiddenServiceDir वह स्थान है जहाँ Tor इस सर्विस के लिए keys और address रखता है। इसे स्वयं न बनाएँ। Tor इसे start होने पर आवश्यक owner और mode के साथ बनाता है। यदि आप root के रूप में directory बनाते हैं, तो नीचे दी गई सूची में पहली विफलता (failure) वहीं से शुरू होती है।

HiddenServicePort के दो भाग होते हैं, और उन्हें आपस में मिला देना सबसे आम गलती है। पहली संख्या वह port है जिससे visitor tunnel के अंदर connect होता है, इसलिए 80 ही वह है जिसकी लोग अपेक्षा करते हैं और इसे बदलने का कोई कारण नहीं है। दूसरा भाग वह local address है जिस पर Tor उस traffic को forward करता है। एक साधारण HiddenServicePort 80 को 127.0.0.1:80 पर forward किया जाता है, इसलिए address को पूरा लिखना और एक high port का उपयोग करना onion vhost को किसी भी ऐसी चीज़ से अलग रखता है जो पहले से ही 80 पर listen कर रही हो।

sudo systemctl restart tor@default
sudo ls -l /var/lib/tor/onion_site/

इस listing में hostname, hs_ed25519_public_key, hs_ed25519_secret_key और एक खाली authorized_clients directory होनी चाहिए।

अपना .onion पता पढ़ें

sudo cat /var/lib/tor/onion_site/hostname

एक पंक्ति वापस आती है: 56 base32 वर्ण और .onion। वह स्ट्रिंग साइट की पूर्ण पहचान है। कोई इसे असाइन नहीं करता, कोई इसे स्थानांतरित नहीं कर सकता, और जब तक आपके पास key file है, कोई इसे छीन नहीं सकता। इसे अभी कॉपी करें, क्योंकि नीचे दिए गए प्रत्येक config को इसकी आवश्यकता है। यह गाइड बाकी जगह इसे <your-address>.onion के रूप में लिखती है।

Nginx को 127.0.0.1 पर bind करके साइट सर्व करें

sudo apt install -y nginx
sudo install -d -m 755 /srv/onion

/etc/nginx/sites-available/onion लिखें:

server {
    listen 127.0.0.1:8080;
    server_name <your-address>.onion;

    root /srv/onion;
    index index.html;

    server_tokens off;
    etag off;
    access_log off;
    error_log /var/log/nginx/onion.error.log error;
}
echo '<h1>hello from the onion</h1>' | sudo tee /srv/onion/index.html
sudo ln -s /etc/nginx/sites-available/onion /etc/nginx/sites-enabled/onion
sudo nginx -t
sudo systemctl reload nginx

अब सर्वर से दो चीजें सिद्ध करें। पहली यह कि Nginx onion नाम के लिए उत्तर देता है, जो कि सटीक Host हेडर है जिसे Tor भेजेगा:

curl -s -H 'Host: <your-address>.onion' http://127.0.0.1:8080/

दूसरी यह कि यह केवल वहीं उत्तर देता है और कहीं नहीं:

sudo ss -tlnp | grep 8080

Address कॉलम में 127.0.0.1:8080 लिखा होना चाहिए। यदि इसमें 0.0.0.0:8080 या *:8080 दिखता है, तो आपकी onion साइट public internet पर भी उपलब्ध है, जो leak सूची में पहला बिंदु है। बिना address वाली listen 8080; लाइन हर interface को bind करती है, और यही default है।

Tor Browser में address खोलें। पहली बार लोड होने में कुछ सेकंड लगते हैं क्योंकि client आपका descriptor fetch करता है और एक rendezvous circuit बनाता है।

The Tor Project का अपना documentation loopback port के बजाय unix socket को प्राथमिकता देता है: HiddenServicePort 80 unix:/var/run/tor/onion_site.sock, जहाँ Nginx उस path पर listen करता है। एक socket तक किसी अन्य host से बिल्कुल भी नहीं पहुँचा जा सकता, भले ही बाद में उस box में दूसरा interface जुड़ जाए। इसकी कीमत file permissions है, क्योंकि Nginx socket बनाता है और Tor उससे debian-tor के रूप में connect होता है, इसलिए दोनों users को directory पर सहमत होना पड़ता है। सत्यापित ss output के साथ loopback को सही ढंग से सेट करना आसान है, और यह guide का शेष भाग इसी पर आधारित है।

साइट के loopback पर होने के कारण, box को इसके लिए किसी inbound rule की आवश्यकता नहीं है। अपने लिए 22 को खुला रखें और बाकी को deny करें (VPS पर सेट करने योग्य ufw defaults देखें)। याद रखें कि firewall उस service को पूर्ववत नहीं करता जो 0.0.0.0 पर bind होती है, यह केवल firewall तक पहुँचने वाले packets को filter करता है। Containers इसे और अधिक गंभीर बना देते हैं, क्योंकि Docker port publish करने से iptables rules ufw से पहले लिखे जाते हैं, इसलिए -p 8080:80 आपके onion backend को public IP पर डाल देता है जबकि ufw अभी भी port को denied रिपोर्ट करता है। Container ports को -p 127.0.0.1:8080:80 के रूप में publish करें।

वे लीक्स जो onion साइट की पहचान उजागर कर देते हैं

Tor यह छिपाता है कि सर्वर कहाँ है। Tor में ऐसा कुछ नहीं है जो यह छिपा सके कि सर्वर क्या कहता है। नीचे दी गई हर चीज़ वह है जिसे आपका अपना स्टैक प्रकाशित करता है।

आपके public IP पर जवाब देने वाली वही साइट

यह वह गलती है जो लोगों को फँसाती है। स्कैनर्स लगातार हर routable address के HTTP response को इंडेक्स करते हैं, और वे परिणाम सार्वजनिक और खोजने योग्य होते हैं। यदि आप अपने public IP और onion address दोनों पर एक ही पेज सर्व करते हैं, तो उन्हें जोड़ना केवल एक क्वेरी का काम है: एक ही title, एक ही favicon hash, एक ही ETag, एक ही header order। ऊपर दी गई listen 127.0.0.1:8080; लाइन इसका समाधान है। इसे सर्वर से नहीं, बल्कि किसी अन्य मशीन से सत्यापित करें:

curl -sv --max-time 5 http://<your-public-ip>:8080/

Connection refused या timeout ही सही परिणाम है। कोई भी HTML मिलने का मतलब है कि साइट सार्वजनिक है। यदि बॉक्स पर clearnet साइट भी चल रही है, तो उस vhost को अपना root दें और public listener पर एक स्पष्ट default_server ब्लॉक रखें, ताकि कोई भी अनमैच्ड Host header कभी भी onion vhost पर न जाए।

Version banners

curl -sI http://127.0.0.1:8080/ | grep -i '^server'

एक डिफ़ॉल्ट nginx Server: nginx/1.24.0 का जवाब देता है। वह version string, अन्य headers के सटीक क्रम के साथ, एक ऐसा फिंगरप्रिंट है जो आपके onion को आपके clearnet host से मिला देता है। server_tokens off; इसे घटाकर Server: nginx कर देता है। यह header को हटाता नहीं है, और nginx में इसे हटाने के लिए कोई इन-बिल्ट डायरेक्टिव नहीं है, इसलिए यदि आप इसे हटाना चाहते हैं तो headers-more मॉड्यूल ही सामान्य समाधान है। PHP तब तक X-Powered-By जोड़ता है जब तक आप expose_php = Off सेट नहीं करते। etag off; भी इसी सूची में आता है, क्योंकि nginx फाइल के modification time और size से ETag बनाता है, इसलिए दो सर्वरों पर कॉपी की गई एक ही फाइल दोनों पर एक ही ETag देती है।

आपके clearnet domain की ओर इशारा करने वाले Absolute URLs

एक rel="canonical" टैग, एक Open Graph og:url, एक RSS feed, एक sitemap, पासवर्ड रीसेट ईमेल, या हार्डकोडेड लोगो URL। इनमें से कोई भी onion पर सर्व किए गए पेज के अंदर clearnet साइट का नाम ले सकता है। /static/logo.svg जैसे root-relative paths का उपयोग करें, और एप्लिकेशन को constant के बजाय request host से अपना base URL पढ़ने दें। रीडायरेक्ट भी दूसरी जगह पर वही बग है: catch-all ब्लॉक में return 301 https://example.com$request_uri; onion विजिटर को आपके असली डोमेन पर भेज देता है, और Location header उन्हें सीधे जवाब दे देता है।

clearnet साइट के साथ साझा किया गया TLS certificate

एक onion address खुद को प्रमाणित करता है, क्योंकि पता ही public key है, इसलिए onion कनेक्शन पर http:// पहले से ही end-to-end एन्क्रिप्टेड होता है और Tor Browser इसे एक सुरक्षित संदर्भ मानता है। अपने मौजूदा certificate को onion vhost पर इंस्टॉल करना दोनों के बीच के लिंक को प्रकाशित कर देता है, क्योंकि हर publicly trusted certificate को Certificate Transparency logs में रिकॉर्ड किया जाता है, और वे लॉग सार्वजनिक, स्थायी और नाम से खोजने योग्य होते हैं। clearnet vhost पर Let's Encrypt certificates रखें और onion vhost को plain HTTP पर ही रहने दें।

थर्ड-पार्टी फोंट और एनालिटिक्स

CDN (content delivery network) से लिया गया फोंट, या कोई एनालिटिक्स स्क्रिप्ट। विजिटर का ब्राउज़र हर एक को सीधे फेच करता है, इसलिए थर्ड-पार्टी को पता चल जाता है कि किसी ने आपका पेज लोड किया है और आमतौर पर यह भी कि कौन सा पेज, और Tor Browser के सख्त सुरक्षा स्तर वैसे भी अनुरोध को ब्लॉक कर देते हैं, जिससे लेआउट बिगड़ जाता है। पेज को जिस भी एसेट की आवश्यकता हो, उसे खुद होस्ट करें।

Host header का मेल न खाना

यदि server_name उस Host header से मेल नहीं खाता है जिसे tor भेजता है, तो nginx उस listen address के लिए डिफ़ॉल्ट सर्वर पर वापस चला जाता है। एक vhost वाले बॉक्स पर यह अदृश्य होता है, क्योंकि एकमात्र सर्वर ब्लॉक ही डिफ़ॉल्ट होता है। बाद में एक clearnet vhost जोड़ें और onion अनुरोध उस पर लैंड करने लग सकते हैं, साथ ही उसके canonical tags और रीडायरेक्ट भी। हर nginx बदलाव के बाद curl -H 'Host: ...' चेक को फिर से चलाएँ, और अपने असली डोमेन के लिए परिणाम को grep करें:

curl -s -H 'Host: <your-address>.onion' http://127.0.0.1:8080/ | grep -o 'https\?://[^"]*' | sort -u

यह जानना कि कौन सी प्रक्रिया किस सॉकेट की मालिक है, इस काम का अधिकांश हिस्सा है (Linux पर पोर्ट और लिसनिंग सॉकेट्स कैसे काम करते हैं)।

लॉग में क्या बचता है

हर अनुरोध 127.0.0.1 से आता है, इसलिए nginx के पास रिकॉर्ड करने के लिए कोई विजिटर एड्रेस नहीं होता और access_log off; पर आपका कोई खर्च नहीं होता। इसके ऊपर का एप्लिकेशन एक अलग मामला है, क्योंकि ऑर्डर, ईमेल पता या अपलोड की गई फाइल का मेटाडेटा संभालना आपकी जिम्मेदारी है। आपकी अपनी आदतें भी मायने रखती हैं: बिना हार्डनिंग के लॉगिन के माध्यम से बॉक्स को एडमिनिस्टर करना Tor द्वारा सुरक्षित किसी भी चीज़ के दायरे से बाहर है, इसलिए उसी VPS पर SSH हार्डनिंग को इस बिल्ड का हिस्सा मानें।

Private key का बैकअप लें, क्योंकि यही आपका पता है

/var/lib/tor/onion_site/hs_ed25519_secret_key वह सर्विस है। इसमें कोई रजिस्ट्रार या रिकवरी की सुविधा नहीं है। यदि आप इसे खो देते हैं, तो पता भी हमेशा के लिए चला जाएगा। यदि आप इसकी कॉपी बना लेते हैं, तो जिसके पास भी वह कॉपी होगी, वह आपके पते पर अपनी सामग्री होस्ट कर सकता है, और आपके पास उसे रोकने का कोई तरीका नहीं होगा।

sudo systemctl stop tor@default
sudo tar -C /var/lib/tor -czf onion-keys.tgz onion_site
sudo chmod 600 onion-keys.tgz
sudo systemctl start tor@default

उस आर्काइव को एन्क्रिप्ट करें (gpg -c onion-keys.tgz) और उसे सर्वर से बाहर कहीं सुरक्षित रखें। नए VPS पर इसे रिस्टोर करने के लिए आर्काइव की आवश्यकता होती है और उस ओनरशिप की जो tor अपेक्षा करता है:

sudo systemctl stop tor@default
sudo tar -C /var/lib/tor -xzf onion-keys.tgz
sudo chown -R debian-tor:debian-tor /var/lib/tor/onion_site
sudo chmod 700 /var/lib/tor/onion_site
sudo systemctl start tor@default
sudo cat /var/lib/tor/onion_site/hostname

नए हार्डवेयर पर वही पता वापस आ जाता है, जैसे ही tor डिस्क्रिप्टर को रिपब्लिश करता है, इसमें बस एक या दो मिनट का समय लगता है। पूरी माइग्रेशन प्रक्रिया यही है: इसमें न तो DNS बदलने की जरूरत है और न ही सर्टिफिकेट को दोबारा जारी करने की।

Onion-Location, जब साइट clearnet पर भी उपलब्ध हो

यदि onion एड्रेस गोपनीयता के बजाय सुविधा के लिए है, तो इसे clearnet vhost से advertise करें:

add_header Onion-Location http://<your-address>.onion$request_uri;

Tor Browser इसके बाद address bar में एक .onion available बटन दिखाता है और स्विच करने का विकल्प देता है। यह header केवल तब मान्य होता है जब clearnet पेज HTTPS पर सर्व किया जा रहा हो और मान एक वैध onion URL हो।

यहाँ nginx का एक नियम ध्यान देने योग्य है। add_header directives को location ब्लॉक द्वारा केवल तब inherit किया जाता है जब उस ब्लॉक में अपना कोई directive न हो। इसलिए, यदि किसी location में अपना स्वयं का add_header मौजूद है, तो वह Onion-Location को चुपचाप हटा देता है। इसे वहाँ दोहराएं, या सभी response headers को एक ही स्थान पर रखें। इस header को प्रकाशित करना जानबूझकर दोनों साइटों को आपस में जोड़ता है, जो कि mirror के लिए सही है, लेकिन किसी ऐसी चीज़ के लिए गलत है जिसे unlinked रखा जाना है।

Vanity addresses

mkp224o तब तक key pairs generate करता है जब तक कि कोई ऐसा address न मिल जाए जो आपके द्वारा मांगे गए prefix से शुरू होता हो। यह एक brute force search है, इसलिए prefix और आपके प्रतीक्षा करने के समय के अलावा इसमें कॉन्फ़िगर करने के लिए कुछ भी नहीं है।

sudo apt install -y git gcc libc6-dev libsodium-dev make autoconf
git clone https://github.com/cathugger/mkp224o
cd mkp224o
./autogen.sh
./configure --enable-amd64-51-30k
make
./mkp224o -d onionkeys blog

प्रत्येक hit onionkeys/<address>.onion/ में जाकर जमा होती है, जिसमें hostname और hs_ed25519_secret_key होते हैं। इसे install करने के लिए tor को stop करें, उस directory को अपने HiddenServiceDir पर copy करें, और फिर ऊपर बताए गए restore की तरह ही समान chown और chmod 700 लागू करें।

Prefix की लंबाई ही पूरी लागत है। Address base32 में होता है, इसलिए आपके द्वारा मांगे गए प्रत्येक अतिरिक्त character के साथ keys की अपेक्षित संख्या 32 गुना बढ़ जाती है। एक छोटा prefix laptop पर जल्दी पूरा हो जाता है। एक लंबा prefix आपके पास मौजूद किसी भी उपकरण पर पूरा नहीं होगा। Vanity prefix पाठकों को पूरे address के बजाय केवल शुरुआती कुछ characters को पहचानने के लिए भी प्रेरित करता है, और phishing करने वाली onion sites की नकल इसी आदत का फायदा उठाती है।

विफलता के प्रकार और दिखाई देने वाले संदेश

रीस्टार्ट के बाद hostname फ़ाइल नहीं मिलती। Tor शुरू नहीं हुआ, या उसने डायरेक्टरी को अस्वीकार कर दिया। sudo journalctl -u tor@default -n 50 इसका कारण बताता है:

/var/lib/tor/onion_site/ is not owned by this user (debian-tor, 108) but by root (0). Perhaps you are running Tor as the wrong user?

हाथ से बनाई गई डायरेक्टरी ऐसी ही दिखती है। इसके ओनरशिप और मोड को ठीक करें, या डायरेक्टरी को डिलीट कर दें ताकि Tor इसे स्वयं बना सके।

Tor Browser में Onionsite Not Found (0xF0) दिखाई देता है। क्लाइंट डिस्क्रिप्टर प्राप्त नहीं कर सका, इसलिए नेटवर्क के अनुसार उस पते पर कुछ भी पब्लिश नहीं है। पुष्टि करें कि Tor चल रहा है और बूटस्ट्रैप हो चुका है, टाइप किए गए पते की तुलना sudo cat /var/lib/tor/onion_site/hostname से अक्षर-दर-अक्षर करें, और फिर घड़ी की जाँच करें। डिस्क्रिप्टर को पब्लिश और वैलिडेट करने के लिए Tor को सटीक समय की आवश्यकता होती है, और timedatectl को System clock synchronized: yes रिपोर्ट करना चाहिए।

पता रिज़ॉल्व हो जाता है लेकिन पेज लोड नहीं होता। Tor ने रेंडेज़वस पूरा कर लिया लेकिन अंतिम हॉप पर विफल हो गया, जो Tor से Nginx तक का है। यह हॉप लोकल है इसलिए Tor लॉग शांत रहता है। सर्वर पर curl -sI http://127.0.0.1:8080/ चलाएं। Connection refused का अर्थ है कि Nginx बंद है या किसी ऐसे पते पर लिसन कर रहा है जिस पर HiddenServicePort पॉइंट नहीं करता है।

पेज लोड होता है लेकिन हर लिंक आपके वास्तविक डोमेन पर जाता है। टेम्पलेट्स में एब्सोल्यूट URL मौजूद हैं। ऊपर दिया गया grep -o 'https\?://[^"]*' चेक चलाएं और पते को कहीं भी शेयर करने से पहले जो भी आउटपुट मिले उसे ठीक करें।

यह काम करता है, फिर रीबूट के बाद रुक जाता है। साइट पर निर्भर होने से पहले मशीन को एक बार जानबूझकर रीबूट करें, फिर sudo systemctl status tor@default और sudo systemctl status nginx चलाएं। किसी के द्वारा हाथ से शुरू की गई सर्विस तब तक इनेबल्ड सर्विस जैसी ही दिखती है जब तक मशीन रीस्टार्ट न हो जाए।

FAQ

क्या मुझे Tor onion service के लिए अपने firewall में कोई port खोलने की आवश्यकता है?

नहीं। tor daemon केवल outbound connections बनाता है, जैसे directory servers, introduction points और प्रत्येक rendezvous relay के लिए, इसलिए किसी inbound rule की आवश्यकता नहीं होती है और web server स्वयं 127.0.0.1 पर listen करता है। incoming traffic के लिए ufw को default deny पर रखें और केवल SSH को अनुमति दें। इसी विशेषता के कारण एक onion service NAT (network address translation) के पीछे वाली मशीन से भी काम करती है, भले ही उसका कोई public IP न हो।

मैं Tor Browser में अपने .onion address तक क्यों नहीं पहुँच पा रहा हूँ?

सर्वर से बाहर की ओर जाँच शुरू करें। sudo journalctl -u tor@default -n 50 को Bootstrapped 100% (done): Done दिखाना चाहिए, फिर सर्वर पर curl -sI http://127.0.0.1:8080/ को एक status line दिखानी चाहिए, और अंत में आपके द्वारा टाइप किए गए address की तुलना hostname फ़ाइल से करें, क्योंकि एक गलत अक्षर होने पर वह एक अलग service बन जाता है। Onionsite Not Found (0xF0) का अर्थ है कि address के लिए कोई descriptor नहीं मिला, जिसका सामान्यतः अर्थ है कि tor चल नहीं रहा है या system clock गलत है।

क्या मैं अपनी onion site को एक नए सर्वर पर ले जा सकता हूँ और वही address रख सकता हूँ?

हाँ। address hs_ed25519_secret_key से प्राप्त होता है, इसलिए पूरी HiddenServiceDir को नई मशीन पर कॉपी करें, इसे debian-tor ownership और 700 mode पर सेट करें, और tor शुरू करें। descriptor के पुनः प्रकाशित होते ही address फिर से live हो जाता है, और इसमें update करने के लिए कोई DNS record नहीं होता है। यदि वह फ़ाइल खो गई तो address को पुनः प्राप्त नहीं किया जा सकता, इसलिए इसे बनाने के दिन ही इसे encrypt करके सर्वर से बाहर backup ले लें।

क्या एक onion site को HTTPS certificate की आवश्यकता होती है?

नहीं। 56-character वाला address service की public key है, इसलिए connection पहले से ही end-to-end encrypted और authenticated होता है, और Tor Browser .onion नाम पर http:// को एक secure context मानता है। onion vhost पर अपने clearnet certificate का पुनः उपयोग करना कुछ न करने से भी बुरा है, क्योंकि Certificate Transparency logs सार्वजनिक होते हैं और स्थायी रूप से रिकॉर्ड करते हैं कि कौन से नाम एक ही certificate साझा करते हैं। .onion नाम के लिए certificate खरीदने का एकमात्र कारण CA से मिलने वाला brand assurance है, और वह लिंक डिज़ाइन के अनुसार सार्वजनिक होता है।