बनाया गया: 2026/06/30 13:24:48 America/Chicago
द्वारा: admin

यह मार्गदर्शिका क्या स्थापित करती है

यह मार्गदर्शिका आधिकारिक सेVerlihub स्थापित करती है Verlihub/verlihub Ubuntu सर्वर पर स्रोत वृक्ष। यह NMDC हब सर्वर कोCMake के साथ संकलित करता है, हब डेटा को नीचे संग्रहीत करता है /var/lib/verlihub, हब तालिकाओं के लिए MariaDB का उपयोग करता है, और systemd सेवा के माध्यम से हब शुरू करता है।

यदि आप कंटेनर अलगाव चाहते हैं तोDocker आलेख का उपयोग करें। इस Ubuntu आलेख का उपयोग तब करें जब हब को सीधेVPS, समर्पित सर्वर, या बेयर-मेटल मशीन पर चलना चाहिए।

इंस्टॉल करने से पहले सर्वर प्लान

  • हब के लिए एक सार्वजनिक DNS नाम चुनें, जैसे hub.example.org.
  • NMDC पोर्ट चुनें। पत्तन 411/tcp पारंपरिक है. Verlihub इसे बिना चलाए systemd के माध्यम से सुरक्षित रूप से बांध सकता है root. पत्तन 4111/tcp जब आपको ऐतिहासिक बंदरगाह की आवश्यकता नहीं हो तो यह एक आसान विकल्प है।
  • तय करें कि क्या यह पहली स्थापना केवल सादाNMDC होगी। सादा हब स्थिर होने के बाद NMDCS जोड़ें।
  • सेवा के लिए एक Linux खाता रखें: verlihub.
  • एक MariaDB डेटाबेस और उपयोगकर्ता रखें: verlihub.
  • विज़ार्ड चलाने से पहले मास्टर हब उपनाम और पासवर्ड लिख लें।

Ubuntu पैकेज स्थापित करें

आधिकारिक इंस्टॉल नोट्स सूची GCC, CMake, MySQL क्लाइंट लाइब्रेरी, ओपनएसएसएल, आईसीयू, मेक, ZLib, PCRE, GetText, MaxMindDB, LibIntl, थ्रेड्स, डायनेमिक लोडिंग, Lua और डायलॉग।Ubuntu पर, पहले मिलान पैकेज स्थापित करें।

 sudo apt update
sudo apt install -y \
    build-essential \
    ca-certificates \
    cmake \
    default-libmysqlclient-dev \
    default-mysql-client \
    dialog \
    gettext \
    git \
    libasprintf-dev \
    libicu-dev \
    liblua5.2-dev \
    libmaxminddb-dev \
    libpcre3-dev \
    libssl-dev \
    make \
    mariadb-server \
    pkg-config \
    zlib1g-dev 

MariaDB प्रारंभ करें और सुनिश्चित करें कि यह रीबूट के बाद वापस आता है।

 sudo systemctl enable --now mariadb
sudo systemctl status mariadb 

Verlihub Linux उपयोगकर्ता बनाएँ

Verlihub को अपने स्वयं के विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलाएँ। हब को ऐसे न चलाएं root.

 sudo adduser --system --group --home /var/lib/verlihub --shell /bin/bash verlihub
sudo install -d -o verlihub -g verlihub /var/lib/verlihub
sudo install -d -o verlihub -g verlihub /var/log/verlihub 

verlihub उपयोगकर्ता के पास केवल रनटाइम फ़ाइलें होनी चाहिए। स्रोत फ़ाइलें नीचे रखें /usr/local/src/verlihub, बायनेरिज़ को नीचे रखें /usr/local, और डेटाबेस प्रशासन कोMariaDB के अंतर्गत रखें। सेवा खाते को लेखन पहुंच की आवश्यकता है /var/lib/verlihub और /var/log/verlihub; इसे सूडो एक्सेस की आवश्यकता नहीं है।

उपयोग sudo पैकेज स्थापित करने, बाइनरी संकलित करने और systemd इकाई बनाने के लिए सर्वर व्यवस्थापक के रूप में। हब प्रक्रिया को स्वयं के रूप में चलाएँ verlihub. यह विभाजन मायने रखता है क्योंकि एक हब DC++ क्लाइंट से अविश्वसनीय सार्वजनिक ट्रैफ़िक स्वीकार करता है।

MariaDB डेटाबेस बनाएं

चलाने से पहले डेटाबेस और उपयोगकर्ता बनाएं vh --install. उदाहरण मान के बजाय वास्तविक पासवर्ड का उपयोग करें।

 sudo mariadb 
 CREATE DATABASE verlihub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'verlihub'@'localhost' IDENTIFIED BY 'change-this-password';
