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