Qué construye esta guía
Esta guía crea una instalación Verlihub basada en Docker desde el sitio oficial. Verlihub/verlihub árbol fuente. El contenedor compila Verlihub con CMake, ejecuta el instalado vh ayudante, almacena archivos centrales en /var/lib/verlihub y utiliza un contenedor MariaDB independiente para la base de datos Verlihub.
El repositorio ascendente actualmente proporciona el código fuente, instrucciones de compilación de CMake, notas de instalación y el vh guión de gestión. No incluye una pila Docker Compose lista en la raíz del repositorio, por lo que la configuración más segura de Docker es crear su propia imagen a partir de la fuente oficial y mantener el estado de la base de datos en volúmenes con nombre.
Antes de comenzar
- Instale Docker Engine y Docker Compose en el host.
- Elija el nombre de host del concentrador público antes de ejecutar el asistente Verlihub. Ejemplo:
hub.example.org. - Abra el puerto del concentrador en el firewall del host. El clásico NMDC se utiliza habitualmente
411/tcp; muchas implementaciones de contenedores utilizan4111/tcppara evitar puertos bajos privilegiados. - Decida dónde pertenecen los datos persistentes. Los ejemplos siguientes utilizan volúmenes denominados Docker para la configuración MariaDB y Verlihub.
- Mantenga las contraseñas de la base de datos de forma privada
.envarchivo. No envíe ese archivo a Git.
Crear el directorio del proyecto Docker
Cree un directorio para los archivos de compilación. El directorio puede residir en cualquier lugar del host Docker.
mkdir -p verlihub-docker
cd verlihub-docker
touch Dockerfile docker-compose.yml .env
chmod 600 .env
Agregar valores de base de datos a .env. Utilice sus propias contraseñas.
MARIADB_ROOT_PASSWORD=change-root-password
MARIADB_DATABASE=verlihub
MARIADB_USER=verlihub
MARIADB_PASSWORD=change-hub-password
Cree el archivo Verlihub Docker
Las notas de instalación oficiales enumeran las bibliotecas cliente GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB y Lua opcional como dependencias de compilación importantes. El archivo Docker a continuación utiliza una etapa de compilación para compiladores y una etapa de ejecución más pequeña para el concentrador instalado.
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"]
Permitir -DUSE_TLS_PROXY=ON solo cuando también crea y configura la dependencia de proxy TLS requerida por su rama Verlihub. No active los indicadores TLS y asuma que NMDCS funciona sin certificados, archivos binarios de proxy y reglas de firewall probadas.
Crear docker-compose.yml
Este archivo de redacción inicia MariaDB y el contenedor Verlihub en una red privada Docker. Mapea el puerto host 4111 al puerto de contenedores 4111. Cambie el puerto si su hub escuchará con un valor diferente.
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:
Construye la imagen
docker compose build
docker compose up -d db
Espere hasta que MariaDB esté en buen estado antes de ejecutar el asistente de instalación de Verlihub.
docker compose ps
docker compose logs -f db
Ejecute el asistente de instalación de Verlihub
El vh --install El ayudante es interactivo. Ejecútelo una vez, responda las preguntas de la base de datos y luego guarde la configuración generada en el volumen Verlihub montado.
docker compose run --rm verlihub bash
vh --install
Utilice estos valores en el asistente cuando solicite acceso a la base de datos:
| Campo del asistente | Valor a utilizar | Por qué |
|---|---|---|
| Nombre de la base de datos | verlihub o tu MARIADB_DATABASE | Coincide con la base de datos MariaDB creada por Compose. |
| Usuario MySQL | verlihub o tu MARIADB_USER | Coincide con el usuario de la base de datos de la aplicación. |
| MySQL contraseña | Su MARIADB_PASSWORD | Permite que Verlihub cree y lea tablas centrales. |
| MySQL nombre de host | db | db es el nombre del servicio Compose y se resuelve dentro de la red Docker. |
| Carpeta de configuración | /var/lib/verlihub | Este camino está respaldado por la verlihub-config volumen. |
| Puerto central | 4111 | Coincide con la asignación de puertos de Compose que se muestra arriba. |
| Anfitrión central | Su nombre DNS público | Esta es la dirección que los usuarios y hublists deben publicar. |
Si el asistente solicita las credenciales de administrador MySQL, utilice root y MARIADB_ROOT_PASSWORD de .env. El funcionario vh El script puede crear la base de datos, otorgar permisos, crear tablas, escribir. dbconfig, registre el usuario maestro y escriba la configuración inicial del concentrador.
Iniciar el centro
docker compose up -d
docker compose logs -f verlihub
Después del inicio, pruebe el puerto público desde fuera del host Docker. Si el firewall del host o el firewall del proveedor bloquea el puerto, el contenedor puede estar en buen estado mientras que los clientes DC++ aún no pueden conectarse.
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
Operaciones diarias
| Tarea | Dominio | Notas |
|---|---|---|
| detener la pila | docker compose down | Detiene los contenedores mientras mantiene los volúmenes con nombre. |
| Reiniciar el concentrador | docker compose restart verlihub | Úselo después de cambios simples de configuración. |
| abrir un caparazón | docker compose exec verlihub bash | Usar para vh comandos y comprobaciones de registros. |
| Copia de seguridad MariaDB | docker compose exec db mariadb-dump -u root -p verlihub > verlihub.sql | Ejecute antes de actualizaciones y cambios de esquema. |
| Hacer una copia de seguridad de los archivos del concentrador | docker run --rm -v verlihub-docker_verlihub-config:/data -v "$PWD":/backup debian:12 tar czf /backup/verlihub-config.tar.gz -C /data . | Capturas dbconfig, scripts, complementos, registros y archivos centrales locales. |
Actualizar Verlihub más tarde
Primero haga una copia de seguridad de la base de datos y del volumen de configuración. Luego reconstruya la imagen a partir de la fuente oficial más reciente y reinicie el centro.
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 una nueva versión de Verlihub cambia las tablas de la base de datos, lea las notas de la versión anterior antes de reemplazar un centro de producción. Mantenga una copia de seguridad probada que pueda restaurarse sin extraer imágenes nuevas de Internet.
Problemas comunes
- El centro se inicia, pero los clientes no pueden conectarse. Verifique la asignación de puertos de redacción, el firewall del host, el firewall del proveedor y el
listen_portvalor en Verlihub. - El asistente no puede conectarse a MySQL. Usar
dbcomo nombre de host desde el interior del contenedor Verlihub. no usarlocalhosta menos que MariaDB se ejecute en el mismo contenedor. - El concentrador pierde la configuración después de la reconstrucción. Confirma el
verlihub-configEl volumen se monta en/var/lib/verlihub. - Los personajes se ven mal en el chat. Configure el mismo juego de caracteres de la base de datos y la configuración regional del concentrador que utiliza su comunidad y luego reinicie el concentrador.
- NMDCS aún no funciona. Verlihub TLS La compatibilidad con el proxy necesita la compilación del proxy, los certificados, los puertos y las pruebas del cliente coincidentes. Primero, consiga que NMDC sea estable.