Utworzony: 2026/06/30 13:24:48 America/Chicago
Przez: admin

Co buduje ten przewodnik

Ten przewodnik tworzy oficjalną instalację Verlihub opartą na Docker Verlihub/verlihub drzewo źródłowe. Kontener kompiluje Verlihub z CMake, uruchamia zainstalowany vh pomocnik, przechowuje pliki centrum w pliku /var/lib/verlihub i wykorzystuje oddzielny kontener MariaDB dla bazy danych Verlihub.

Repozytorium nadrzędne zawiera obecnie kod źródłowy, instrukcje kompilacji CMake, uwagi dotyczące instalacji i plik vh skrypt zarządzający. Nie dostarcza gotowego stosu Docker Compose w katalogu głównym repozytorium, więc najbezpieczniejszą konfiguracją Docker jest zbudowanie własnego obrazu z oficjalnego źródła i utrzymywanie stanu bazy danych w nazwanych woluminach.

Zanim zaczniesz

  • Zainstaluj silnik Docker i Docker Compose na hoście.
  • Wybierz nazwę hosta centrum publicznego przed uruchomieniem kreatora Verlihub. Przykład: hub.example.org.
  • Otwórz port koncentratora w zaporze hosta. Powszechnie używany klasyczny NMDC 411/tcp; korzysta z wielu wdrożeń kontenerów 4111/tcp aby uniknąć uprzywilejowanych niskich portów.
  • Zdecyduj, gdzie powinny znajdować się trwałe dane. W poniższych przykładach zastosowano woluminy nazwane Docker dla konfiguracji MariaDB i Verlihub.
  • Trzymaj hasła do baz danych w tajemnicy .env plik. Nie udostępniaj tego pliku Gitowi.

Utwórz katalog projektu Docker

Utwórz jeden katalog dla plików kompilacji. Katalog może znajdować się w dowolnym miejscu na hoście Docker.

 mkdir -p verlihub-docker
cd verlihub-docker
touch Dockerfile docker-compose.yml .env
chmod 600 .env 

Dodaj wartości bazy danych do .env. Używaj własnych haseł.

 MARIADB_ROOT_PASSWORD=change-root-password
MARIADB_DATABASE=verlihub
MARIADB_USER=verlihub
MARIADB_PASSWORD=change-hub-password 

Utwórz plik Verlihub Docker

Oficjalne uwagi dotyczące instalacji wymieniają biblioteki klienckie GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB i opcjonalne Lua jako ważne zależności kompilacji. Poniższy plik Docker wykorzystuje etap kompilacji dla kompilatorów i mniejszy etap środowiska wykonawczego dla zainstalowanego koncentratora.

 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"] 

Włączać -DUSE_TLS_PROXY=ON tylko wtedy, gdy zbudujesz i skonfigurujesz zależność proxy TLS wymaganą przez gałąź Verlihub. Nie włączaj flag TLS i załóż, że NMDCS działa bez certyfikatów, plików binarnych proxy i przetestowanych reguł zapory.

Utwórz plik docker-compose.yml

Ten plik Compose uruchamia MariaDB i kontener Verlihub w jednej prywatnej sieci Docker. Mapuje port hosta 4111 do portu kontenerowego 4111. Zmień port, jeśli koncentrator będzie nasłuchiwał na innej wartości.

 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: 

Zbuduj obraz

 docker compose build
docker compose up -d db 

Przed uruchomieniem kreatora instalacji Verlihub poczekaj, aż MariaDB będzie w dobrej kondycji.

 docker compose ps
docker compose logs -f db 

Uruchom Kreatora instalacji Verlihub

The vh --install pomocnik jest interaktywny. Uruchom go raz, odpowiedz na pytania bazy danych, a następnie zapisz wygenerowaną konfigurację w zamontowanym wolumenie Verlihub.

 docker compose run --rm verlihub bash
vh --install 

