Créé: 2026/06/30 13:24:48 America/Chicago
Par: admin

Ce que ce guide construit

Ce guide crée une installation Verlihub basée sur Docker à partir du site officiel Verlihub/verlihub arbre source. Le conteneur compile Verlihub avec CMake, exécute le vh helper, stocke les fichiers hub sous /var/lib/verlihub et utilise un conteneur MariaDB distinct pour la base de données Verlihub.

Le référentiel en amont fournit actuellement le code source, les instructions de construction CMake, les notes d'installation et le vh script de gestion. Il ne fournit pas de pile Docker Compose prête à la racine du référentiel, donc la configuration Docker la plus sûre consiste à créer votre propre image à partir de la source officielle et à conserver l'état de la base de données dans des volumes nommés.

Avant de commencer

  • Installez le moteur Docker et Docker Compose sur l'hôte.
  • Choisissez le nom d'hôte du hub public avant d'exécuter l'assistant Verlihub. Exemple: hub.example.org.
  • Ouvrez le port hub sur le pare-feu hôte. Le classique NMDC utilise couramment 411/tcp; de nombreux déploiements de conteneurs utilisent 4111/tcp pour éviter les ports bas privilégiés.
  • Décidez où appartiennent les données persistantes. Les exemples ci-dessous utilisent des volumes nommés Docker pour la configuration MariaDB et Verlihub.
  • Conservez les mots de passe de la base de données en privé .env déposer. Ne validez pas ce fichier dans Git.

Créer le répertoire du projet Docker

Créez un répertoire pour les fichiers de construction. Le répertoire peut résider n'importe où sur l'hôte Docker.

 mkdir -p verlihub-docker
cd verlihub-docker
touch Dockerfile docker-compose.yml .env
chmod 600 .env 

Ajouter des valeurs de base de données à .env. Utilisez vos propres mots de passe.

 MARIADB_ROOT_PASSWORD=change-root-password
MARIADB_DATABASE=verlihub
MARIADB_USER=verlihub
MARIADB_PASSWORD=change-hub-password 

Créer le fichier Verlihub Docker

Les notes d'installation officielles répertorient les bibliothèques client GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB et Lua en option comme dépendances de construction importantes. Le fichier Docker ci-dessous utilise une étape de construction pour les compilateurs et une étape d'exécution plus petite pour le hub installé.

 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"] 

Activer -DUSE_TLS_PROXY=ON uniquement lorsque vous créez et configurez également la dépendance de proxy TLS requise par votre branche Verlihub. N'activez pas les indicateurs TLS et supposez que NMDCS fonctionne sans certificats, fichiers binaires proxy et règles de pare-feu testées.

Créer docker-compose.yml

Ce fichier Compose démarre MariaDB et le conteneur Verlihub sur un réseau privé Docker. Il mappe le port hôte 4111 au port à conteneurs 4111. Changez le port si votre hub écoute sur une valeur différente.

 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: 

Construire l'image

 docker compose build
docker compose up -d db 

Attendez que MariaDB soit sain avant d'exécuter l'assistant d'installation de Verlihub.

 docker compose ps
docker compose logs -f db 

Exécutez l'assistant d'installation Verlihub

Le vh --install l'assistant est interactif. Exécutez-le une fois, répondez aux questions de la base de données, puis enregistrez la configuration générée dans le volume Verlihub monté.

 docker compose run --rm verlihub bash
vh --install 

Utilisez ces valeurs dans l'assistant lorsqu'il demande l'accès à la base de données:

Champ AssistantValeur à utiliserPourquoi
Nom de la base de données verlihub ou votre MARIADB_DATABASE Correspond à la base de données MariaDB créée par Compose.
Utilisateur MySQL verlihub ou votre MARIADB_USER Correspond à l'utilisateur de la base de données de l'application.
Mot de passe MySQLTon MARIADB_PASSWORD Permet à Verlihub de créer et de lire les tables hub.
MySQL nom d'hôte db db est le nom du service Compose et se résout à l'intérieur du réseau Docker.
Dossier de configuration /var/lib/verlihub Ce chemin est soutenu par le verlihub-config volume.
Port central 4111 Correspond au mappage du port Compose présenté ci-dessus.
Hôte du hubVotre nom DNS publicIl s'agit de l'adresse que les utilisateurs et hublists doivent publier.

Si l'assistant demande les informations d'identification de l'administrateur MySQL, utilisez root et MARIADB_ROOT_PASSWORD depuis .env. Le fonctionnaire vh le script peut créer la base de données, accorder des autorisations, créer des tables, écrire dbconfig, enregistrez l'utilisateur principal et écrivez les paramètres initiaux du hub.

Démarrer le hub

 docker compose up -d
docker compose logs -f verlihub 

Après le démarrage, testez le port public depuis l'extérieur de l'hôte Docker. Si le pare-feu de l'hôte ou du fournisseur bloque le port, le conteneur peut être sain alors que les clients DC++ ne peuvent toujours pas se connecter.

 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 

Opérations quotidiennes

TâcheCommandeRemarques
Arrêtez la pile docker compose down Arrête les conteneurs tout en conservant les volumes nommés.
Redémarrez le hub docker compose restart verlihub À utiliser après de simples modifications de configuration.
Ouvrir une coquille docker compose exec verlihub bash Utiliser pour vh commandes et vérifications de journaux.
Sauvegarder MariaDB docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql Exécuté avant les mises à niveau et les modifications de schéma.
Sauvegarder les fichiers du hub docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . Captures dbconfig, scripts, plug-ins, journaux et fichiers du hub local.

Mettre à niveau Verlihub ultérieurement

Sauvegardez d'abord la base de données et le volume de configuration. Reconstruisez ensuite l'image à partir de la dernière source officielle et redémarrez le 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 

Si une nouvelle version de Verlihub modifie les tables de base de données, lisez les notes de version en amont avant de remplacer un hub de production. Conservez une sauvegarde testée qui peut être restaurée sans extraire de nouvelles images d'Internet.

Problèmes courants

  • Le hub démarre, mais les clients ne peuvent pas se connecter. Vérifiez le mappage du port Compose, le pare-feu de l'hôte, le pare-feu du fournisseur et le listen_port valeur dans Verlihub.
  • L'assistant ne parvient pas à se connecter à MySQL. Utiliser db comme nom d'hôte depuis l'intérieur du conteneur Verlihub. Ne pas utiliser localhost sauf si MariaDB s’exécute dans le même conteneur.
  • Le hub perd ses paramètres après la reconstruction. Confirmez le verlihub-config le volume est monté à /var/lib/verlihub.
  • Les personnages ne semblent pas corrects dans le chat. Définissez le même jeu de caractères de base de données et les mêmes paramètres régionaux du hub que ceux utilisés par votre communauté, puis redémarrez le hub.
  • NMDCS ne fonctionne pas encore. Verlihub La prise en charge du proxy TLS nécessite la version de proxy, les certificats, les ports et les tests client correspondants. Obtenez d'abord la version stable de NMDC.