Co tento průvodce staví
Tato příručka vytváří instalaci Verlihub založenou na Docker od úředníka Verlihub/verlihub zdrojový strom. Kontejner zkompiluje Verlihub s CMake, spustí nainstalovaný vh pomocník, ukládá soubory hubu pod /var/lib/verlihub a používá samostatný kontejner MariaDB pro databázi Verlihub.
Upstream úložiště aktuálně poskytuje zdrojový kód, CMake pokyny k sestavení, poznámky k instalaci a vh řídící skript. Nedodává připravený zásobník Docker Compose v kořenovém adresáři úložiště, takže nejbezpečnějším nastavením Docker je sestavení vlastního obrazu z oficiálního zdroje a udržování stavu databáze v pojmenovaných svazcích.
Než začnete
- Nainstalujte Docker Engine a Docker Compose na hostitele.
- Před spuštěním průvodce Verlihub zvolte název hostitele veřejného centra. Příklad:
hub.example.org. - Otevřete port rozbočovače na hostitelské bráně firewall. Klasický NMDC se běžně používá
411/tcp; používá mnoho nasazení kontejnerů4111/tcpabyste se vyhnuli privilegovaným nízkým portům. - Rozhodněte, kam patří trvalá data. Níže uvedené příklady používají pojmenované svazky Docker pro konfiguraci MariaDB a Verlihub.
- Hesla k databázi uchovávejte v soukromí
.envsoubor. Neposílejte tento soubor do systému Git.
Vytvořte adresář projektu Docker
Vytvořte jeden adresář pro soubory sestavení. Adresář může žít kdekoli na hostiteli Docker.
mkdir -p verlihub-docker
cd verlihub-docker
touch Dockerfile docker-compose.yml .env
chmod 600 .env
Přidat databázové hodnoty do .env. Používejte svá vlastní hesla.
MARIADB_ROOT_PASSWORD=change-root-password
MARIADB_DATABASE=verlihub
MARIADB_USER=verlihub
MARIADB_PASSWORD=change-hub-password
Vytvořte soubor Verlihub Docker
Oficiální poznámky k instalaci uvádějí klientské knihovny GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB a volitelné Lua jako důležité závislosti sestavení. Níže uvedený soubor Docker_ používá fázi sestavení pro kompilátory a menší fázi běhu pro nainstalovaný rozbočovač.
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"]
Umožnit -DUSE_TLS_PROXY=ON pouze tehdy, když také vytvoříte a nakonfigurujete závislost proxy TLS vyžadovanou vaší pobočkou Verlihub. Nezapínejte příznaky TLS a předpokládejte, že NMDCS funguje bez certifikátů, binárních souborů proxy a testovaných pravidel brány firewall.
Vytvořte soubor docker-compose.yml
Tento soubor Compose začíná MariaDB a kontejner Verlihub v jedné soukromé síti Docker. Mapuje hostitelský port 4111 do kontejnerového přístavu 4111. Změňte port, pokud bude váš rozbočovač naslouchat na jiné hodnotě.
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:
Sestavte obraz
docker compose build
docker compose up -d db
Před spuštěním průvodce instalací Verlihub počkejte, až bude MariaDB v pořádku.
docker compose ps
docker compose logs -f db
Spusťte Průvodce instalací Verlihub
The vh --install pomocník je interaktivní. Spusťte jej jednou, odpovězte na otázky týkající se databáze a poté uložte vygenerovanou konfiguraci do připojeného svazku Verlihub.
docker compose run --rm verlihub bash
vh --install
Použijte tyto hodnoty v průvodci, když požádá o přístup k databázi:
| Pole čaroděje | Hodnota k použití | Proč |
|---|---|---|
| Název databáze | verlihub nebo vaše MARIADB_DATABASE | Odpovídá databázi MariaDB vytvořené aplikací Compose. |
| MySQL uživatel | verlihub nebo vaše MARIADB_USER | Odpovídá uživateli databáze aplikace. |
| MySQL heslo | Vaše MARIADB_PASSWORD | Umožňuje Verlihub vytvářet a číst tabulky hubů. |
| MySQL název hostitele | db | db je název služby Compose a řeší se uvnitř sítě Docker. |
| Konfigurační složka | /var/lib/verlihub | Tato cesta je podporována verlihub-config objem. |
| Hub port | 4111 | Odpovídá mapování portu Compose zobrazenému výše. |
| Hostitel rozbočovače | Vaše veřejné jméno DNS | Toto je adresa, kterou by uživatelé měli publikovat hublists. |
Pokud vás průvodce požádá o pověření správce MySQL, použijte root a MARIADB_ROOT_PASSWORD z .env. Úředník vh skript může vytvářet databázi, udělovat oprávnění, vytvářet tabulky, zapisovat dbconfig, zaregistrujte hlavního uživatele a zapište počáteční nastavení hubu.
Spusťte Hub
docker compose up -d
docker compose logs -f verlihub
Po spuštění otestujte veřejný port mimo hostitele Docker. Pokud brána firewall hostitele nebo brána firewall poskytovatele blokuje port, kontejner může být v pořádku, zatímco klienti DC++ se stále nemohou připojit.
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
Denní operace
| Úkol | Příkaz | Poznámky |
|---|---|---|
| Zastavte zásobník | docker compose down | Zastaví kontejnery při zachování pojmenovaných svazků. |
| Restartujte rozbočovač | docker compose restart verlihub | Použijte po jednoduchých změnách konfigurace. |
| Otevřete skořápku | docker compose exec verlihub bash | Použijte pro vh příkazy a kontroly protokolů. |
| Zálohovat MariaDB | docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql | Spustit před aktualizacemi a změnami schématu. |
| Zálohujte soubory rozbočovače | docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . | Zachycuje dbconfig, skripty, pluginy, protokoly a soubory místního centra. |
Upgrade Verlihub později
Nejprve zálohujte databázi a svazek konfigurace. Poté znovu sestavte obraz z nejnovějšího oficiálního zdroje a restartujte 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
Pokud nové vydání Verlihub změní databázové tabulky, před výměnou produkčního centra si přečtěte poznámky k upstreamové verzi. Mějte jednu otestovanou zálohu, kterou lze obnovit bez stahování nových obrázků z internetu.
Běžné problémy
- Hub se spustí, ale klienti se nemohou připojit. Zkontrolujte mapování portu Compose, bránu firewall hostitele, bránu firewall poskytovatele a
listen_porthodnota v Verlihub. - Průvodce se nemůže připojit k MySQL. Použití
dbjako název hostitele z kontejneru Verlihub. Nepoužívejtelocalhostpokud MariaDB neběží ve stejném kontejneru. - Hub po přestavbě ztratí nastavení. Potvrďte
verlihub-configobjem je namontován na/var/lib/verlihub. - Postavy vypadají v chatu špatně. Nastavte stejnou znakovou sadu databáze a národní prostředí centra, které používá vaše komunita, a potom restartujte centrum.
- NMDCS zatím nefunguje. Verlihub TLS podpora proxy vyžaduje odpovídající sestavení proxy, certifikáty, porty a testování klienta. Nejprve získejte stabilní NMDC.