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 contenitori4111/tcpper 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
.envfile. 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 mago | Valore da utilizzare | Perché |
|---|---|---|
| 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 MySQL | Tuo 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'hub | Il tuo nome DNS pubblico | Questo è 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
| Compito | Comando | Note |
|---|---|---|
| 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_portvalore in Verlihub. - La procedura guidata non può connettersi a MySQL. Utilizzo
dbcome nome host dall'interno del contenitore Verlihub. Non utilizzarelocalhosta meno che MariaDB non venga eseguito nello stesso contenitore. - L'hub perde le impostazioni dopo la ricostruzione. Conferma il
verlihub-configil 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.