Что представляет собой это руководство
В этом руководстве создается установка 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.