GRANT ALL PRIVILEGES ON verlihub.* TO 'verlihub'@'localhost';
FLUSH PRIVILEGES;
EXIT; 

जांचें कि एप्लिकेशन उपयोगकर्ता लॉग इन कर सकता है।

 mariadb -u verlihub -p verlihub 

Verlihub स्रोत डाउनलोड करें

आधिकारिक GitHub रिपॉजिटरी से बनाएं। स्रोत फ़ाइलें नीचे रखें /usr/local/src इसलिए बिल्ड ट्री हब रनटाइम डेटा से अलग है।

 sudo install -d -o "$USER" -g "$USER" /usr/local/src/verlihub
git clone https://github.com/Verlihub/verlihub.git /usr/local/src/verlihub
cd /usr/local/src/verlihub 

यदि आपको किसी विशिष्ट रिलीज़ या कमिट की आवश्यकता है, तो निर्माण से पहले इसकी जाँच करें। पहली स्थापना के लिए, रिपॉजिटरी नोट्स को पढ़ने के बाद वर्तमान अपस्ट्रीम शाखा का निर्माण करें।

Verlihub को संकलित और स्थापित करें

अपस्ट्रीम इंस्टॉल पथ का उपयोग करता है mkdir build, cmake .., make, make install, और ldconfig. नीचे दिए गए आदेश के अंतर्गत Verlihub स्थापित होता है /usr/local.

 mkdir -p build
cd build
cmake .. \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DUSE_TLS_PROXY=OFF \
    -DUSE_FEARTLS_PROXY=OFF
make -j"$(nproc)"
sudo make install
sudo ldconfig 

TLS प्रॉक्सी विकल्पों को पहले रन के लिए बंद रखें जब तक कि आपके पास पहले से ही प्रॉक्सी निर्भरता, प्रमाणपत्र, फ़ायरवॉल नियम और NMDCS के लिए एक परीक्षण क्लाइंट तैयार न हो।

vh--इंस्टॉल चलाएँ

vh हेल्पर Verlihub कॉन्फ़िगरेशन लिखता है, हब टेबल बनाता या अपडेट करता है, और पहली हब सेटिंग्स संग्रहीत करता है। इसे इस रूप में चलाएँ verlihub Linux उपयोगकर्ता द्वारा बनाई गई फ़ाइलें सेवा खाते से संबंधित हैं।

 sudo -iu verlihub
vh --install 
जादूगर क्षेत्रइस मान का उपयोग करेंकारण
कॉन्फ़िगरेशन फ़ोल्डर /var/lib/verlihub के स्वामित्व में है verlihub सेवा उपयोगकर्ता.
डेटाबेस होस्ट localhost MariaDB उसीUbuntu सर्वर पर चलता है।
डेटाबेस का नाम verlihub ऊपर बनाए गए डेटाबेस से मेल खाता है।
डेटाबेस उपयोगकर्ता verlihub ऊपर बनाए गए MariaDB उपयोगकर्ता से मेल खाता है।
डेटाबेस पासवर्डआपकाMariaDB पासवर्डVerlihub को हब तालिकाओं को पढ़ने और लिखने की अनुमति देता है।
हब पताआपका सार्वजनिक DNS नामयह वह पता है जिसे ग्राहकों और hublists को प्रकाशित करना चाहिए।
हब पोर्ट 411, 4111, या आपका चुना हुआ पोर्टsystemd, फ़ायरवॉल और राउटर नियमों से मेल खाना चाहिए।
मास्टर उपयोगकर्ताआपका ऑपरेटर उपनामहब प्रशासन पहुंच के साथ पहला खाता बनाता है।

यदि विज़ार्ड MariaDB व्यवस्थापक क्रेडेंशियल मांगता है, तो स्थानीय MariaDB व्यवस्थापक खाते का उपयोग करें। कई Ubuntu इंस्टाल पर इसका मतलब है डेटाबेस एडमिनिस्ट्रेशन चलाना sudo mariadb पासवर्ड-आधारित रूट लॉगिन के बजाय।

अग्रभूमि में हब का परीक्षण करें

systemd बनाने से पहले, टर्मिनल से एक बार हब शुरू करें और आउटपुट देखें।

 vh --run /var/lib/verlihub 

यदि संभव हो तो दूसरा टर्मिनल खोलें और किसी अन्य मशीन से पोर्ट का परीक्षण करें। अग्रभूमि प्रक्रिया को रोकें Ctrl+C हब साफ-सुथरा शुरू होने के बाद।

सुडो के बिना पोर्ट 411 चलाएँ

Linux सामान्यतः निम्न पोर्ट आरक्षित रखता है 1024 विशेषाधिकार प्राप्त प्रक्रियाओं के लिए. Verlihub को प्रारंभ करके इसका समाधान न करें sudo vh --run. सेवा को केवल वह बाइंड क्षमता प्रदान करें जिसकी उसे आवश्यकता है।

