यह मार्गदर्शिका क्या बनाती है
यह मार्गदर्शिका आधिकारिक सेDocker आधारित Verlihub इंस्टॉलेशन बनाती है Verlihub/verlihub स्रोत वृक्ष. कंटेनर Verlihub कोCMake के साथ संकलित करता है, इंस्टॉल को चलाता है vh हेल्पर, हब फ़ाइलों को नीचे संग्रहीत करता है /var/lib/verlihub, और Verlihub डेटाबेस के लिए एक अलग MariaDB कंटेनर का उपयोग करता है।
अपस्ट्रीम रिपॉजिटरी वर्तमान में स्रोत कोड, CMake निर्माण निर्देश, नोट्स स्थापित करना और प्रदान करता है vh प्रबंधन स्क्रिप्ट. यह रिपॉजिटरी रूट में तैयार Docker Compose स्टैक को शिप नहीं करता है, इसलिए सबसे सुरक्षित Docker सेटअप आधिकारिक स्रोत से अपनी खुद की छवि बनाना और डेटाबेस स्थिति को नामित वॉल्यूम में रखना है।
आपके शुरू करने से पहले
- होस्ट पर Docker इंजन और Docker Compose स्थापित करें।
- Verlihub विज़ार्ड चलाने से पहले सार्वजनिक हब होस्टनाम चुनें। उदाहरण:
hub.example.org. - होस्ट फ़ायरवॉल पर हब पोर्ट खोलें। क्लासिक NMDC आमतौर पर उपयोग करता है
411/tcp; कई कंटेनर परिनियोजन उपयोग करते हैं4111/tcpविशेषाधिकार प्राप्त निम्न बंदरगाहों से बचने के लिए। - तय करें कि लगातार डेटा कहां है। नीचे दिए गए उदाहरण MariaDB और Verlihub कॉन्फ़िगरेशन के लिए नामित Docker वॉल्यूम का उपयोग करते हैं।
- डेटाबेस पासवर्ड को निजी रखें
.envफ़ाइल। उस फ़ाइल को Git के लिए प्रतिबद्ध न करें.
Docker प्रोजेक्ट निर्देशिका बनाएँ
बिल्ड फ़ाइलों के लिए एक निर्देशिका बनाएँ। निर्देशिकाDocker होस्ट पर कहीं भी रह सकती है।
mkdir -p verlihub-docker
cd verlihub-docker
touch Dockerfile docker-compose.yml .env
chmod 600 .env
इसमें डेटाबेस मान जोड़ें .env. अपने स्वयं के पासवर्ड का प्रयोग करें.
MARIADB_ROOT_PASSWORD=change-root-password
MARIADB_DATABASE=verlihub
MARIADB_USER=verlihub
MARIADB_PASSWORD=change-hub-password
Verlihub Docker फ़ाइल बनाएँ
आधिकारिक इंस्टॉल नोट्स में GCC, CMake, MySQL क्लाइंट लाइब्रेरी, ओपनएसएसएल, आईसीयू, मेक, ZLib, PCRE, GetText, MaxMindDB और वैकल्पिक Lua को महत्वपूर्ण बिल्ड निर्भरता के रूप में सूचीबद्ध किया गया है। नीचे दी गई Docker फ़ाइल कंपाइलरों के लिए एक बिल्ड स्टेज और स्थापित हब के लिए एक छोटे रनटाइम स्टेज का उपयोग करती है।
FROM debian:12 AS build
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
cmake \
default-libmysqlclient-dev \
g++ \
gettext \
git \
libasprintf-dev \
libicu-dev \
liblua5.2-dev \
libmaxminddb-dev \
libpcre3-dev \
libssl-dev \
make \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
RUN git clone --depth=1 https://github.com/Verlihub/verlihub.git /src/verlihub
RUN cmake -S /src/verlihub -B /src/verlihub/build \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DUSE_TLS_PROXY=OFF \
-DUSE_FEARTLS_PROXY=OFF \
&& cmake --build /src/verlihub/build -j"$(nproc)" \
&& cmake --install /src/verlihub/build
FROM debian:12
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
bash \
ca-certificates \
default-mysql-client \
gettext \
libicu72 \
liblua5.2-0 \
libmaxminddb0 \
libpcre3 \
libssl3 \
procps \
zlib1g \
&& rm -rf /var/lib/apt/lists/*
COPY --from=build /usr/local /usr/local
RUN ldconfig \
&& useradd -r -m -d /var/lib/verlihub -s /bin/bash verlihub
USER verlihub
WORKDIR /var/lib/verlihub
VOLUME ["/var/lib/verlihub"]
EXPOSE 411 4111 4112
CMD ["bash", "-lc", "vh --run /var/lib/verlihub"]
सक्षम -DUSE_TLS_PROXY=ON केवल तभी जब आप अपनीVerlihub शाखा के लिए आवश्यक TLS प्रॉक्सी निर्भरता भी बनाते और कॉन्फ़िगर करते हैं।TLS फ़्लैग को चालू न करें और मान लें किNMDCS प्रमाणपत्र, प्रॉक्सी बायनेरिज़ और परीक्षण किए गए फ़ायरवॉल नियमों के बिना काम करता है।
docker-compose.yml बनाएं
यह कंपोज़ फ़ाइल MariaDB और Verlihub कंटेनर को एक निजीDocker नेटवर्क पर प्रारंभ करती है। यह होस्ट पोर्ट को मैप करता है 4111 कंटेनर बंदरगाह के लिए 4111. यदि आपका हब किसी भिन्न मान पर सुनेगा तो पोर्ट बदलें।
services:
db:
image: mariadb:10.11
restart: unless-stopped
env_file: .env
environment:
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
MARIADB_DATABASE: ${MARIADB_DATABASE}
MARIADB_USER: ${MARIADB_USER}
MARIADB_PASSWORD: ${MARIADB_PASSWORD}
volumes:
- verlihub-db:/var/lib/mysql
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "127.0.0.1", "-u", "root", "-p${MARIADB_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 10
verlihub:
build: .
restart: unless-stopped
env_file: .env
depends_on:
db:
condition: service_healthy
ports:
- "4111:4111/tcp"
volumes:
- verlihub-config:/var/lib/verlihub
command: ["bash", "-lc", "vh --run /var/lib/verlihub"]
volumes:
verlihub-db:
verlihub-config:
छवि बनाएँ
docker compose build
docker compose up -d db
Verlihub इंस्टाल विज़ार्ड चलाने से पहलेMariaDB के स्वस्थ होने तक प्रतीक्षा करें।
docker compose ps
docker compose logs -f db
Verlihub इंस्टाल विज़ार्ड चलाएँ
vh --install सहायक इंटरैक्टिव है. इसे एक बार चलाएं, डेटाबेस प्रश्नों का उत्तर दें, फिर जेनरेट किए गए कॉन्फ़िगरेशन को माउंटेड Verlihub वॉल्यूम में सहेजें।
docker compose run --rm verlihub bash
vh --install
जब विज़ार्ड डेटाबेस एक्सेस मांगता है तो इन मानों का उपयोग करें:
| जादूगर क्षेत्र | उपयोग करने योग्य मूल्य | क्यों |
|---|---|---|
| डेटाबेस का नाम | verlihub या अपने MARIADB_DATABASE | कंपोज़ द्वारा बनाए गए MariaDB डेटाबेस से मेल खाता है। |
| MySQL उपयोगकर्ता | verlihub या अपने MARIADB_USER | एप्लिकेशन डेटाबेस उपयोगकर्ता से मेल खाता है। |
| MySQL पासवर्ड | आपका MARIADB_PASSWORD | आइए Verlihub हब टेबल बनाएं और पढ़ें। |
| MySQL होस्टनाम | db | db कंपोज़ सेवा नाम है और Docker नेटवर्क के अंदर हल होता है। |
| कॉन्फ़िगरेशन फ़ोल्डर | /var/lib/verlihub | यह पथ द्वारा समर्थित है verlihub-config आयतन। |
| हब पोर्ट | 4111 | ऊपर दिखाए गए कंपोज़ पोर्ट मैपिंग से मेल खाता है। |
| हब होस्ट | आपका सार्वजनिक DNS नाम | यह वह पता है जिसे उपयोगकर्ताओं और hublists को प्रकाशित करना चाहिए। |
यदि विज़ार्ड MySQL व्यवस्थापक क्रेडेंशियल मांगता है, तो उपयोग करें root और MARIADB_ROOT_PASSWORD से .env. अधिकारी vh स्क्रिप्ट डेटाबेस बना सकती है, अनुमतियाँ दे सकती है, टेबल बना सकती है, लिख सकती है dbconfig, मास्टर उपयोगकर्ता को पंजीकृत करें, और प्रारंभिक हब सेटिंग्स लिखें।
हब प्रारंभ करें
docker compose up -d
docker compose logs -f verlihub
स्टार्टअप के बाद, Docker होस्ट के बाहर से सार्वजनिक पोर्ट का परीक्षण करें। यदि होस्ट फ़ायरवॉल या प्रदाता फ़ायरवॉल पोर्ट को ब्लॉक कर देता है, तो कंटेनर स्वस्थ हो सकता है जबकिDC++ क्लाइंट अभी भी कनेक्ट नहीं हो सकते हैं।
docker compose exec verlihub vh --status /var/lib/verlihub
docker compose exec verlihub vh --getconf hub_name /var/lib/verlihub
docker compose exec verlihub vh --getconf listen_port /var/lib/verlihub
दैनिक परिचालन
| काम | आज्ञा | टिप्पणियाँ |
|---|---|---|
| ढेर बंद करो | docker compose down | नामित वॉल्यूम रखते हुए कंटेनरों को रोकता है। |
| हब पुनः प्रारंभ करें | docker compose restart verlihub | सरल कॉन्फ़िगरेशन परिवर्तन के बाद उपयोग करें. |
| एक खोल खोलो | docker compose exec verlihub bash | के लिए उपयोग करें vh आदेश और लॉग जाँच। |
| MariaDB का बैकअप लें | docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql | अपग्रेड और स्कीमा परिवर्तन से पहले चलाएँ। |
| हब फ़ाइलों का बैकअप लें | docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . | कैप्चर dbconfig, स्क्रिप्ट, प्लगइन्स, लॉग और स्थानीय हब फ़ाइलें। |
Verlihub को बाद में अपग्रेड करें
पहले डेटाबेस और कॉन्फ़िगरेशन वॉल्यूम का बैकअप लें। फिर नवीनतम आधिकारिक स्रोत से छवि का पुनर्निर्माण करें और हब को पुनरारंभ करें।
docker compose exec db mariadb-dump -u root -p verlihub > verlihub-before-upgrade.sql
docker compose build --pull --no-cache verlihub
docker compose up -d verlihub
docker compose logs -f verlihub
यदि कोई नयाVerlihub रिलीज़ डेटाबेस तालिकाओं को बदलता है, तो प्रोडक्शन हब को बदलने से पहले अपस्ट्रीम रिलीज़ नोट्स पढ़ें। एक परीक्षणित बैकअप रखें जिसे इंटरनेट से ताज़ा छवियाँ निकाले बिना पुनर्स्थापित किया जा सके।
सामान्य समस्या
- हब प्रारंभ होता है, लेकिन क्लाइंट कनेक्ट नहीं हो पाता. कंपोज़ पोर्ट मैपिंग, होस्ट फ़ायरवॉल, प्रदाता फ़ायरवॉल और की जाँच करें
listen_portVerlihub में मान. - विज़ार्ड MySQL से कनेक्ट नहीं हो सकता. उपयोग
dbVerlihub कंटेनर के अंदर से होस्टनाम के रूप में। उपयोग नहीं करोlocalhostजब तक किMariaDB एक ही कंटेनर में न चले। - पुनर्निर्माण के बाद हब सेटिंग्स खो देता है। पुष्टि
verlihub-configवॉल्यूम पर माउंट किया गया है/var/lib/verlihub. - चैट में अक्षर गलत दिखते हैं. वही डेटाबेस वर्णसेट और हब लोकेल सेट करें जिसका उपयोग आपका समुदाय करता है, फिर हब को पुनरारंभ करें।
- NMDCS अभी तक काम नहीं करता है. Verlihub TLS प्रॉक्सी समर्थन के लिए मिलान प्रॉक्सी बिल्ड, प्रमाणपत्र, पोर्ट और क्लाइंट परीक्षण की आवश्यकता होती है। पहले सादाNMDC स्थिर प्राप्त करें।