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

यह मार्गदर्शिका क्या बनाती है

यह मार्गदर्शिका आधिकारिक से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_port Verlihub में मान.
  • विज़ार्ड MySQL से कनेक्ट नहीं हो सकता. उपयोग db Verlihub कंटेनर के अंदर से होस्टनाम के रूप में। उपयोग नहीं करो localhost जब तक किMariaDB एक ही कंटेनर में न चले।
  • पुनर्निर्माण के बाद हब सेटिंग्स खो देता है। पुष्टि verlihub-config वॉल्यूम पर माउंट किया गया है /var/lib/verlihub.
  • चैट में अक्षर गलत दिखते हैं. वही डेटाबेस वर्णसेट और हब लोकेल सेट करें जिसका उपयोग आपका समुदाय करता है, फिर हब को पुनरारंभ करें।
  • NMDCS अभी तक काम नहीं करता है. Verlihub TLS प्रॉक्सी समर्थन के लिए मिलान प्रॉक्सी बिल्ड, प्रमाणपत्र, पोर्ट और क्लाइंट परीक्षण की आवश्यकता होती है। पहले सादाNMDC स्थिर प्राप्त करें।