
स्वचालित Tor-आधारित साझा वेब होस्टिंग सर्वर जिसमें PHP मल्टी-वर्जन सपोर्ट, ईमेल रूटिंग, ऑटो-स्केलिंग Tor इंस्टेंस, और अंतर्निहित सुरक्षा सुदृढ़ीकरण जैसे CSRF सुरक्षा, CSP, और एन्क्रिप्टेड ओनियन कुंजियाँ शामिल हैं।
यह एक Tor आधारित साझा होस्टिंग सर्वर के लिए सेटअप है। इसे जैसा है वैसा प्रदान किया गया है और इसे उत्पादन में डालने से पहले आपको अपनी आवश्यकताओं के अनुसार परिवर्तन करने चाहिए। यह एक कार्य प्रगति पर है और आपको अद्यतन करने से पहले परिवर्तनों के लिए कमिट इतिहास की सावधानीपूर्वक जांच करनी चाहिए। उत्पादन सर्वर के लिए, कम से कम 1TB SSD डिस्क स्थान, 32GB RAM और 8 CPU कोर अनुशंसित है। एक छोटे परीक्षण/व्यक्तिगत सर्वर के लिए, 4GB RAM और 1 CPU कोर पर्याप्त है।
अनुवाद Weblate में प्रबंधित किए जाते हैं।
यदि आप मैन्युअल रूप से अनुवाद सबमिट करना पसंद करते हैं, तो स्क्रिप्ट update-translations.sh का उपयोग स्रोत से भाषा टेम्पलेट और अनुवाद फ़ाइलों को अद्यतन करने के लिए किया जा सकता है।
यह फ़ाइल var/www/locale/hosting.pot उत्पन्न करेगा जिसे आप फिर var/www/YOUR_LANG_CODE/LC_MESSAGES/hosting.po में एक नई भाषा फ़ाइल बनाने के आधार के रूप में उपयोग कर सकते हैं और Poedit जैसे अनुवाद प्रोग्राम से संपादित कर सकते हैं।
एक बार समाप्त होने पर, आप अनुवाद शामिल करने के लिए एक पुल अनुरोध खोल सकते हैं, या मुझे ईमेल करें।
यह कॉन्फ़िगरेशन Debian 13 (Trixie) और Ubuntu 24.04 LTS के साथ परीक्षण किया गया था। आपके सर्वर पर Debian 13 या Ubuntu 24.04 स्थापित करने की सिफारिश की जाती है, लेकिन थोड़ी ट्वीकिंग के साथ आप इसे अन्य वितरणों और/या संस्करणों पर भी काम करवा सकते हैं। यदि आप इसे रास्पबेरी पाई पर बनाना चाहते हैं, तो कृपया रास्पियन छवियों का उपयोग न करें क्योंकि कई चीजें टूट जाएंगी। इसके बजाय अपने पाई मॉडल के लिए https://raspi.debian.net/daily-images/ से एक छवि डाउनलोड करें।
स्थापित करने का सबसे आसान तरीका स्वचालित इंस्टॉलर के साथ है:
apt update && apt install git && git clone https://github.com/DanWin/hosting && cd hosting
./install.sh
इंस्टॉलर सब कुछ संभालता है: पैकेज स्थापना, PHP/ImageMagick संकलन, Tor कॉन्फ़िगरेशन, MySQL सेटअप, और सेवा प्रावधान। यह पासवर्ड के लिए संकेत देगा या स्वचालित रूप से उत्पन्न करेगा।
विकल्प:
./install.sh --non-interactive # प्रॉम्प्ट छोड़ें, यादृच्छिक पासवर्ड उत्पन्न करें
./install.sh --vanity <prefix> # एक वैनिटी .onion पता उत्पन्न करें
./install.sh --skip-binaries # संकलन छोड़ें (यदि पहले से बनाया गया हो तो उपयोग करें)
./install.sh --db-pass <pass> # होस्टिंग MySQL पासवर्ड सेट करें
./install.sh --pma-pass <pass> # phpMyAdmin MySQL पासवर्ड सेट करें
./install.sh --admin-pass <pass> # एडमिन पैनल पासवर्ड सेट करें
वैनिटी .onion जनरेशन mkp224o का उपयोग करता है (स्वचालित रूप से संकलित)। केवल a-z और 2-7 वर्ण मान्य हैं। 4-वर्ण उपसर्ग में मिनट लगते हैं, 5 वर्णों में 10-30 मिनट, 6+ वर्णों में घंटे लगते हैं।
क्रेडेंशियल /root/hosting-credentials.txt में सहेजे जाते हैं।
cd hosting
./update.sh # कोड अपडेट करें, कॉन्फ़िगरेशन सुरक्षित रखें
./update.sh --rebuild # PHP/ImageMagick भी पुनर्निर्माण करें
./update.sh --code-only # केवल PHP फ़ाइलें अपडेट करें
अद्यतन स्क्रिप्ट आपके कॉन्फ़िगरेशन का बैकअप लेती है, नवीनतम कोड खींचती है, पासवर्ड और ओनियन पता पुनर्स्थापित करती है, और सेवाओं को पुनरारंभ करती है। यह पता लगाती है कि install_binaries.sh बदला है या नहीं और पुनर्निर्माण के लिए चेतावनी देती है।
यदि आप मैन्युअल रूप से स्थापित करना पसंद करते हैं, तो नीचे दिए गए चरणों का पालन करें।
ऐसे पैकेज अनइंस्टॉल करें जो इस सेटअप में हस्तक्षेप कर सकते हैं:
DEBIAN_FRONTEND=noninteractive apt purge -y apache2* dnsmasq* eatmydata exim4* imagemagick-6-common mysql-client* mysql-server* nginx* libnginx-mod* php7* resolvconf && systemctl disable systemd-resolved.service && systemctl stop systemd-resolved.service
यदि आपको इस चरण के बाद होस्टनाम हल करने में समस्या होती है, तो अस्थायी रूप से 1.1.1.1 (CloudFlare से) या 8.8.8.8 (Google से) जैसे सार्वजनिक नेमसर्वर पर स्विच करें
rm /etc/resolv.conf && echo "nameserver 1.1.1.1" > /etc/resolv.conf
अतिरिक्त रिपॉजिटरी जोड़ें (केवल Debian — Ubuntu में nginx और brotli मूल रूप से हैं):
apt update && apt install git apt-transport-tor curl lsb-release
curl -sSL https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc > /etc/apt/trusted.gpg.d/torproject.asc
curl -sSL https://packages.sury.org/nginx/apt.gpg > /etc/apt/trusted.gpg.d/sury.gpg
echo "deb tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org/ `lsb_release -cs` main" >> /etc/apt/sources.list
echo "deb https://packages.sury.org/nginx/ `lsb_release -cs` main" >> /etc/apt/sources.list
apt update && apt upgrade
गिट स्थापित करें और इस रिपॉजिटरी को क्लोन करें
apt update && apt install git && git clone https://github.com/DanWin/hosting && cd hosting
कस्टम अनुकूलित बायनेरिज़ स्थापित करें
./install_binaries.sh
ध्यान दें कि डेबियन में एक ओनियन सेवा पैकेज संग्रह भी है, इसलिए आप /etc/apt/sources.list को संपादित करके वहां से लोड करना चाह सकते हैं:
deb tor://2s4yqjx5ul6okpp3f2gaunr2syex5jgbfpfvhxxbbjwnrsvbk5v3qbid.onion/debian `lsb_release -cs` main
स्थापना समाप्त होने के बाद var/www में साइट फ़ाइलों को /var/www में और etc में कॉन्फ़िगरेशन फ़ाइलों को /etc में कॉपी करें (और अपनी आवश्यकताओं के अनुसार संशोधित करें)। फिर कुछ सेवाएं पुनरारंभ करें:
systemctl daemon-reload && systemctl restart bind9.service && systemctl restart [email protected]
डिफ़ॉल्ट .onion डोमेन को अपने डोमेन से बदलें:
sed -i "s/dhosting4xxoydyaivckq7tsmtgi4wfs3flpeyitekkmqwu4v4r46syd.onion/`cat /var/lib/tor/hidden_service/hostname`/g" /etc/postfix/sql/alias.cf /etc/postfix/sender_login_maps /etc/postfix/main.cf /var/www/skel/www/index.hosting.html /var/www/common.php /etc/postfix/canonical /etc/postfix-clearnet/canonical /var/www/html/squirrelmail/config/config.php
अपने क्लियरनेट डोमेन के लिए, आपको इसे /etc/postfix/main.cf में relay_domains में जोड़ना होगा और निम्नलिखित फ़ाइलों में डिफ़ॉल्ट डोमेन संपादित करना होगा:
/var/www/common.php
/etc/postfix/canonical
/etc/postfix-clearnet/canonical
इस सेटअप में दो पोस्टफिक्स इंस्टेंस हैं, एक अन्य .onion सेवाओं से मेल प्राप्त करने और भेजने के लिए और एक पतों को फिर से लिखने के लिए ताकि उन्हें क्लियरनेट फेसिंग मेल रिले पर भेजा जा सके। आप निम्न चलाकर दूसरा इंस्टेंस बनाना चाहें या नहीं चाहें:
postmulti -e init
postmulti -I postfix-clearnet -e create
postmulti -i clearnet -e enable
postmulti -i clearnet -p start
यदि आपने एक इंस्टेंस बनाया है, तो etc/postfix/main.cf में क्लियरनेट रिले संबंधित कॉन्फ़िगरेशन को अनकमेंट करें और etc/postfix-clearnet से कॉन्फ़िगरेशन फ़ाइलों को भी कॉपी और संशोधित करना सुनिश्चित करें
यदि आपको निम्न समस्या मिली: postfix: fatal: chdir(/var/spool/postfix-clearnet): No such file or directory तो आप डिफ़ॉल्ट पोस्टफिक्स इंस्टेंस से chroot को इस प्रकार कॉपी कर सकते हैं cd /var/spool/ && cp -a postfix/ postfix-clearnet/
पोस्टफिक्स कॉन्फ़िगरेशन की प्रतिलिपि बनाने (और संशोधित करने) के बाद, आपको मैपिंग फ़ाइलों (और हर बार जब आप उन फ़ाइलों को अपडेट करते हैं) से डेटाबेस बनाने की आवश्यकता है:
postalias /etc/aliases
postmap /etc/postfix/canonical /etc/postfix/sender_login_maps /etc/postfix/transport
postmap /etc/postfix-clearnet/canonical /etc/postfix-clearnet/sasl_password /etc/postfix-clearnet/transport #only if you have a second instance
अस्थायी फ़ाइलों को मेमोरी में सहेजने के लिए, /etc/fstab में निम्न जोड़ें:
tmpfs /tmp tmpfs defaults,noatime 0 0
tmpfs /var/log/nginx tmpfs rw,user,noatime 0 0
सिस्टम को सख्त करने और गैर-रूट उपयोगकर्ताओं से pids छिपाने के लिए, निम्न भी जोड़ें:
proc /proc proc defaults,hidepid=2 0 0
और /home माउंटपॉइंट में noatime,usrjquota=aquota.user,jqfmt=vfsv1 विकल्प जोड़ें, फिर कोटा प्रारंभ करें। /home को / से बदलें, यदि आपके पास अलग विभाजन नहीं है:
systemctl daemon-reload
mount -o remount $(findmnt -n -o TARGET --target /home)
quotacheck -cMu $(findmnt -n -o TARGET --target /home)
quotaon $(findmnt -n -o TARGET --target /home)
कुछ मामलों में, आपको एक त्रुटि मिल सकती है कि कोटा समर्थित नहीं है। यह आमतौर पर वर्चुअल वातावरण में होता है। सुनिश्चित करें कि आपके पास पूर्ण कर्नेल स्थापित है, न कि -virtual पैकेज वाला। वे आमतौर पर आपके वितरण के आधार पर linux-image-amd64, linux-image-arm64 या linux-image-generic होते हैं। यह भी सुनिश्चित करें कि आप एक वास्तविक वर्चुअल मशीन (जैसे KVM) चला रहे हैं। कुछ प्रदाता कंटेनरीकृत VPS (जैसे OpenVZ) बेचते हैं, जिसका अर्थ है कि आप अपना स्वयं का कर्नेल नहीं चलाते...
v3 हिडन_सर्विस समर्थन के लिए sodium_compat स्थापित करें
cd /var/www && composer install
phpmyadmin के लिए एक mysql उपयोगकर्ता बनाएं और इसे /var/www/html/phpmyadmin/config.inc.php में कॉन्फ़िगर करें और $cfg['blowfish_secret'] को यादृच्छिक वर्णों से भरें:
mysql
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'MY_PASSWORD';
CREATE DATABASE phpmyadmin;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'phpmyadmin'@'%';
FLUSH PRIVILEGES;
quit
mysql phpmyadmin < /var/www/html/phpmyadmin/sql/create_tables.sql
हमारे होस्टिंग प्रबंधन के लिए सभी अनुमतियों के साथ एक mysql उपयोगकर्ता बनाएं:
mysql
CREATE USER 'hosting'@'%' IDENTIFIED BY 'MY_PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'hosting'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit
फिर /var/www/common.php और /etc/postfix/sql/alias.cf में डेटाबेस कॉन्फ़िगरेशन संपादित करें
अंतिम लेकिन महत्वपूर्ण, निम्न चलाकर डेटाबेस सेटअप करें
php /var/www/setup.php
विभिन्न प्रबंधन कार्यों को नियमित रूप से चलाने के लिए systemd टाइमर सक्षम करें:
systemctl enable hosting-del.timer && systemctl enable hosting.timer && systemctl enable hosting-autoscale.timer
अंतिम चरण रीबूट करना है, सभी सेवाओं के शुरू होने के लिए लगभग 5 मिनट प्रतीक्षा करें, और एक परीक्षण खाता बनाकर जांचें कि सब कुछ काम कर रहा है या नहीं।
उपयोगकर्ता पंजीकरण पर PHP 8.2, 8.3, 8.4, और 8.5 के बीच चयन कर सकते हैं और डैशबोर्ड से अपना संस्करण बदल सकते हैं। डिफ़ॉल्ट PHP 8.5 है।
Tor इंस्टेंस खाता गणना के आधार पर स्वचालित रूप से स्केल होते हैं। hosting-autoscale.timer प्रति घंटा चलता है और लगभग हर 250 खातों के लिए एक नया इंस्टेंस जोड़ता है। इंस्टेंस आईडी a से z तक जाती हैं, फिर aa, ab, आदि। आप /var/www/common.php में SERVICE_INSTANCES में मैन्युअल रूप से इंस्टेंस सेट कर सकते हैं और setup.php चला सकते हैं।
htmlspecialchars() से एस्केप किया गयाscript-src 'none' के साथ