Użyj tych wartości w kreatorze, gdy prosi o dostęp do bazy danych:

Pole CzarodziejaWartość do wykorzystaniaDlaczego
Nazwa bazy danych verlihub lub twój MARIADB_DATABASE Pasuje do bazy danych MariaDB utworzonej przez Compose.
Użytkownik MySQL verlihub lub twój MARIADB_USER Pasuje do użytkownika bazy danych aplikacji.
Hasło MySQLTwój MARIADB_PASSWORD Umożliwia Verlihub tworzenie i odczytywanie tabel centralnych.
Nazwa hosta MySQL db db jest nazwą usługi Compose i jest rozpoznawana w sieci Docker.
Folder konfiguracyjny /var/lib/verlihub Ta ścieżka jest wspierana przez verlihub-config tom.
Port koncentratora 4111 Pasuje do mapowania portów Compose pokazanego powyżej.
Host centrumTwoja publiczna nazwa DNSTo jest adres, który powinni publikować użytkownicy i hublists.

Jeśli kreator poprosi o podanie poświadczeń administratora MySQL, użyj root I MARIADB_ROOT_PASSWORD z .env. Urzędnik vh skrypt może tworzyć bazę danych, nadawać uprawnienia, tworzyć tabele, pisać dbconfig, zarejestruj użytkownika głównego i zapisz początkowe ustawienia koncentratora.

Uruchom Hub

 docker compose up -d
docker compose logs -f verlihub 

Po uruchomieniu przetestuj port publiczny spoza hosta Docker. Jeśli zapora hosta lub zapora dostawcy blokuje port, kontener może być w dobrej kondycji, a klienci DC++ nadal nie mogą się połączyć.

 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 

Codzienne operacje

ZadanieRozkazNotatki
Zatrzymaj stos docker compose down Zatrzymuje kontenery, zachowując nazwane woluminy.
Uruchom ponownie koncentrator docker compose restart verlihub Użyj po prostych zmianach konfiguracji.
Otwórz skorupę docker compose exec verlihub bash Użyj dla vh polecenia i sprawdzanie dzienników.
Utwórz kopię zapasową MariaDB docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql Uruchom przed aktualizacjami i zmianami schematu.
Utwórz kopię zapasową plików centrum docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . Przechwytuje dbconfig, skrypty, wtyczki, dzienniki i pliki centrum lokalnego.

Zaktualizuj Verlihub później

Najpierw utwórz kopię zapasową bazy danych i woluminu konfiguracyjnego. Następnie odbuduj obraz z najnowszego oficjalnego źródła i uruchom ponownie koncentrator.

 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 

Jeśli nowa wersja Verlihub zmienia tabele bazy danych, przed wymianą centrum produkcyjnego przeczytaj uwagi do wcześniejszej wersji. Zachowaj jedną przetestowaną kopię zapasową, którą można przywrócić bez konieczności pobierania świeżych obrazów z Internetu.

Typowe problemy

  • Koncentrator uruchamia się, ale klienci nie mogą się połączyć. Sprawdź mapowanie portów Compose, zaporę hosta, zaporę dostawcy i listen_port wartość w Verlihub.
  • Kreator nie może połączyć się z MySQL. Używać db jako nazwę hosta z kontenera Verlihub. Nie używać localhost chyba że MariaDB działa w tym samym kontenerze.
  • Koncentrator traci ustawienia po przebudowaniu. Potwierdź verlihub-config głośność jest zamontowana na /var/lib/verlihub.
  • Postacie wyglądają źle na czacie. Ustaw ten sam zestaw znaków bazy danych i ustawienia regionalne centrum, których używa Twoja społeczność, a następnie uruchom ponownie centrum.
  • NMDCS jeszcze nie działa. Obsługa serwera proxy Verlihub TLS wymaga odpowiedniej kompilacji serwera proxy, certyfikatów, portów i testów klienta. Najpierw uzyskaj stabilny NMDC.