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 gebruiken4111/tcpom 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
.envbestand. 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:
| Tovenaarsveld | Waarde om te gebruiken | Waarom |
|---|---|---|
| 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 wachtwoord | Jouw 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-host | Uw openbare DNS-naam | Dit 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
| Taak | Commando | Opmerkingen |
|---|---|---|
| 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_portwaarde in Verlihub. - De wizard kan geen verbinding maken met MySQL. Gebruik
dbals de hostnaam vanuit de Verlihub container. Niet gebruikenlocalhosttenzij MariaDB in dezelfde container draait. - De hub verliest instellingen na het opnieuw opbouwen. Bevestig de
verlihub-configvolume 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.