नीचे दी गई systemd इकाई का उपयोग किया जाता है AmbientCapabilities=CAP_NET_BIND_SERVICE और CapabilityBoundingSet=CAP_NET_BIND_SERVICE. वह देता है verlihub उपयोगकर्ता बाइंड 411/tcp जबकि प्रक्रिया अभी भी रूट विशेषाधिकारों के बिना चलती है। यदि तुम प्रयोग करते हो 4111/tcp, आप उन दो क्षमता रेखाओं को हटा सकते हैं।

वैश्विक sysctl से बचें net.ipv4.ip_unprivileged_port_start=0 इस नौकरी के लिए. यह सर्वर पर प्रत्येक प्रक्रिया के लिए लो-पोर्ट नीति को बदलता है। टालना setcap Verlihub बाइनरी पर जब तक आप अपग्रेड को पूरी तरह से नियंत्रित नहीं करते, क्योंकि पैकेज या स्रोत इंस्टॉल फ़ाइल को प्रतिस्थापित कर सकते हैं और क्षमता को गिरा सकते हैं।

एक systemd सेवा बनाएँ

एक सेवा फ़ाइल बनाएं ताकिUbuntu बूट के बाद Verlihub प्रारंभ करे, क्रैश के बाद इसे पुनरारंभ करे, और रनटाइम उपयोगकर्ता को हब फ़ाइलों तक सीमित रखे।

 sudo tee /etc/systemd/system/verlihub.service >/dev/null <<'EOF'
[Unit]
Description=Verlihub NMDC hub server
After=network-online.target mariadb.service
Wants=network-online.target

[Service]
Type=simple
User=verlihub
Group=verlihub
WorkingDirectory=/var/lib/verlihub
ExecStart=/usr/local/bin/vh --run /var/lib/verlihub
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
ReadWritePaths=/var/lib/verlihub /var/log/verlihub
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF 
 sudo systemctl daemon-reload
sudo systemctl enable --now verlihub
sudo systemctl status verlihub
journalctl -u verlihub -f 

हब पोर्ट खोलें

यदिUFW सक्षम है, तो आपके द्वारा कॉन्फ़िगर किया गया हब पोर्ट खोलें। अपनेVPS प्रदाता के फ़ायरवॉल पैनल की भी जाँच करें।

 sudo ufw allow 411/tcp comment 'Verlihub NMDC'
# Or, if you configured 4111 instead:
sudo ufw allow 4111/tcp comment 'Verlihub NMDC alternate'
sudo ufw status numbered 

होम सर्वर के लिए, राउटर पर उसी टीसीपी पोर्ट कोUbuntu मशीन पर अग्रेषित करें।NMDCS के लिए, TLS के कॉन्फ़िगर और परीक्षण के बाद ही सुरक्षित पोर्ट जोड़ें।

इंस्टॉल सत्यापित करें

जाँच करनाआज्ञाकिसकी तलाश है
सेवा अवस्था systemctl status verlihub active (running).
हब लॉग journalctl -u verlihub -n 100 कोई डेटाबेस लॉगिन त्रुटियाँ या पोर्ट बाइंड त्रुटियाँ नहीं।
हब स्थिति sudo -iu verlihub vh --status /var/lib/verlihub सहायक हब कॉन्फ़िगरेशन को पढ़ सकता है।
सेवा उपयोगकर्ता systemctl show verlihub -p User -p Group -p NoNewPrivileges सेवा रिपोर्ट करती है User=verlihub और NoNewPrivileges=yes.
निम्न-पोर्ट क्षमता systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet CAP_NET_BIND_SERVICE जब हब सुनता है तब मौजूद रहता है 411/tcp.
हब पोर्ट ss -ltnp | grep -E ':411|:4111' कॉन्फ़िगर पोर्ट पर एक लिसनिंग टीसीपी सॉकेट।
डेटाबेस बैकअप mariadb-dump -u verlihub -p verlihub > verlihub.sql आपके प्लगइन बदलने या अपग्रेड करने से पहले एक डंप फ़ाइल मौजूद होती है।

