Co buduje ten przewodnik
Ten przewodnik tworzy oficjalną instalację Verlihub opartą na Docker Verlihub/verlihub drzewo źródłowe. Kontener kompiluje Verlihub z CMake, uruchamia zainstalowany vh pomocnik, przechowuje pliki centrum w pliku /var/lib/verlihub i wykorzystuje oddzielny kontener MariaDB dla bazy danych Verlihub.
Repozytorium nadrzędne zawiera obecnie kod źródłowy, instrukcje kompilacji CMake, uwagi dotyczące instalacji i plik vh skrypt zarządzający. Nie dostarcza gotowego stosu Docker Compose w katalogu głównym repozytorium, więc najbezpieczniejszą konfiguracją Docker jest zbudowanie własnego obrazu z oficjalnego źródła i utrzymywanie stanu bazy danych w nazwanych woluminach.
Zanim zaczniesz
- Zainstaluj silnik Docker i Docker Compose na hoście.
- Wybierz nazwę hosta centrum publicznego przed uruchomieniem kreatora Verlihub. Przykład:
hub.example.org. - Otwórz port koncentratora w zaporze hosta. Powszechnie używany klasyczny NMDC
411/tcp; korzysta z wielu wdrożeń kontenerów4111/tcpaby uniknąć uprzywilejowanych niskich portów. - Zdecyduj, gdzie powinny znajdować się trwałe dane. W poniższych przykładach zastosowano woluminy nazwane Docker dla konfiguracji MariaDB i Verlihub.
- Trzymaj hasła do baz danych w tajemnicy
.envplik. Nie udostępniaj tego pliku Gitowi.
Utwórz katalog projektu Docker
Utwórz jeden katalog dla plików kompilacji. Katalog może znajdować się w dowolnym miejscu na hoście Docker.
mkdir -p verlihub-docker
cd verlihub-docker
touch Dockerfile docker-compose.yml .env
chmod 600 .env
Dodaj wartości bazy danych do .env. Używaj własnych haseł.
MARIADB_ROOT_PASSWORD=change-root-password
MARIADB_DATABASE=verlihub
MARIADB_USER=verlihub
MARIADB_PASSWORD=change-hub-password
Utwórz plik Verlihub Docker
Oficjalne uwagi dotyczące instalacji wymieniają biblioteki klienckie GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB i opcjonalne Lua jako ważne zależności kompilacji. Poniższy plik Docker wykorzystuje etap kompilacji dla kompilatorów i mniejszy etap środowiska wykonawczego dla zainstalowanego koncentratora.
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"]
Włączać -DUSE_TLS_PROXY=ON tylko wtedy, gdy zbudujesz i skonfigurujesz zależność proxy TLS wymaganą przez gałąź Verlihub. Nie włączaj flag TLS i załóż, że NMDCS działa bez certyfikatów, plików binarnych proxy i przetestowanych reguł zapory.
Utwórz plik docker-compose.yml
Ten plik Compose uruchamia MariaDB i kontener Verlihub w jednej prywatnej sieci Docker. Mapuje port hosta 4111 do portu kontenerowego 4111. Zmień port, jeśli koncentrator będzie nasłuchiwał na innej wartości.
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:
Zbuduj obraz
docker compose build
docker compose up -d db
Przed uruchomieniem kreatora instalacji Verlihub poczekaj, aż MariaDB będzie w dobrej kondycji.
docker compose ps
docker compose logs -f db
Uruchom Kreatora instalacji Verlihub
The vh --install pomocnik jest interaktywny. Uruchom go raz, odpowiedz na pytania bazy danych, a następnie zapisz wygenerowaną konfigurację w zamontowanym wolumenie Verlihub.
docker compose run --rm verlihub bash
vh --install
Użyj tych wartości w kreatorze, gdy prosi o dostęp do bazy danych:
| Pole Czarodzieja | Wartość do wykorzystania | Dlaczego |
|---|---|---|
| Nazwa bazy danych | verlihub lub twój MARIADB_DATABASE | Pasuje do bazy danych MariaDB utworzonej przez Compose. |
| Użytkownik MySQL | verlihub lub twój MARIADB_USER | Pasuje do użytkownika bazy danych aplikacji. |
| Hasło MySQL | Twój MARIADB_PASSWORD | Umożliwia Verlihub tworzenie i odczytywanie tabel centralnych. |
| Nazwa hosta MySQL | db | db jest nazwą usługi Compose i jest rozpoznawana w sieci Docker. |
| Folder konfiguracyjny | /var/lib/verlihub | Ta ścieżka jest wspierana przez verlihub-config tom. |
| Port koncentratora | 4111 | Pasuje do mapowania portów Compose pokazanego powyżej. |
| Host centrum | Twoja publiczna nazwa DNS | To jest adres, który powinni publikować użytkownicy i hublists. |
Jeśli kreator poprosi o podanie poświadczeń administratora MySQL, użyj root I MARIADB_ROOT_PASSWORD z .env. Urzędnik vh skrypt może tworzyć bazę danych, nadawać uprawnienia, tworzyć tabele, pisać dbconfig, zarejestruj użytkownika głównego i zapisz początkowe ustawienia koncentratora.
Uruchom Hub
docker compose up -d
docker compose logs -f verlihub
Po uruchomieniu przetestuj port publiczny spoza hosta Docker. Jeśli zapora hosta lub zapora dostawcy blokuje port, kontener może być w dobrej kondycji, a klienci DC++ nadal nie mogą się połączyć.
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
Codzienne operacje
| Zadanie | Rozkaz | Notatki |
|---|---|---|
| Zatrzymaj stos | docker compose down | Zatrzymuje kontenery, zachowując nazwane woluminy. |
| Uruchom ponownie koncentrator | docker compose restart verlihub | Użyj po prostych zmianach konfiguracji. |
| Otwórz skorupę | docker compose exec verlihub bash | Użyj dla vh polecenia i sprawdzanie dzienników. |
| Utwórz kopię zapasową MariaDB | docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql | Uruchom przed aktualizacjami i zmianami schematu. |
| Utwórz kopię zapasową plików centrum | docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . | Przechwytuje dbconfig, skrypty, wtyczki, dzienniki i pliki centrum lokalnego. |
Zaktualizuj Verlihub później
Najpierw utwórz kopię zapasową bazy danych i woluminu konfiguracyjnego. Następnie odbuduj obraz z najnowszego oficjalnego źródła i uruchom ponownie koncentrator.
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
Jeśli nowa wersja Verlihub zmienia tabele bazy danych, przed wymianą centrum produkcyjnego przeczytaj uwagi do wcześniejszej wersji. Zachowaj jedną przetestowaną kopię zapasową, którą można przywrócić bez konieczności pobierania świeżych obrazów z Internetu.
Typowe problemy
- Koncentrator uruchamia się, ale klienci nie mogą się połączyć. Sprawdź mapowanie portów Compose, zaporę hosta, zaporę dostawcy i
listen_portwartość w Verlihub. - Kreator nie może połączyć się z MySQL. Używać
dbjako nazwę hosta z kontenera Verlihub. Nie używaćlocalhostchyba że MariaDB działa w tym samym kontenerze. - Koncentrator traci ustawienia po przebudowaniu. Potwierdź
verlihub-configgłośność jest zamontowana na/var/lib/verlihub. - Postacie wyglądają źle na czacie. Ustaw ten sam zestaw znaków bazy danych i ustawienia regionalne centrum, których używa Twoja społeczność, a następnie uruchom ponownie centrum.
- NMDCS jeszcze nie działa. Obsługa serwera proxy Verlihub TLS wymaga odpowiedniej kompilacji serwera proxy, certyfikatów, portów i testów klienta. Najpierw uzyskaj stabilny NMDC.