Was dieser Leitfaden aufbaut
Dieses Handbuch erstellt eine Docker-basierte Verlihub-Installation vom Beamten Verlihub/verlihub Quellbaum. Der Container kompiliert Verlihub mit CMake und führt die installierte Datei aus vh Helfer, speichert Hub-Dateien unter /var/lib/verlihub und verwendet einen separaten MariaDB-Container für die Verlihub-Datenbank.
Das Upstream-Repository stellt derzeit Quellcode, CMake-Build-Anweisungen, Installationshinweise usw. bereit vh Management-Skript. Es wird kein fertiger Docker Compose-Stack im Repository-Stammverzeichnis ausgeliefert, daher besteht die sicherste Docker-Einrichtung darin, ein eigenes Image aus der offiziellen Quelle zu erstellen und den Datenbankstatus in benannten Volumes beizubehalten.
Bevor Sie beginnen
- Installieren Sie Docker Engine und Docker Compose auf dem Host.
- Wählen Sie den Hostnamen des öffentlichen Hubs aus, bevor Sie den Verlihub-Assistenten ausführen. Beispiel:
hub.example.org. - Öffnen Sie den Hub-Port auf der Host-Firewall. Der klassische NMDC wird häufig verwendet
411/tcp; Viele Containerbereitstellungen verwenden4111/tcpum privilegierte Low-Ports zu vermeiden. - Entscheiden Sie, wohin persistente Daten gehören. Die folgenden Beispiele verwenden benannte Docker-Volumes für die Konfiguration von MariaDB und Verlihub.
- Bewahren Sie Datenbankkennwörter vertraulich auf
.envDatei. Übertragen Sie diese Datei nicht an Git.
Erstellen Sie das Projektverzeichnis Docker
Erstellen Sie ein Verzeichnis für die Build-Dateien. Das Verzeichnis kann sich überall auf dem Docker-Host befinden.
mkdir -p verlihub-docker
cd verlihub-docker
touch Dockerfile docker-compose.yml .env
chmod 600 .env
Datenbankwerte hinzufügen zu .env. Verwenden Sie Ihre eigenen Passwörter.
MARIADB_ROOT_PASSWORD=change-root-password
MARIADB_DATABASE=verlihub
MARIADB_USER=verlihub
MARIADB_PASSWORD=change-hub-password
Erstellen Sie die Datei Verlihub Docker
In den offiziellen Installationshinweisen werden GCC, CMake, MySQL-Clientbibliotheken, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB und optional Lua als wichtige Build-Abhängigkeiten aufgeführt. Die folgende Docker-Datei verwendet eine Build-Phase für Compiler und eine kleinere Laufzeitphase für den installierten 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"]
Aktivieren -DUSE_TLS_PROXY=ON Nur wenn Sie auch die für Ihren Verlihub-Zweig erforderliche Proxy-Abhängigkeit TLS erstellen und konfigurieren. Aktivieren Sie nicht die TLS-Flags und gehen Sie davon aus, dass NMDCS ohne Zertifikate, Proxy-Binärdateien und getestete Firewall-Regeln funktioniert.
Erstellen Sie docker-compose.yml
Diese Compose-Datei startet MariaDB und den Verlihub-Container in einem privaten Docker-Netzwerk. Es ordnet den Host-Port zu 4111 zum Containerhafen 4111. Ändern Sie den Port, wenn Ihr Hub einen anderen Wert überwacht.
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:
Erstellen Sie das Bild
docker compose build
docker compose up -d db
Warten Sie, bis MariaDB fehlerfrei ist, bevor Sie den Verlihub-Installationsassistenten ausführen.
docker compose ps
docker compose logs -f db
Führen Sie den Verlihub-Installationsassistenten aus
Der vh --install Helfer ist interaktiv. Führen Sie es einmal aus, beantworten Sie die Datenbankfragen und speichern Sie dann die generierte Konfiguration im bereitgestellten Verlihub-Volume.
docker compose run --rm verlihub bash
vh --install
Verwenden Sie diese Werte im Assistenten, wenn er nach Datenbankzugriff fragt:
| Assistentenfeld | Nutzenswert | Warum |
|---|---|---|
| Datenbankname | verlihub oder dein MARIADB_DATABASE | Entspricht der von Compose erstellten Datenbank MariaDB. |
| MySQL Benutzer | verlihub oder dein MARIADB_USER | Entspricht dem Benutzer der Anwendungsdatenbank. |
| MySQL Passwort | Dein MARIADB_PASSWORD | Ermöglicht Verlihub das Erstellen und Lesen von Hub-Tabellen. |
| MySQL Hostname | db | db ist der Compose-Dienstname und wird innerhalb des Docker-Netzwerks aufgelöst. |
| Konfigurationsordner | /var/lib/verlihub | Dieser Weg wird durch die unterstützt verlihub-config Volumen. |
| Hub-Port | 4111 | Entspricht der oben gezeigten Compose-Portzuordnung. |
| Hub-Host | Ihr öffentlicher DNS-Name | Dies ist die Adresse, die Benutzer und hublists veröffentlichen sollten. |
Wenn der Assistent nach MySQL-Administratoranmeldeinformationen fragt, verwenden Sie root Und MARIADB_ROOT_PASSWORD aus .env. Der Beamte vh Das Skript kann die Datenbank erstellen, Berechtigungen erteilen, Tabellen erstellen und schreiben dbconfig, registrieren Sie den Hauptbenutzer und schreiben Sie die anfänglichen Hub-Einstellungen.
Starten Sie den Hub
docker compose up -d
docker compose logs -f verlihub
Testen Sie nach dem Start den öffentlichen Port von außerhalb des Docker-Hosts. Wenn die Host-Firewall oder die Provider-Firewall den Port blockiert, ist der Container möglicherweise fehlerfrei, während DC++-Clients immer noch keine Verbindung herstellen können.
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
Täglicher Betrieb
| Aufgabe | Befehl | Notizen |
|---|---|---|
| Stoppen Sie den Stapel | docker compose down | Stoppt Container und behält benannte Volumes bei. |
| Starten Sie den Hub neu | docker compose restart verlihub | Verwendung nach einfachen Konfigurationsänderungen. |
| Öffnen Sie eine Shell | docker compose exec verlihub bash | Verwendung für vh Befehle und Protokollprüfungen. |
| Sichern Sie MariaDB | docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql | Vor Upgrades und Schemaänderungen ausführen. |
| Hub-Dateien sichern | docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . | Aufnahmen dbconfig, Skripte, Plugins, Protokolle und lokale Hub-Dateien. |
Aktualisieren Sie Verlihub später
Sichern Sie zunächst die Datenbank und das Konfigurationsvolume. Erstellen Sie dann das Image aus der neuesten offiziellen Quelle neu und starten Sie den Hub neu.
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
Wenn eine neue Verlihub-Version Datenbanktabellen ändert, lesen Sie die Versionshinweise der Originalautoren, bevor Sie einen Produktionshub ersetzen. Bewahren Sie ein getestetes Backup auf, das wiederhergestellt werden kann, ohne neue Images aus dem Internet abzurufen.
Häufige Probleme
- Der Hub startet, aber Clients können keine Verbindung herstellen. Überprüfen Sie die Compose-Portzuordnung, die Host-Firewall, die Provider-Firewall und die
listen_portWert in Verlihub. - Der Assistent kann keine Verbindung zu MySQL herstellen. Verwenden
dbals Hostnamen aus dem Verlihub-Container. Nicht verwendenlocalhostes sei denn, MariaDB wird im selben Container ausgeführt. - Der Hub verliert nach der Neuerstellung seine Einstellungen. Bestätigen Sie das
verlihub-configVolumen ist gemountet bei/var/lib/verlihub. - Charaktere sehen im Chat falsch aus. Legen Sie denselben Datenbankzeichensatz und dasselbe Hub-Gebietsschema fest, die Ihre Community verwendet, und starten Sie dann den Hub neu.
- NMDCS funktioniert noch nicht. Verlihub TLS-Proxy-Unterstützung erfordert den passenden Proxy-Build, Zertifikate, Ports und Client-Tests. Holen Sie sich zuerst die stabile Version von NMDC.