SSD Nodes Learn 🎉 VPS $5.50/महिन्यापासून
मार्गदर्शक Matt Connorद्वारे Matt Connor · अपडेटेड 2026-08-13

VPS वर .onion साइट कशी होस्ट करावी

Ubuntu VPS वर tor आणि nginx वापरून v3 onion service सुरू करा. nginx ला loopback वर bind करा आणि public IP शी जोडणारे leaks बंद करण्यासाठी ही तपासणी करा.

तुम्ही काय तयार करत आहात

Onion site हा सामान्य web server असतो. तो केवळ Tor network वरून येणाऱ्या विनंत्यांना उत्तर देतो. tor install करा, /etc/tor/torrc मध्ये दोन ओळी जोडा, Tor ने लिहिलेला address वाचा आणि नंतर nginx ला 127.0.0.1 वर bind करा, जेणेकरून public IP वर कोणतीही सेवा उत्तर देणार नाही. Install करण्यासाठी दहा मिनिटे लागतात. या मार्गदर्शकाचा उर्वरित भाग leak list आहे, कारण onion site अयशस्वी होण्याचे नेहमीचे कारण म्हणजे तिची स्वतःची configuration operator कडे थेट परत निर्देश करते.

Tor ची सुरुवात "the onion router" म्हणून झाली. Onion service ही अशी service आहे जिच्यापर्यंत केवळ Tor द्वारे पोहोचता येते. Version 3 address मध्ये 56 characters असतात आणि त्यानंतर .onion असते. हे characters service ची ed25519 public key, checksum आणि version byte यांचे base32 encoding असतात. Version 2 addresses (16 characters) 2021 मध्ये network मधून काढून टाकण्यात आले. त्यामुळे आज generate केलेला कोणताही address v3 असतो. Address हीच key असते. याचे दोन परिणाम होतात. Connection certificate authority शिवाय end to end encrypted आणि authenticated असते. तसेच key file हरवली, तर तो address कायमचा गमावला जातो.

तुमचा server inbound connection कधीही स्वीकारत नाही. Tor काही relays ची introduction points म्हणून निवड करते, directory servers वर signed descriptor upload करते आणि visitor ने निवडलेल्या rendezvous relay वर प्रत्येक visitor शी connection स्थापित करते. या सर्व connections तुमच्या box कडून outbound असतात. कोणताही port उघडण्याची किंवा DNS record publish करण्याची गरज नसते.

Tor Project repository मधून tor install करा

Ubuntu मध्ये universe मधील tor package उपलब्ध असते. मात्र release freeze झाली त्या वेळच्या आवृत्तीच्या जवळपासच ते राहते. Tor Project चे स्वतःचे repository सध्याच्या stable release चा मागोवा घेते. आपला address आपलाच राहतो की नाही हे ठरवणाऱ्या software साठी आपल्याला हीच आवृत्ती हवी आहे.

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

Repository entry मध्ये deb822 format वापरला जातो. Suites हे आपले Ubuntu codename असणे आवश्यक आहे. ते स्वतः टाइप करण्याऐवजी /etc/os-release मधून वाचा. चुकीचे codename दिल्यास repository योग्यरीत्या resolve होईल, पण आपल्या release साठी कोणतेही package उपलब्ध होणार नाही.

. /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 package signing key अद्ययावत ठेवते. त्यामुळे एक वर्षानंतर key rotation झाल्यावर apt update बंद पडणार नाही. tor सुरू झाले आहे आणि network पर्यंत पोहोचले आहे का ते तपासा:

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

Journal चा शेवट Bootstrapped 100% (done): Done ने झाला पाहिजे. tor Bootstrapped 10% वर अडकले असल्यास त्याच्याकडे outbound path नसतो. त्यामुळे आपल्या provider चे network firewall आणि स्वतःचे egress rules तपासा: sudo ufw status verbose मध्ये allow (outgoing) default म्हणून दिसले पाहिजे.

यापुढे दोन नावे महत्त्वाची आहेत. Package tor हे debian-tor user म्हणून चालवते. चालू unit tor@default.service आहे, कारण Debian आणि Ubuntu मधील tor.service हा instance भोवतीचा wrapper आहे. Instance name वापरून status आणि logs मागवा. त्यामुळे नेहमी वास्तविक process ची माहिती मिळते.

torrc मध्ये onion service कॉन्फिगर करा

/etc/tor/torrc मध्ये दोन ओळी जोडा:

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

