Creato: 2026/06/30 13:24:48 America/Chicago
Da: admin

Cosa costruisce questa guida

Questa guida crea un'installazione Verlihub basata su Docker dal funzionario Verlihub/verlihub albero delle fonti. Il contenitore compila Verlihub con CMake, esegue il file installato vh helper, memorizza i file hub in /var/lib/verlihub e utilizza un contenitore MariaDB separato per il database Verlihub.

Il repository upstream attualmente fornisce il codice sorgente, le istruzioni di compilazione CMake, le note di installazione e il file vh copione di gestione. Non fornisce uno stack Docker Compose pronto nella radice del repository, quindi la configurazione Docker più sicura consiste nel creare la propria immagine dalla fonte ufficiale e mantenere lo stato del database in volumi denominati.

Prima di iniziare

  • Installa Docker Engine e Docker Compose sull'host.
  • Scegliere il nome host dell'hub pubblico prima di eseguire la procedura guidata Verlihub. Esempio: hub.example.org.
  • Aprire la porta dell'hub sul firewall host. Il classico NMDC utilizza comunemente 411/tcp; utilizzano molte distribuzioni di contenitori 4111/tcp per evitare porti bassi privilegiati.
  • Decidi dove appartengono i dati persistenti. Gli esempi seguenti utilizzano volumi denominati Docker per la configurazione MariaDB e Verlihub.
  • Mantieni le password del database in un luogo privato .env file. Non impegnare quel file su Git.

Creare la directory del progetto Docker

Crea una directory per i file di build. La directory può trovarsi ovunque sull'host Docker.

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

Aggiungi valori del database a .env. Usa le tue password.

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

Creare il file Verlihub Docker

Le note di installazione ufficiali elencano le librerie client GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB e Lua opzionale come importanti dipendenze di build. Il file Docker riportato di seguito utilizza una fase di compilazione per i compilatori e una fase di runtime più piccola per l'hub installato.

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

Abilitare -DUSE_TLS_PROXY=ON solo quando crei e configuri anche la dipendenza proxy TLS richiesta dal tuo ramo Verlihub. Non attivare i flag TLS e presupporre che NMDCS funzioni senza certificati, file binari proxy e regole firewall testate.

Crea docker-compose.yml

Questo file di composizione avvia MariaDB e il contenitore Verlihub su una rete privata Docker. Mappa la porta host 4111 al porto container 4111. Cambia la porta se il tuo hub ascolterà su un valore diverso.

 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: 

Costruisci l'immagine

 docker compose build
docker compose up -d db 

Attendere finché MariaDB non è integro prima di eseguire la procedura guidata di installazione Verlihub.

 docker compose ps
docker compose logs -f db 

Eseguire la procedura guidata di installazione Verlihub

IL vh --install l'aiutante è interattivo. Eseguilo una volta, rispondi alle domande del database, quindi salva la configurazione generata nel volume Verlihub montato.

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

Utilizza questi valori nella procedura guidata quando richiede l'accesso al database:

Campo del magoValore da utilizzarePerché
Nome della banca dati verlihub o il tuo MARIADB_DATABASE Corrisponde al database MariaDB creato da Compose.
Utente MySQL verlihub o il tuo MARIADB_USER Corrisponde all'utente del database dell'applicazione.
Password MySQLTuo MARIADB_PASSWORD Consente a Verlihub di creare e leggere tabelle hub.
Nome host MySQL db db è il nome del servizio Compose e si risolve all'interno della rete Docker.
Cartella di configurazione /var/lib/verlihub Questo percorso è supportato da verlihub-config volume.
Porta dell'hub 4111 Corrisponde alla mappatura della porta Compose mostrata sopra.
Ospite dell'hubIl tuo nome DNS pubblicoQuesto è l'indirizzo che gli utenti e hublists dovrebbero pubblicare.

Se la procedura guidata richiede le credenziali di amministratore MySQL, utilizzare root E MARIADB_ROOT_PASSWORD da .env. Il funzionario vh lo script può creare il database, concedere autorizzazioni, creare tabelle, scrivere dbconfig, registrare l'utente master e scrivere le impostazioni iniziali dell'hub.

Avvia l'Hub

 docker compose up -d
docker compose logs -f verlihub 

Dopo l'avvio, testare la porta pubblica dall'esterno dell'host Docker. Se il firewall dell'host o del provider blocca la porta, il contenitore può essere integro mentre i client DC++ non riescono ancora a connettersi.

 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 

Operazioni quotidiane

CompitoComandoNote
Ferma la pila docker compose down Arresta i contenitori mantenendo i volumi denominati.
Riavviare l'hub docker compose restart verlihub Utilizzare dopo semplici modifiche alla configurazione.
Apri una conchiglia docker compose exec verlihub bash Utilizzare per vh comandi e controlli del registro.
Eseguire il backup di MariaDB docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql Esegui prima degli aggiornamenti e delle modifiche allo schema.
Eseguire il backup dei file dell'hub docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . Cattura dbconfig, script, plug-in, log e file dell'hub locale.

Aggiorna Verlihub successivamente

Eseguire prima il backup del database e del volume di configurazione. Quindi ricostruisci l'immagine dall'ultima fonte ufficiale e riavvia l'hub.

 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 

Se una nuova versione Verlihub modifica le tabelle del database, leggere le note sulla versione upstream prima di sostituire un hub di produzione. Conserva un backup testato che può essere ripristinato senza estrarre nuove immagini da Internet.

Problemi comuni

  • L'hub si avvia, ma i client non riescono a connettersi. Controlla la mappatura delle porte di Compose, il firewall dell'host, il firewall del provider e il file listen_port valore in Verlihub.
  • La procedura guidata non può connettersi a MySQL. Utilizzo db come nome host dall'interno del contenitore Verlihub. Non utilizzare localhost a meno che MariaDB non venga eseguito nello stesso contenitore.
  • L'hub perde le impostazioni dopo la ricostruzione. Conferma il verlihub-config il volume è montato su /var/lib/verlihub.
  • I caratteri sembrano sbagliati nella chat. Imposta lo stesso set di caratteri del database e le stesse impostazioni locali dell'hub utilizzate dalla tua comunità, quindi riavvia l'hub.
  • NMDCS non funziona ancora. Il supporto proxy Verlihub TLS richiede build proxy, certificati, porte e test client corrispondenti. Ottieni prima il semplice NMDC stabile.