Aangemaakt: 2026/06/30 13:24:48 America/Chicago
Door: admin

Wat deze gids opbouwt

Deze handleiding maakt een op Docker gebaseerde Verlihub-installatie van de ambtenaar Verlihub/verlihub bron boom. De container compileert Verlihub met CMake, voert het geïnstalleerde vh helper, slaat hub-bestanden op onder /var/lib/verlihub, en gebruikt een aparte MariaDB container voor de Verlihub database.

De upstream repository biedt momenteel broncode, CMake bouwinstructies, installatieopmerkingen en de vh beheerscript. Er wordt geen kant-en-klare Docker Compose-stack in de root van de repository geleverd, dus de veiligste Docker-installatie is om je eigen image te bouwen vanaf de officiële bron en de databasestatus in benoemde volumes te bewaren.

Voordat u begint

  • Installeer Docker Engine en Docker Compose op de host.
  • Kies de hostnaam van de openbare hub voordat u de wizard Verlihub uitvoert. Voorbeeld: hub.example.org.
  • Open de hubpoort op de hostfirewall. Klassieke NMDC wordt vaak gebruikt 411/tcp; veel containerimplementaties gebruiken 4111/tcp om geprivilegieerde lage poorten te vermijden.
  • Bepaal waar persistente gegevens thuishoren. In de onderstaande voorbeelden worden Docker-volumes gebruikt voor de MariaDB- en Verlihub-configuratie.
  • Bewaar databasewachtwoorden op een privéadres .env bestand. Leg dat bestand niet vast in Git.

Maak de Docker projectdirectory

Maak één map voor de buildbestanden. De directory kan overal op de Docker host voorkomen.

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

Databasewaarden toevoegen aan .env. Gebruik uw eigen wachtwoorden.

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

Maak het Verlihub Docker bestand

De officiële installatie-opmerkingen vermelden GCC, CMake, MySQL clientbibliotheken, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB en optionele Lua als de belangrijke build-afhankelijkheden. Het onderstaande Docker bestand gebruikt een buildfase voor compilers en een kleinere runtimefase voor de geïnstalleerde hub.

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

Inschakelen -DUSE_TLS_PROXY=ON alleen als u ook de TLS proxy-afhankelijkheid bouwt en configureert die vereist is door uw Verlihub branch. Schakel de TLS-vlaggen niet in en ga ervan uit dat NMDCS werkt zonder certificaten, binaire proxybestanden en geteste firewallregels.

Maak docker-compose.yml

Dit Compose-bestand start MariaDB en de Verlihub-container op één privé Docker-netwerk. Het brengt de hostpoort in kaart 4111 naar de containerhaven 4111. Wijzig de poort als uw hub op een andere waarde luistert.

 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: 

Bouw het beeld

 docker compose build
docker compose up -d db 

Wacht tot MariaDB gezond is voordat u de Verlihub installatiewizard uitvoert.

 docker compose ps
docker compose logs -f db 

Voer de Verlihub Installatiewizard uit

De vh --install helper is interactief. Voer het één keer uit, beantwoord de databasevragen en sla vervolgens de gegenereerde configuratie op in het gekoppelde Verlihub volume.

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

Gebruik deze waarden in de wizard wanneer deze om databasetoegang vraagt:

TovenaarsveldWaarde om te gebruikenWaarom
Databasenaam verlihub of jouw MARIADB_DATABASE Komt overeen met de MariaDB-database gemaakt door Compose.
MySQL gebruiker verlihub of jouw MARIADB_USER Komt overeen met de gebruiker van de applicatiedatabase.
MySQL wachtwoordJouw MARIADB_PASSWORD Laat Verlihub hubtabellen maken en lezen.
MySQL hostnaam db db is de naam van de Compose-service en wordt omgezet binnen het Docker-netwerk.
Configuratiemap /var/lib/verlihub Dit pad wordt ondersteund door de verlihub-config volume.
Hub-poort 4111 Komt overeen met de hierboven weergegeven Compose-poorttoewijzing.
Hub-hostUw openbare DNS-naamDit is het adres dat gebruikers en hublists moeten publiceren.

Als de wizard om MySQL beheerdersreferenties vraagt, gebruik dan root En MARIADB_ROOT_PASSWORD van .env. De ambtenaar vh script kan de database maken, machtigingen verlenen, tabellen maken, schrijven dbconfig, registreer de hoofdgebruiker en schrijf de initiële hubinstellingen.

Start de hub

 docker compose up -d
docker compose logs -f verlihub 

Test na het opstarten de openbare poort van buiten de Docker host. Als de hostfirewall of providerfirewall de poort blokkeert, kan de container in orde zijn terwijl DC++-clients nog steeds geen verbinding kunnen maken.

 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 

Dagelijkse operaties

TaakCommandoOpmerkingen
Stop de stapel docker compose down Stopt containers terwijl benoemde volumes behouden blijven.
Start de hub opnieuw op docker compose restart verlihub Gebruik na eenvoudige configuratiewijzigingen.
Open een schelp docker compose exec verlihub bash Gebruik voor vh opdrachten en logcontroles.
Back-up MariaDB docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql Uitvoeren vóór upgrades en schemawijzigingen.
Maak een back-up van hubbestanden docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . Opnames dbconfig, scripts, plug-ins, logs en lokale hubbestanden.

Upgrade Verlihub Later

Maak eerst een back-up van de database en het configuratievolume. Bouw vervolgens de afbeelding opnieuw op vanaf de nieuwste officiële bron en start de hub opnieuw op.

 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 

Als een nieuwe Verlihub-release databasetabellen wijzigt, lees dan de upstream release-opmerkingen voordat u een productiehub vervangt. Bewaar één geteste back-up die kan worden hersteld zonder nieuwe afbeeldingen van internet te halen.

Veelvoorkomende problemen

  • De hub start, maar clients kunnen geen verbinding maken. Controleer de Compose-poorttoewijzing, hostfirewall, providerfirewall en de listen_port waarde in Verlihub.
  • De wizard kan geen verbinding maken met MySQL. Gebruik db als de hostnaam vanuit de Verlihub container. Niet gebruiken localhost tenzij MariaDB in dezelfde container draait.
  • De hub verliest instellingen na het opnieuw opbouwen. Bevestig de verlihub-config volume is gemonteerd op /var/lib/verlihub.
  • Karakters zien er verkeerd uit in de chat. Stel dezelfde databasekarakterset en hub-landinstelling in die uw community gebruikt, en start vervolgens de hub opnieuw op.
  • NMDCS werkt nog niet. Verlihub TLS proxy-ondersteuning heeft de bijbehorende proxy-build, certificaten, poorten en clienttests nodig. Zorg eerst dat het NMDC stabiel is.