HiddenServiceDir येथे tor या service साठी keys आणि address ठेवतो. ही directory स्वतः तयार करू नका. सुरुवातीला आवश्यक owner आणि mode सह tor ती तयार करतो. root म्हणून तयार केलेल्या directory मुळे खालील failure list मधील पहिली त्रुटी निर्माण होते.

HiddenServicePort चे दोन भाग आहेत. ते गोंधळणे ही सुरुवातीची सामान्य चूक आहे. पहिला number म्हणजे tunnel च्या आत visitor ज्या port शी connect होतो तो port. त्यामुळे 80 अपेक्षित setting आहे आणि ती बदलण्याचे कारण नाही. दुसरा भाग म्हणजे tor हा traffic ज्या local address कडे forward करतो तो address. फक्त HiddenServicePort 80 दिल्यास traffic 127.0.0.1:80 कडे forward होतो. त्यामुळे address स्पष्टपणे लिहून high port वापरल्यास onion vhost आधीपासून 80 वर listening असलेल्या कशाशीही conflict होत नाही.

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. ही string म्हणजे साइटची संपूर्ण ओळख आहे. ती कोणताही प्राधिकरण नियुक्त करत नाही, तिचे हस्तांतरण करता येत नाही आणि key file तुमच्याकडे असेपर्यंत ती कोणीही काढून घेऊ शकत नाही. ती आता कॉपी करा, कारण खालील प्रत्येक configuration मध्ये तिची आवश्यकता आहे. या मार्गदर्शकात पुढे ती <your-address>.onion म्हणून लिहिली आहे.

nginx ला 127.0.0.1 वर bind करून साइट serve करा

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 name साठी प्रतिसाद देतो का. हा तोच अचूक Host header आहे, जो tor पाठवेल:

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

दुसरी गोष्ट म्हणजे nginx त्या पत्त्यावर आणि इतर कोणत्याही पत्त्यावर प्रतिसाद देतो का:

sudo ss -tlnp | grep 8080

address column मध्ये 127.0.0.1:8080 असणे आवश्यक आहे. त्यात 0.0.0.0:8080 किंवा *:8080 दिसत असल्यास, तुमची onion site public internet वरही उपलब्ध आहे. leak list मधील ही पहिली समस्या आहे. पत्ता नसलेली listen 8080; line प्रत्येक interface ला bind करते. हे default आहे.

Tor Browser मध्ये तो address उघडा. client तुमचा descriptor fetch करून rendezvous circuit तयार करत असताना पहिल्यांदा load होण्यासाठी काही सेकंद लागतात.

Tor Project च्या स्वतःच्या documentation मध्ये loopback port ऐवजी unix socket वापरण्याची शिफारस आहे: HiddenServicePort 80 unix:/var/run/tor/onion_site.sock. त्यासाठी nginx ने त्या path वर listen केले पाहिजे. दुसरा interface नंतर जोडला गेला तरी socket दुसऱ्या host वरून अजिबात access करता येत नाही. याची किंमत file permissions च्या स्वरूपात द्यावी लागते. nginx socket तयार करतो आणि tor त्याला debian-tor म्हणून connect करतो. त्यामुळे या दोन users मध्ये directory च्या permissions बाबत सुसंगती असणे आवश्यक आहे. पडताळलेला ss output असलेला loopback setup करणे सोपे आहे. या guide मध्ये पुढे तोच गृहीत धरला आहे.

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

Tor साइटचे अनामिकीकरण नष्ट करणाऱ्या गळती

Tor सर्व्हरचे स्थान लपवतो. मात्र सर्व्हर काय सांगतो हे Tor लपवत नाही. खालील प्रत्येक बाब तुमचा स्वतःचा stack प्रकाशित करतो.

तुमच्या सार्वजनिक IP वरही उत्तर देणारी तीच साइट

ही बाब अनेकांना अडचणीत आणते. Scanners प्रत्येक routable address चा HTTP response सतत index करतात आणि हे results सार्वजनिक तसेच शोधता येण्यासारखे असतात. तुमच्या सार्वजनिक IP वर आणि onion address वर एकच page serve केला, तर त्यांना जोडण्यासाठी एकच query पुरेशी असते: same title, same favicon hash, same ETag, same header order. वरील listen 127.0.0.1:8080; line हा यावरील उपाय आहे. ही तपासणी सर्व्हरवरून नव्हे, तर वेगळ्या machine वरून करा:

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

