كيفية استضافة موقع onion على VPS
شغّل خدمة onion بإصدار v3 على Ubuntu باستخدام Tor وnginx، واربط nginx بـ127.0.0.1 لمنع تسريبات تكشف عنوان IP العام لخادمك.
ما الذي ستبنيه
موقع onion هو خادم ويب عادي لا يستجيب إلا عبر شبكة Tor. ثبّت Tor، وأضف سطرين إلى /etc/tor/torrc، واقرأ العنوان الذي يكتبه Tor لك، ثم اربط nginx بـ127.0.0.1 حتى لا يستجيب أي شيء على عنوان IP العام. يستغرق التثبيت عشر دقائق. أما بقية هذا الدليل فتتناول قائمة التسريبات، لأن الطريقة المعتادة لفشل موقع onion هي أن يشير إعداد الموقع نفسه مباشرةً إلى المشغّل.
بدأ Tor باسم "موجّه البصل"، وخدمة onion هي خدمة لا يمكنك الوصول إليها إلا من خلاله. يتكوّن عنوان الإصدار 3 من 56 محرفاً يتبعها .onion. وهذه المحارف هي المفتاح العام لخدمة ed25519، إضافة إلى مجموع تحقق وبايت إصدار، وكلها مشفّرة بترميز base32. أزيلت عناوين الإصدار 2، التي كانت تتكوّن من 16 محرفاً، من الشبكة في 2021، لذلك فإن كل ما تنشئه اليوم سيكون v3. العنوان هو المفتاح، ولهذا نتيجتان. يكون الاتصال مشفّراً وموثّقاً من طرف إلى طرف من دون إشراك جهة إصدار شهادات، ويعني فقدان ملف المفتاح فقدان العنوان نهائياً.
لا يقبل خادمك أي اتصال وارد. يختار Tor عدة مرحّلات كنقاط تقديم، ويرفع واصفاً موقّعاً إلى خوادم الدليل، ثم يلتقي بكل زائر عند مرحّل rendezvous يختاره الزائر. كل اتصال من هذه الاتصالات صادر من خادمك. لا يوجد منفذ تحتاج إلى فتحه، ولا سجل DNS تحتاج إلى نشره. إذا أردت أن يقدّم VPS نفسه شيئاً إلى الشبكة، فهذه مهمة مختلفة تماماً وبنية معاكسة، لأن جسر obfs4 يقبل اتصالات واردة من العملاء الخاضعين للرقابة ويحتاج إلى منفذ يمكن الوصول إليه.
تثبيت Tor من مستودع Tor Project
تتضمن Ubuntu حزمة tor في مستودع universe، لكنها تبقى قريبة من الإصدار الذي كان حالياً عند تجميد الإصدار. يتابع مستودع Tor Project الخاص الإصدار المستقر الحالي، وهذا ما تريده للبرنامج الذي يحدد ما إذا كان عنوانك سيبقى ملكك. وجود حزمة في توزيعة لا يعني أن أحداً ما زال يطوّرها. لذلك يجدر بك التحقق من ذلك لكل برنامج تستضيفه ذاتياً، لأن Searx لم يتلقَّ أي commit برمجي منذ 2023، بينما يواصل SearXNG تطوير ذلك المشروع.
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 هي codename الخاصة بـUbuntu. اقرأها من /etc/os-release بدلاً من كتابتها يدوياً، لأن codename الخاطئة تمنحك مستودعاً يُحلّ بشكل صحيح، لكنه لا يحتوي على حزم لإصدارك.
. /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 على تحديث مفتاح التوقيع، لذلك لا يؤدي تدوير المفتاح إلى تعطّل apt update بعد عام من الآن. تحقّق من أن tor بدأ ووصل إلى الشبكة:
tor --version
sudo journalctl -u tor@default -n 20يجب أن تنتهي journal بالعبارة Bootstrapped 100% (done): Done. إذا بقي tor عالقاً عند Bootstrapped 10%، فلن يملك مساراً صادراً. افحص جدار الحماية الشبكي لدى مزود الخدمة وقواعد egress لديك: يجب أن يعرض sudo ufw status verbose القيمة allow (outgoing) كمسار افتراضي.
يوجد اسمان مهمان من الآن فصاعداً. تشغّل الحزمة tor باستخدام المستخدم debian-tor، بينما تكون الوحدة قيد التشغيل هي tor@default.service، لأن tor.service في Debian وUbuntu عبارة عن غلاف يحيط بالمثيل. اطلب الحالة والسجلات باستخدام اسم المثيل، وستحصل دائماً على العملية الفعلية.
تهيئة خدمة onion في torrc
أضف سطرين إلى /etc/tor/torrc:
HiddenServiceDir /var/lib/tor/onion_site/
HiddenServicePort 80 127.0.0.1:8080يحتوي HiddenServiceDir على المفاتيح والعنوان اللذين يحتفظ بهما tor لهذه الخدمة. لا تنشئه بنفسك. ينشئه Tor عند بدء التشغيل بالمالك والوضع المطلوبين. كما أن إنشاء هذا الدليل بصلاحيات root يؤدي إلى أول فشل في قائمة حالات الفشل أدناه.
يتكوّن HiddenServicePort من جزأين، والخلط بينهما هو الخطأ الأول الشائع. الرقم الأول هو المنفذ الذي يتصل به الزائر داخل النفق. لذلك، 80 هو الخيار المتوقع، ولا يوجد سبب لتغييره. أما الجزء الثاني فهو العنوان المحلي الذي يوجّه إليه tor حركة الشبكة. يوجّه HiddenServicePort 80 وحده إلى 127.0.0.1:80. لذلك، تؤدي كتابة العنوان صراحةً واستخدام منفذ مرتفع إلى إبقاء virtual host الخاص بـonion بعيداً عن أي خدمة تستمع على المنفذ 80.
sudo systemctl restart tor@default
sudo ls -l /var/lib/tor/onion_site/يجب أن يحتوي الدليل على hostname وhs_ed25519_public_key وhs_ed25519_secret_key، إضافةً إلى دليل authorized_clients فارغ.
اقرأ عنوان .onion الخاص بك
sudo cat /var/lib/tor/onion_site/hostnameيظهر سطر واحد: 56 حرفاً بترميز base32 و.onion. تمثل هذه السلسلة هوية الموقع بالكامل. لا يعيّنها أحد، ولا يمكن لأحد نقلها، ولا يمكنه انتزاعها منك ما دمت تحتفظ بملف المفتاح. انسخها الآن، لأن كل إعداد أدناه يحتاج إليها. ستستخدم بقية هذا الدليل الصيغة <your-address>.onion لكتابتها.
خدّم الموقع من nginx المرتبط بالعنوان 127.0.0.1
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يجب أن يقرأ عمود العنوان 127.0.0.1:8080. إذا قرأت فيه 0.0.0.0:8080 أو *:8080، فهذا يعني أن موقع onion متاح أيضاً على الإنترنت العام، وهذه أول نقطة في قائمة التسريبات. يربط السطر listen 8080; الذي لا يحتوي على عنوان كل الواجهات، وهذا هو الإعداد الافتراضي.
افتح العنوان في Tor Browser. يستغرق التحميل الأول بضع ثوانٍ بينما يجلب العميل الوصف الخاص بك ويبني دائرة rendezvous.
تفضّل وثائق Tor Project نفسها استخدام unix socket بدلاً من منفذ loopback: HiddenServicePort 80 unix:/var/run/tor/onion_site.sock، مع استماع nginx على ذلك المسار. لا يمكن الوصول إلى socket من مضيف آخر إطلاقاً، حتى إذا أضيفت إلى الخادم لاحقاً واجهة ثانية. لكن ذلك يتطلب ضبط صلاحيات الملفات، لأن nginx ينشئ socket ويتصل به tor بصفته debian-tor، ولذلك يجب أن يتفق المستخدمان على الدليل. استخدام loopback مع التحقق من مخرجات ss أسهل في الضبط بشكل صحيح، وهو ما يفترضه باقي هذا الدليل.
عند تشغيل الموقع على loopback، لا يحتاج الخادم إلى أي قاعدة واردة له. اترك المنفذ 22 مفتوحاً لاستخدامك، وامنع الباقي (إعدادات ufw الافتراضية التي تستحق الضبط على VPS). تذكّر أن جداراً نارياً لا يلغي خدمة مرتبطة بـ0.0.0.0، بل يرشّح الحزم التي تصل إلى الجدار الناري فقط. تجعل الحاويات هذا الأمر أكثر وضوحاً، لأن نشر منفذ Docker يكتب قواعد iptables قبل ufw، ولذلك يضع -p 8080:80 واجهة onion الخلفية على عنوان IP العام، بينما يستمر ufw في الإبلاغ عن أن المنفذ ممنوع. انشر منافذ الحاوية بصيغة -p 127.0.0.1:8080:80.
التسريبات التي تزيل إخفاء هوية موقع onion
يخفي Tor موقع الخادم. لكنه لا يخفي أي شيء مما يقوله الخادم. كل عنصر أدناه هو شيء تنشره مكدستك بنفسها. قراءة حدود أي أداة للخصوصية الفعلية بدلاً من سمعتها هي العادة نفسها التي توضّح لك ما الذي يخفيه SearXNG المستضاف ذاتياً، أي عنوان IP الخاص بك عن محركات البحث ولا شيء أكثر.
الموقع نفسه يستجيب على عنوان IP العام
هذه هي المشكلة التي تفاجئ كثيراً من الناس. تفهرس أدوات الفحص استجابة HTTP لكل عنوان قابل للتوجيه باستمرار، وتكون هذه النتائج عامة وقابلة للبحث. إذا قدّمت الصفحة نفسها على عنوان IP العام وعلى عنوان onion، فإن الربط بينهما يحتاج إلى استعلام واحد فقط: العنوان نفسه، وقيمة hash الخاصة بـfavicon نفسها، وETag نفسه، وترتيب الرؤوس نفسه. السطر listen 127.0.0.1:8080; أعلاه هو الحل. تحقّق من ذلك من جهاز مختلف، وليس من الخادم:
curl -sv --max-time 5 http://<your-public-ip>:8080/إن ظهور Connection refused أو انتهاء المهلة هو النتيجة الصحيحة. ظهور أي HTML يعني أن الموقع عام. إذا كان الخادم يشغّل أيضاً موقعاً على clearnet، فامنح ذلك الـvhost جذرًا خاصاً به، وأبقِ كتلة default_server صريحة على المستمع العام، حتى لا يمكن لرأس Host غير المطابق أن ينتقل إلى vhost الخاص بـonion.
لافتات الإصدار
curl -sI http://127.0.0.1:8080/ | grep -i '^server'يستجيب nginx افتراضياً بـServer: nginx/1.24.0. تشكّل سلسلة الإصدار هذه، مع الترتيب الدقيق للرؤوس الأخرى، بصمة تطابق موقع onion مع مضيف clearnet. يختصر server_tokens off; هذه السلسلة إلى Server: nginx. لكنه لا يزيل الرأس، ولا يوفّر nginx توجيهاً مضمّناً يفعل ذلك، لذلك تكون وحدة headers-more هي الحل المعتاد إذا أردت إزالته. يضيف PHP القيمة X-Powered-By إلى أن تضبط expose_php = Off. وينبغي إدراج etag off; في القائمة نفسها، لأن nginx ينشئ ETag من وقت تعديل الملف وحجمه، ولذلك تعطي الملفات نفسها، عند نسخها إلى خادمين، قيمة ETag نفسها على كليهما.
عناوين URL مطلقة تشير إلى نطاق clearnet الخاص بك
وسم rel="canonical"، أو og:url في Open Graph، أو موجز RSS، أو خريطة موقع، أو رسالة بريد إلكتروني لإعادة تعيين كلمة المرور، أو عنوان URL ثابت لشعار. يكفي أي واحد منها لتسمية موقع clearnet داخل صفحة مقدّمة عبر onion. استخدم مسارات نسبية إلى الجذر مثل /static/logo.svg، ودع التطبيق يقرأ عنوانه الأساسي من مضيف الطلب بدلاً من استخدام قيمة ثابتة. عمليات إعادة التوجيه هي المشكلة نفسها في موضع آخر: يرسل return 301 https://example.com$request_uri; في كتلة catch-all زائر onion إلى نطاقك الحقيقي، ويوفّر له الرأس Location الإجابة مباشرة.
شهادة TLS مشتركة مع موقع clearnet
يثبت عنوان onion هويته بنفسه، لأن العنوان هو المفتاح العام. لذلك يكون http:// عبر اتصال onion مشفّراً من طرف إلى طرف، ويتعامل معه Tor Browser باعتباره سياقاً آمناً. يؤدي تثبيت شهادتك الحالية على vhost الخاص بـonion إلى نشر الصلة بين الموقعين، لأن كل شهادة موثوقة عامة تُسجّل في سجلات Certificate Transparency، وهذه السجلات عامة ودائمة وقابلة للبحث بالاسم. أبقِ شهادات Let's Encrypt على vhost الخاص بـclearnet، واترك vhost الخاص بـonion على HTTP العادي.
الخطوط والتحليلات من جهات خارجية
خط من CDN (شبكة توصيل المحتوى)، أو نص تحليلات. يجلب متصفح الزائر كل عنصر منهما مباشرة، لذلك تعرف الجهة الخارجية أن شخصاً حمّل صفحتك، وعادةً تعرف الصفحة التي حمّلها أيضاً. كما أن مستويات الأمان الأكثر تشدداً في Tor Browser تحظر الطلب على أي حال، فتترك تخطيطاً معطلاً. استضف كل أصل تحتاج إليه الصفحة بنفسك.
عدم تطابق رأس المضيف
إذا لم يتطابق server_name مع رأس Host الذي يرسله tor، فإن nginx يعود إلى الخادم الافتراضي لعنوان الاستماع ذلك. على خادم يحتوي على vhost واحد، لا يظهر هذا الأمر، لأن كتلة الخادم الوحيدة هي أيضاً الخادم الافتراضي. أضف vhost خاصاً بـclearnet لاحقاً، وقد تبدأ طلبات onion بالوصول إليه، مع وسومه الأساسية وعمليات إعادة التوجيه الخاصة به. أعد تشغيل فحص curl -H 'Host: ...' بعد كل تغيير في nginx، وابحث في النتيجة عن نطاقك الحقيقي باستخدام 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، لذلك اعتبر تقوية SSH على VPS نفسه جزءاً من هذا الإعداد.
احتفظ بنسخة احتياطية من المفتاح الخاص، لأنه يمثّل العنوان
/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 مخصصاً للتسهيل وليس لإخفاء الهوية، فأعلنه من virtual host الخاص بـclearnet:
add_header Onion-Location http://<your-address>.onion$request_uri;يعرض Tor Browser عندها زر .onion available في شريط العناوين، ويتيح التبديل. لا يُعتمد هذا الرأس إلا عندما تُقدَّم صفحة clearnet عبر HTTPS، وتكون القيمة عنوان onion صالحاً.
توجد هنا قاعدة في nginx قد تسبب مشكلة. تُورَّث توجيهات add_header إلى كتلة location فقط عندما لا تعرّف تلك الكتلة أي توجيهات خاصة بها. لذلك، فإن location الذي يحتوي على add_header خاصاً به يُسقط Onion-Location بصمت. كرّر التوجيه فيه، أو أبقِ جميع رؤوس الاستجابة في مكان واحد. يؤدي نشر هذا الرأس عمداً إلى ربط الموقعين، وهذا صحيح بالنسبة إلى نسخة مرآة، لكنه غير صحيح لأي موقع يُفترض أن يبقى غير مرتبط.
العناوين المخصّصة
mkp224o يُنشئ أزواج مفاتيح حتى ينتج أحدها عنواناً يبدأ بالبادئة التي طلبتها. هذه عملية بحث بالقوة الغاشمة، لذلك لا تحتاج إلى إعداد أي شيء سوى البادئة والمدة التي تقبل انتظارها.
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يُحفظ كل تطابق في onionkeys/<address>.onion/، ويحتوي على hostname وhs_ed25519_secret_key. ثبّت أحدها بإيقاف tor، ثم انسخ ذلك الدليل إلى HiddenServiceDir، وبعدها طبّق chown وchmod 700 نفسيهما المستخدَمين في عملية الاستعادة أعلاه.
طول البادئة هو العامل الذي يحدد التكلفة كلها. العنوان بترميز base32، لذلك يؤدي طلب كل محرف إضافي إلى مضاعفة العدد المتوقع من المفاتيح بمقدار 32. تنتهي بادئة قصيرة بسرعة على حاسوب محمول. أما البادئة الطويلة فلن تنتهي على أي جهاز تملكه. كما تعلّم البادئة المخصّصة القراء التعرّف على المحارف الأولى فقط بدلاً من العنوان كاملاً، وهذه هي العادة التي تعتمد عليها نسخ مواقع onion المستخدمة في التصيد الاحتيالي.
أوضاع الفشل، مع النصوص التي ستظهر لك
لا يوجد ملف 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
هل أحتاج إلى فتح منفذ في جدار الحماية لخدمة onion في Tor؟
لا. يُجري daemon الخاص بـtor اتصالات صادرة فقط مع خوادم الدليل، ونقاط التقديم الخاصة به، وكل relay لنقطة الالتقاء. لذلك لا تحتاج إلى قاعدة للاتصالات الواردة، ويستمع خادم الويب نفسه على 127.0.0.1. اترك ufw على الإعداد الافتراضي لمنع الاتصالات الواردة، مع السماح بـSSH. وتعني الخاصية نفسها أن خدمة onion تعمل من جهاز خلف NAT (ترجمة عناوين الشبكة) حتى من دون عنوان IP عام.
لماذا لا أستطيع الوصول إلى عنوان .onion الخاص بي في Tor Browser؟
ابدأ التحقق من الخادم إلى الخارج. يجب أن يعرض sudo journalctl -u tor@default -n 50 القيمة Bootstrapped 100% (done): Done، ثم يجب أن يعيد curl -sI http://127.0.0.1:8080/ على الخادم سطر حالة، وبعد ذلك قارن العنوان الذي أدخلته بالملف hostname، لأن وجود محرف واحد غير صحيح يعني ببساطة أنك تستخدم خدمة مختلفة. تعني Onionsite Not Found (0xF0) عدم العثور على descriptor للعنوان، وهذا يعني عادةً أن tor لا يعمل أو أن ساعة النظام غير صحيحة.
هل يمكنني نقل موقعي onion إلى خادم جديد والاحتفاظ بالعنوان نفسه؟
نعم. يُشتق العنوان من hs_ed25519_secret_key. لذلك انسخ HiddenServiceDir بالكامل إلى الخادم الجديد، واضبط ملكيته على debian-tor ووضعه على 700، ثم شغّل tor. يصبح العنوان متاحاً مجدداً بعد إعادة نشر descriptor، ولا يوجد سجل DNS يحتاج إلى تحديث. إذا فقدت هذا الملف، فلا يمكن استعادة العنوان. لذلك انسخ نسخة احتياطية منه مشفّرة وخارج الخادم في اليوم الذي تنشئه فيه.
هل يحتاج موقع onion إلى شهادة HTTPS؟
لا. العنوان المؤلف من 56 محرفاً هو المفتاح العام للخدمة، لذلك يكون الاتصال مشفّراً وموثّقاً من طرف إلى طرف، ويتعامل Tor Browser مع http:// على اسم .onion باعتباره سياقاً آمناً. وإعادة استخدام شهادة clearnet الخاصة بك في vhost الخاص بـonion أسوأ من عدم فعل شيء، لأن سجلات Certificate Transparency عامة وتسجّل بشكل دائم أسماء النطاقات التي تشترك في الشهادة. والسبب الوحيد لشراء شهادة لاسم .onion هو الحصول على تأكيد للهوية التجارية من CA تُصدر هذه الشهادات، وهذا الرابط عام عن قصد.