एक सार्वजनिक केंद्र के लिए मेज़बानी शिष्टाचार

  • एक पहुंच योग्य पता प्रकाशित करें. DNS नाम और पोर्ट का उपयोग करें जिसे ग्राहकों को पसंदीदा और hublists में रखना चाहिए। अस्थायी आईपी, डेड रीडायरेक्ट या एक ही हब के लिए कई नाम तब तक सबमिट न करें जब तक कि वे अलग-अलग प्रोटोकॉल पेश न करें।
  • MOTD को उपयोगी रखें। हब पता, उपलब्ध होने पर सुरक्षित पता, नियम, पंजीकरण आदेश, ऑपरेटर संपर्क और सहायता साइट सूचीबद्ध करें। उपयोगकर्ताओं को यह अनुमान लगाने की आवश्यकता नहीं होनी चाहिए कि पंजीकरण कैसे करें या हब का मालिक कौन है।
  • नकली हब आँकड़े न बनाएं। सार्वजनिक hublists तब सबसे अच्छा काम करता है जब उपयोगकर्ता, शेयर, प्रोटोकॉल, सॉफ़्टवेयर और विषय वास्तविक हब स्थिति से मेल खाते हैं।
  • लॉग को निजी रखें और घुमाएँ। लॉग दुरुपयोग से निपटने और समस्या निवारण के लिए हैं। सार्वजनिक पृष्ठों पर उपयोगकर्ता आईपी, निजी संदेश या पंजीकरण डेटा प्रकाशित न करें। पहले व्यस्त सप्ताह से पहले लॉग रोटेशन कॉन्फ़िगर करें।
  • मेज़बान को पैच करें. Ubuntu सुरक्षा अद्यतन लागू करें, MariaDB को समर्थित रखें, और उत्पादन बायनेरिज़ को बदलने से पहले डेटाबेस कॉपी पर Verlihub अपग्रेड का परीक्षण करें।
  • उजागर बंदरगाहों को सीमित करें। हब पोर्ट और किसी भी परीक्षण किए गए सुरक्षित हब पोर्ट को सार्वजनिक रूप से उजागर करें।MariaDB को निजी रखें. जब आपका प्रदाता इसका समर्थन करता है तो एसएसएच को प्रशासक आईपी तक सीमित रखें।
  • सादे नियम निर्धारित करें. बताएं कि क्या प्रतिबंधित है, ऑपरेटर स्पैम या अवैध सामग्री को कैसे संभालते हैं, और खोज या चैट में बाढ़ लाने वाले बॉट्स का क्या होता है।
  • प्रयोगों से पहले बैकअप लें. बचाना /var/lib/verlihub और प्लगइन्स, Lua स्क्रिप्ट, लोकेल सेटिंग्स, या क्लास अनुमतियाँ बदलने से पहलेMariaDB डेटाबेस।

अपग्रेड और बैकअप रूटीन

डेटाबेस का बैकअप लें और /var/lib/verlihub बायनेरिज़ को बदलने से पहले.

 sudo -iu verlihub tar czf /tmp/verlihub-files-$(date +%F).tar.gz /var/lib/verlihub
mariadb-dump -u verlihub -p verlihub > verlihub-db-$(date +%F).sql
cd /usr/local/src/verlihub
git pull
cd build
cmake ..
make -j"$(nproc)"
sudo systemctl stop verlihub
sudo make install
sudo ldconfig
sudo systemctl start verlihub 

किसी प्रोडक्शन हब को अपग्रेड करने से पहले अपस्ट्रीम रिलीज़ नोट्स पढ़ें। यदि तालिका लेआउट बदलता है, तो पहले डेटाबेस की एक प्रति पर अपग्रेड का परीक्षण करें।

सामान्य समस्या

  • vh --install MariaDB से कनेक्ट नहीं हो सकता। डेटाबेस नाम, उपयोगकर्ता, पासवर्ड और क्याMariaDB स्थानीय रूप से सुन रहा है, इसकी जाँच करें।
  • सेवा प्रारंभ होती है और समाप्त हो जाती है. पढ़ना journalctl -u verlihub -n 100. अधिकांश प्रथम-रन विफलताएँ डेटाबेस क्रेडेंशियल, अनुपलब्ध कॉन्फ़िगरेशन फ़ाइलें, या पहले से उपयोग में आने वाला पोर्ट हैं।
  • ग्राहकों का समय समाप्त. UFW, VPS फ़ायरवॉल, NAT पोर्ट फ़ॉरवर्डिंग और Verlihub श्रवण पोर्ट की जाँच करें।
  • पोर्ट 411 विफल रहता है verlihub उपयोगकर्ता. systemd क्षमता रेखाओं की जाँच करें, फिर चलाएँ sudo systemctl daemon-reload और sudo systemctl restart verlihub. हब को सुडो से शुरू न करें।
  • चैट टेक्स्ट विकृत है. अपने समुदाय द्वारा उपयोग किए जाने वाले हब लोकेल, डेटाबेस चारसेट और क्लाइंट एन्कोडिंग का मिलान करें।
  • NMDCS अभी उपलब्ध नहीं है. समर्थित TLS प्रॉक्सी पथ को अलग से बनाएं और कॉन्फ़िगर करें। सुरक्षित हब एक्सेस जोड़ने से पहले सादाNMDC को काम करना चाहिए।