Connection refused किंवा timeout मिळणे हा योग्य result आहे. कोणतेही HTML मिळाल्यास साइट सार्वजनिक आहे. त्या box वर clearnet site देखील चालत असेल, तर त्या vhost साठी स्वतंत्र root द्या आणि public listener वर स्पष्ट default_server block ठेवा. त्यामुळे जुळणारा Host header नसल्यास request onion vhost कडे कधीही fall through होणार नाही.

Version banners

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

Default nginx Server: nginx/1.24.0 ला उत्तर देतो. हा version string आणि इतर headers चा अचूक क्रम मिळून असा fingerprint तयार होतो, जो तुमच्या onion ला clearnet host शी जुळवतो. server_tokens off; मुळे तो Server: nginx इतकाच राहतो. यामुळे header काढला जात नाही. nginx मध्ये ते करण्यासाठी built-in directive नाही. त्यामुळे तो पूर्णपणे काढायचा असल्यास headers-more module हा नेहमीचा उपाय आहे. PHP मध्ये expose_php = Off सेट करेपर्यंत X-Powered-By जोडले जाते. etag off; देखील याच list मध्ये असावे, कारण nginx file च्या modification time आणि size वरून ETag तयार करतो. त्यामुळे दोन servers वर copy केलेल्या समान files मुळे दोन्ही ठिकाणी समान ETag दिला जातो.

तुमच्या clearnet domain कडे निर्देश करणारे Absolute URLs

rel="canonical" tag, Open Graph og:url, RSS feed, sitemap, password reset email किंवा hardcoded logo URL. यापैकी कोणतीही एक बाब onion वर serve केलेल्या page मध्ये clearnet site चे नाव उघड करते. /static/logo.svg सारखे root-relative paths वापरा. Application ने base URL constant मधून नव्हे, तर request host मधून वाचावे. Redirects मध्येही हीच समस्या वेगळ्या ठिकाणी दिसते: catch-all block मधील return 301 https://example.com$request_uri; onion visitor ला तुमच्या खऱ्या domain कडे पाठवतो, तर Location header त्याला हे उत्तर थेट देतो.

Clearnet site सोबत सामायिक केलेले TLS certificate

Onion address स्वतःचे authentication करते, कारण address हाच public key असतो. त्यामुळे onion connection वरील http:// आधीच end-to-end encrypted असते आणि Tor Browser त्याला secure context मानतो. Onion vhost वर तुमचे विद्यमान certificate install केल्यास दोन्ही sites मधील संबंध प्रकाशित होतो. कारण publicly trusted प्रत्येक certificate Certificate Transparency logs मध्ये नोंदवले जाते. हे logs सार्वजनिक, कायमस्वरूपी आणि नावाने शोधता येण्यासारखे असतात. Clearnet vhost वरील Let's Encrypt certificates ठेवा आणि onion vhost plain HTTP वर चालू द्या.

Third-party fonts आणि analytics

CDN (content delivery network) वरील font किंवा analytics script. Visitor चा browser प्रत्येक item थेट fetch करतो. त्यामुळे third party ला कोणीतरी तुमचे page load केले हे आणि सहसा कोणते page load केले हे कळते. Tor Browser चे अधिक कठोर security levels ही request block करतात आणि त्यामुळे layout तुटलेला दिसतो. Page ला आवश्यक असलेले प्रत्येक asset स्वतःच्या server वर host करा.

Host header mismatch

server_name हा tor ने पाठवलेल्या Host header शी जुळत नसेल, तर nginx त्या listen address साठी default server कडे fallback करतो. एका vhost असलेल्या box वर हे दिसून येत नाही, कारण एकमेव server block हाच default असतो. नंतर clearnet vhost जोडल्यास onion requests त्याच्याकडे जाऊ शकतात. त्यासोबत त्याचे canonical tags आणि redirects देखील लागू होतात. प्रत्येक nginx बदलानंतर curl -H 'Host: ...' check पुन्हा चालवा आणि result मध्ये तुमचा खरा domain शोधा:

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

कोणत्या socket वर कोणता process मालकी ठेवतो हे समजणे या कामाचा मोठा भाग आहे (Linux वर ports आणि listening sockets कसे कार्य करतात).

Logs मध्ये उरलेली माहिती

प्रत्येक request 127.0.0.1 कडून येते. त्यामुळे nginx कडे नोंदवण्यासाठी visitor address नसतो आणि access_log off; मुळे तुमचा कोणताही खर्च होत नाही. मात्र त्यावरील application वेगळी बाब आहे. Order, email address किंवा uploaded file चे metadata कसे हाताळायचे हे तुमची जबाबदारी आहे. तुमच्या स्वतःच्या सवयीही महत्त्वाच्या आहेत. Unhardened login द्वारे box administer करणे हे Tor च्या संरक्षणाबाहेरचे आहे. त्यामुळे त्याच VPS वरील SSH hardening या build चा भाग समजा.

