Созданный: 2026/06/30 13:24:48 America/Chicago
К: admin

Что представляет собой это руководство

В этом руководстве создается установка Verlihub на основе Docker из официального Verlihub/verlihub исходное дерево. Контейнер компилирует Verlihub с CMake, запускает установленный vh помощник, хранит файлы хаба под /var/lib/verlihub и использует отдельный контейнер MariaDB для базы данных Verlihub.

Восходящий репозиторий в настоящее время предоставляет исходный код, инструкции по сборке CMake, примечания по установке и vh скрипт управления. Он не поставляет готовый стек Docker Compose в корень репозитория, поэтому самая безопасная настройка Docker - создать собственный образ из официального источника и хранить состояние базы данных в именованных томах.

Прежде чем начать

  • Установите Docker Engine и Docker Compose на хост.
  • Перед запуском мастера Verlihub выберите имя хоста общедоступного хаба. Пример: hub.example.org.
  • Откройте порт хаба на брандмауэре хоста. Классический NMDC обычно использует 411/tcp; многие развертывания контейнеров используют 4111/tcp чтобы избежать привилегированных нижних портов.
  • Решите, кому принадлежат постоянные данные. В приведенных ниже примерах используются именованные тома Docker для конфигурации MariaDB и Verlihub.
  • Храните пароли к базе данных в секрете .env файл. Не фиксируйте этот файл в Git.

Создайте каталог проекта Docker.

Создайте один каталог для файлов сборки. Каталог может находиться где угодно на хосте Docker.

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

Добавьте значения базы данных в .env. Используйте свои собственные пароли.

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

Создайте файл Verlihub Docker.

В официальных примечаниях по установке перечислены клиентские библиотеки GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB и необязательный Lua в качестве важных зависимостей сборки. В приведенном ниже файле Docker используется этап сборки для компиляторов и меньший этап выполнения для установленного хаба.

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

Давать возможность -DUSE_TLS_PROXY=ON только если вы также создадите и настроите зависимость прокси-сервера TLS, необходимую для вашей ветки Verlihub. Не включайте флаги TLS и не предполагайте, что NMDCS работает без сертификатов, двоичных файлов прокси и проверенных правил брандмауэра.

Создайте docker-compose.yml.

Этот файл Compose запускает MariaDB и контейнер Verlihub в одной частной сети Docker. Он отображает хост-порт 4111 в контейнерный порт 4111. Измените порт, если ваш хаб будет прослушивать другое значение.

 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: 

Создайте имидж

 docker compose build
docker compose up -d db 

Подождите, пока MariaDB не станет работоспособным, прежде чем запускать мастер установки Verlihub.

 docker compose ps
docker compose logs -f db 

Запустите мастер установки Verlihub.

vh --install помощник интерактивный. Запустите его один раз, ответьте на вопросы по базе данных, затем сохраните сгенерированную конфигурацию в смонтированный том Verlihub.

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

Используйте эти значения в мастере, когда он запрашивает доступ к базе данных:

Поле мастераЗначение для использованияПочему
Имя базы данных verlihub или твой MARIADB_DATABASE Соответствует базе данных MariaDB, созданной Compose.
MySQL пользователь verlihub или твой MARIADB_USER Соответствует пользователю базы данных приложения.
MySQL парольТвой MARIADB_PASSWORD Позволяет Verlihub создавать и читать центральные таблицы.
MySQL имя хоста db db - это имя службы Compose, которое разрешается внутри сети Docker.
Папка конфигурации /var/lib/verlihub Этот путь поддерживается verlihub-config объем.
Порт-хаб 4111 Соответствует сопоставлению портов Compose, показанному выше.
Хост-хабВаше общедоступное DNS-имяЭто адрес, который пользователи и hublists должны опубликовать.

Если мастер запрашивает учетные данные администратора MySQL, используйте root и MARIADB_ROOT_PASSWORD от .env. Официальный vh скрипт может создавать базу данных, предоставлять разрешения, создавать таблицы, писать dbconfig, зарегистрируйте главного пользователя и пропишите первоначальные настройки хаба.

Запустить хаб

 docker compose up -d
docker compose logs -f verlihub 

После запуска проверьте общедоступный порт за пределами хоста Docker. Если брандмауэр хоста или брандмауэр провайдера блокирует порт, контейнер может быть работоспособным, в то время как клиенты DC++ по-прежнему не смогут подключиться.

 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 

Ежедневные операции

ЗадачаКомандаПримечания
Остановить стек docker compose down Останавливает контейнеры, сохраняя именованные тома.
Перезапустите хаб docker compose restart verlihub Используйте после простых изменений конфигурации.
Открыть оболочку docker compose exec verlihub bash Используйте для vh команды и проверки журналов.
Резервное копирование MariaDB docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql Запускайте до обновлений и изменений схемы.
Резервное копирование файлов хаба docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . Захватывает dbconfig, скрипты, плагины, журналы и файлы локального хаба.

Обновите Verlihub позже

Сначала создайте резервную копию базы данных и тома конфигурации. Затем пересоберите образ из последнего официального источника и перезапустите хаб.

 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 

Если новый выпуск Verlihub изменяет таблицы базы данных, прочтите примечания к выпуску исходной версии перед заменой производственного хаба. Сохраните одну проверенную резервную копию, которую можно будет восстановить, не извлекая свежие изображения из Интернета.

Распространенные проблемы

  • Хаб запускается, но клиенты не могут подключиться. Проверьте сопоставление портов Compose, брандмауэр хоста, брандмауэр провайдера и listen_port значение в Verlihub.
  • Мастер не может подключиться к MySQL. Использовать db в качестве имени хоста внутри контейнера Verlihub. Не используйте localhost если только MariaDB не работает в том же контейнере.
  • Хаб теряет настройки после пересборки. Подтвердите verlihub-config том монтируется в /var/lib/verlihub.
  • Персонажи в чате выглядят неправильно. Установите ту же кодировку базы данных и языковой стандарт хаба, которые использует ваше сообщество, а затем перезапустите хаб.
  • NMDCS пока не работает. Verlihub TLS Для поддержки прокси-сервера требуется соответствующая сборка прокси, сертификаты, порты и тестирование клиента. Сначала получите стабильную версию NMDC.