Creado: 2026/06/30 13:24:48 America/Chicago
Por: admin

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 utilizan 4111/tcp para 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 .env archivo. 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 asistenteValor a utilizarPor 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ñaSu 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 centralSu nombre DNS públicoEsta 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

TareaDominioNotas
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_port valor en Verlihub.
  • El asistente no puede conectarse a MySQL. Usar db como nombre de host desde el interior del contenedor Verlihub. no usar localhost a menos que MariaDB se ejecute en el mismo contenedor.
  • El concentrador pierde la configuración después de la reconstrucción. Confirma el verlihub-config El 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.