खासगी key चा backup घ्या, कारण तोच address आहे

/var/lib/tor/onion_site/hs_ed25519_secret_key ही service आहे. कोणताही registrar किंवा recovery पर्याय नाही. तो गमावल्यास address कायमचा गमावला जातो. त्याची प्रत तयार करा; मात्र ती प्रत ज्याच्याकडे असेल तो तुमच्या address वर स्वतःची content serve करू शकतो आणि तुम्हाला ते रद्द करण्याचा कोणताही मार्ग उरणार नाही.

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

त्या archive ला (gpg -c onion-keys.tgz) encrypt करा आणि ते server च्या बाहेर सुरक्षित ठिकाणी हलवा. नवीन VPS वर restore करण्यासाठी archive आणि ownership 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 ने descriptor पुन्हा publish केल्यानंतर एक-दोन मिनिटांत तोच address नवीन hardware वर पुन्हा उपलब्ध होतो. Migration एवढीच आहे: DNS मध्ये बदल करण्याची किंवा certificate पुन्हा issue करण्याची गरज नाही.

Onion-Location, साइट clearnet वरही उपलब्ध असल्यास

Onion सेवा गोपनीयतेसाठी नसून सोयीसाठी असल्यास, तिची माहिती clearnet vhost मधून द्या:

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

त्यानंतर Tor Browser address bar मध्ये .onion available बटण दाखवतो आणि स्विच करण्याचा पर्याय देतो. हा header clearnet पृष्ठ HTTPS वरून दिलेले असल्यास आणि त्याची value वैध onion URL असल्यासच ग्राह्य धरला जातो.

येथे nginx चा एक नियम महत्त्वाचा आहे. add_header directives हे location block मध्ये त्याचे स्वतःचे कोणतेही directives घोषित केलेले नसतील, तेव्हाच inherited होतात. त्यामुळे स्वतःचे add_header असलेला location Onion-Location मूकपणे काढून टाकतो. तो तेथे पुन्हा नमूद करा किंवा सर्व response headers एकाच ठिकाणी ठेवा. हा header जाणीवपूर्वक publish केल्याने दोन्ही sites परस्पर जोडल्या जातात. Mirror साठी हे योग्य आहे; परस्पर न जोडता ठेवायच्या कोणत्याही site साठी ते चुकीचे आहे.

व्हॅनिटी पत्ते

mkp224o तुम्ही दिलेल्या prefix ने सुरू होणारा address मिळेपर्यंत key pairs तयार करते. हा brute force शोध आहे. त्यामुळे prefix आणि तुम्ही किती वेळ प्रतीक्षा करू शकता यापलीकडे कोणतीही configuration आवश्यक नाही.

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

प्रत्येक मिळालेला key pair onionkeys/<address>.onion/ मध्ये तयार होतो आणि त्यात hostnamehs_ed25519_secret_key असतात. तो वापरण्यासाठी tor थांबवा, ती directory तुमच्या HiddenServiceDir वर copy करा आणि वरील restore प्रमाणेच chown आणि chmod 700 लागू करा.

Prefix ची लांबी हाच संपूर्ण खर्च ठरवते. Address base32 मध्ये असतो. त्यामुळे तुम्ही मागितलेले प्रत्येक अतिरिक्त character अपेक्षित key pairs ची संख्या 32 पट वाढवतो. लहान prefix laptop वर लवकर पूर्ण होतो. मोठा prefix तुमच्या मालकीच्या कोणत्याही साधनावर पूर्ण होणार नाही. Vanity prefix मुळे वाचकांना संपूर्ण address ऐवजी सुरुवातीची काही characters ओळखण्याची सवय लागते. Onion sites च्या phishing copies याच सवयीचा फायदा घेतात.

अपयशाच्या स्थिती आणि दिसणारे संदेश

रीस्टार्टनंतर hostname फाइल नाही. Tor सुरू झाले नाही किंवा त्याने directory नाकारली. 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?

हाताने तयार केलेली directory अशी दिसते. मालकी आणि mode दुरुस्त करा किंवा directory हटवा आणि tor ला ती तयार करू द्या.

