Ce construiește acest ghid
Acest ghid creează o instalare Verlihub bazată pe Docker de la oficial Verlihub/verlihub arborele sursă. Containerul compilează Verlihub cu CMake, rulează instalat vh helper, stochează fișierele hub sub /var/lib/verlihub și utilizează un container separat MariaDB pentru baza de date Verlihub.
Depozitul din amonte oferă în prezent cod sursă, instrucțiuni de construire CMake, note de instalare și vh script de management. Nu livrează o stivă Docker Compose gata în rădăcina depozitului, așa că cea mai sigură configurare Docker este să vă construiți propria imagine din sursa oficială și să păstrați starea bazei de date în volume numite.
Înainte de a începe
- Instalați Docker Engine și Docker Compose pe gazdă.
- Alegeți numele de gazdă a hub-ului public înainte de a rula vrăjitorul Verlihub. Exemplu:
hub.example.org. - Deschideți portul hub de pe paravanul de protecție gazdă. NMDC clasic este utilizat în mod obișnuit
411/tcp; multe implementări de containere folosesc4111/tcppentru a evita porturile privilegiate joase. - Decideți unde aparțin datele persistente. Exemplele de mai jos folosesc volume Docker denumite pentru configurația MariaDB și Verlihub.
- Păstrați parolele bazei de date într-un mod privat
.envfişier. Nu trimiteți acel fișier în Git.
Creați directorul de proiect Docker
Creați un director pentru fișierele de compilare. Directorul poate locui oriunde pe gazda Docker.
mkdir -p verlihub-docker
cd verlihub-docker
touch Dockerfile docker-compose.yml .env
chmod 600 .env
Adăugați valorile bazei de date la .env. Folosește-ți propriile parole.
MARIADB_ROOT_PASSWORD=change-root-password
MARIADB_DATABASE=verlihub
MARIADB_USER=verlihub
MARIADB_PASSWORD=change-hub-password
Creați fișierul Verlihub Docker
Notele oficiale de instalare listează bibliotecile client GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB și opțional Lua ca dependențe importante ale versiunii. Fișierul Docker de mai jos utilizează o etapă de compilare pentru compilatoare și o etapă de rulare mai mică pentru hub-ul instalat.
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"]
Permite -DUSE_TLS_PROXY=ON numai atunci când construiți și configurați și dependența de proxy TLS cerută de filiala dvs. Verlihub. Nu activați steaguri TLS și presupuneți că NMDCS funcționează fără certificate, fișiere binare proxy și reguli de firewall testate.
Creați docker-compose.yml
Acest fișier Compose pornește MariaDB și containerul Verlihub într-o rețea privată Docker. Mapează portul gazdă 4111 spre port container 4111. Schimbați portul dacă hub-ul dvs. va asculta pe o altă valoare.
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:
Construiți Imaginea
docker compose build
docker compose up -d db
Așteptați până când MariaDB este sănătos înainte de a rula vrăjitorul de instalare Verlihub.
docker compose ps
docker compose logs -f db
Rulați asistentul de instalare Verlihub
The vh --install Ajutorul este interactiv. Rulați-l o dată, răspundeți la întrebările bazei de date, apoi salvați configurația generată în volumul Verlihub montat.
docker compose run --rm verlihub bash
vh --install
Utilizați aceste valori în vrăjitor când solicită acces la baza de date:
| Câmpul expertului | Valoare de utilizat | De ce |
|---|---|---|
| Numele bazei de date | verlihub sau dvs MARIADB_DATABASE | Se potrivește cu baza de date MariaDB creată de Compose. |
| utilizator MySQL | verlihub sau dvs MARIADB_USER | Se potrivește cu utilizatorul bazei de date a aplicației. |
| parola MySQL | Dvs MARIADB_PASSWORD | Permite Verlihub să creeze și să citească tabele hub. |
| MySQL nume de gazdă | db | db este numele serviciului Compose și se rezolvă în interiorul rețelei Docker. |
| Dosarul de configurare | /var/lib/verlihub | Această cale este susținută de verlihub-config volum. |
| Port hub | 4111 | Se potrivește cu maparea portului Compuse prezentată mai sus. |
| Gazdă hub | Numele dvs. DNS public | Aceasta este adresa utilizatorilor și hublists ar trebui să o publice. |
Dacă vrăjitorul solicită acreditările de administrator MySQL, utilizați root şi MARIADB_ROOT_PASSWORD din .env. Oficialul vh scriptul poate crea baza de date, acorda permisiuni, crea tabele, scrie dbconfig, înregistrați utilizatorul principal și scrieți setările inițiale ale hub-ului.
Porniți Hub-ul
docker compose up -d
docker compose logs -f verlihub
După pornire, testați portul public din afara gazdei Docker. Dacă firewall-ul gazdă sau firewall-ul furnizorului blochează portul, containerul poate fi sănătos, în timp ce clienții DC++ încă nu se pot conecta.
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
Operațiuni zilnice
| Sarcină | Comanda | Note |
|---|---|---|
| Opriți stiva | docker compose down | Oprește containerele păstrând în același timp volumele numite. |
| Reporniți hub-ul | docker compose restart verlihub | Utilizați după modificări simple de configurare. |
| Deschide o coajă | docker compose exec verlihub bash | Utilizați pentru vh comenzi și verificări în jurnal. |
| Faceți backup pentru MariaDB | docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql | Rulați înainte de upgrade-uri și modificări de schemă. |
| Faceți copii de rezervă ale fișierelor hub | docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . | Capturi dbconfig, scripturi, pluginuri, jurnale și fișiere hub local. |
Actualizați Verlihub mai târziu
Mai întâi faceți o copie de rezervă a bazei de date și a volumului de configurare. Apoi reconstruiți imaginea din cea mai recentă sursă oficială și reporniți hub-ul.
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
Dacă o nouă ediție Verlihub modifică tabelele bazei de date, citiți notele de ediție din amonte înainte de a înlocui un hub de producție. Păstrați o copie de rezervă testată care poate fi restaurată fără a scoate imagini noi de pe internet.
Probleme comune
- Hubul pornește, dar clienții nu se pot conecta. Verificați maparea portului Compuse, firewall-ul gazdei, firewall-ul furnizorului și
listen_portvaloare în Verlihub. - Expertul nu se poate conecta la MySQL. Utilizare
dbca nume de gazdă din interiorul containerului Verlihub. Nu utilizațilocalhostcu excepția cazului în care MariaDB rulează în același container. - Hub-ul pierde setările după reconstrucție. Confirmați
verlihub-configvolumul este montat la/var/lib/verlihub. - Personajele arată greșit în chat. Setați același set de caractere al bazei de date și aceeași localitate a hub-ului pe care le folosește comunitatea dvs., apoi reporniți hub-ul.
- NMDCS nu funcționează încă. Verlihub TLS Suportul proxy necesită versiunea proxy potrivită, certificate, porturi și testare client. Obțineți mai întâi stabilul simplu NMDC.