Tor Browser मध्ये Onionsite Not Found (0xF0) दिसते. Client descriptor आणू शकला नाही. त्यामुळे network च्या दृष्टीने त्या address वर काहीही प्रकाशित झालेले नाही. tor चालू आहे आणि bootstrap पूर्ण झाले आहे याची खात्री करा. तुम्ही टाइप केलेला address sudo cat /var/lib/tor/onion_site/hostname शी अक्षर न् अक्षर तपासा. त्यानंतर clock तपासा. Descriptor प्रकाशित आणि पडताळण्यासाठी Tor ला अचूक वेळ आवश्यक असतो आणि timedatectl ने System clock synchronized: yes दाखवले पाहिजे.

Address resolve होतो, पण page कधीही load होत नाही. Tor ने rendezvous पूर्ण केले, पण शेवटच्या hop वर, म्हणजे tor कडून nginx कडे जाताना, अपयश आले. हा hop स्थानिक असल्यामुळे tor log मध्ये काहीही दिसत नाही. Server वर curl -sI http://127.0.0.1:8080/ चालवा. Connection refused म्हणजे nginx बंद आहे किंवा HiddenServicePort ज्या address कडे निर्देश करते त्यापेक्षा वेगळ्या address वर listening करत आहे.

Page load होते आणि प्रत्येक link तुमच्या वास्तविक domain कडे जाते. Templates मधील absolute URLs हे कारण आहे. वरील grep -o 'https\?://[^"]*' तपासणी चालवा आणि address कुठेही share करण्यापूर्वी तिच्या output मधील समस्या दुरुस्त करा.

ते कार्य करते, पण reboot नंतर थांबते. Site वर अवलंबून राहण्यापूर्वी box एकदा जाणीवपूर्वक reboot करा. त्यानंतर sudo systemctl status tor@default आणि sudo systemctl status nginx चालवा. Machine restart होईपर्यंत हाताने सुरू केलेली service आणि enabled service सारख्याच दिसतात.

FAQ

माझ्या firewall मध्ये Tor onion service साठी पोर्ट उघडणे आवश्यक आहे का?

नाही. tor daemon फक्त directory servers, introduction points आणि प्रत्येक rendezvous relay यांच्याशी outbound connections करतो. त्यामुळे inbound rule आवश्यक नाही. Web server स्वतः 127.0.0.1 वर listen करतो. SSH ला परवानगी देऊन incoming traffic साठी ufw ची default deny स्थिती कायम ठेवा. याच गुणधर्मामुळे public IP नसलेल्या NAT (network address translation) मागील मशीनवरही onion service चालते.

Tor Browser मध्ये माझा .onion address का उघडत नाही?

Server पासून बाहेरच्या दिशेने तपासणी करा. sudo journalctl -u tor@default -n 50 ने Bootstrapped 100% (done): Done दाखवले पाहिजे. त्यानंतर server वर curl -sI http://127.0.0.1:8080/ ने status line परत केली पाहिजे. मग तुम्ही टाइप केलेला address hostname फाइलमधील address शी तुलना करा. एका चुकीच्या character मुळे वेगळी service ओळखली जाते. Onionsite Not Found (0xF0) याचा अर्थ त्या address साठी descriptor सापडला नाही. याचे सामान्य कारण tor चालू नसणे किंवा system clock चुकीचे असणे हे आहे.

माझी onion site नवीन server वर हलवून तोच address ठेवता येईल का?

होय. Address hs_ed25519_secret_key पासून तयार केला जातो. त्यामुळे संपूर्ण HiddenServiceDir नवीन मशीनवर copy करा. त्याची ownership debian-tor वर सेट करा, mode 700 ठेवा आणि tor सुरू करा. Descriptor पुन्हा publish झाल्यानंतर address पुन्हा live होतो. DNS record update करण्याची गरज नसते. ही फाइल हरवल्यास address पुनर्प्राप्त करता येत नाही. त्यामुळे ती तयार केल्याच दिवशी encrypted स्वरूपात server च्या बाहेर backup करा.

Onion site साठी HTTPS certificate आवश्यक आहे का?

नाही. 56-character address ही service ची public key आहे. त्यामुळे connection आधीच end-to-end encrypted आणि authenticated असते. Tor Browser .onion नावावरील http:// ला secure context मानतो. Clearnet certificate onion vhost वर पुन्हा वापरणे काहीही न करण्यापेक्षा अधिक वाईट आहे. Certificate Transparency logs सार्वजनिक असतात आणि कोणती names एकच certificate share करतात हे कायम नोंदवतात. .onion नावासाठी certificate घेण्याचे एकमेव कारण म्हणजे ते जारी करणाऱ्या CA कडून brand assurance मिळवणे. हा link जाणीवपूर्वक public असतो.