Qué instala esta guía
Esta guía instala Verlihub desde el sitio oficial. Verlihub/verlihub árbol de fuentes en el servidor Ubuntu. Compila el servidor concentrador NMDC con CMake, almacena los datos del concentrador en /var/lib/verlihub, utiliza MariaDB para tablas centrales e inicia el concentrador a través de un servicio systemd.
Utilice el artículo Docker si desea aislar el contenedor. Utilice este artículo Ubuntu cuando el concentrador deba ejecutarse directamente en un VPS, un servidor dedicado o una máquina básica.
Planifique el servidor antes de instalar
- Elija un nombre DNS público para el concentrador, como
hub.example.org. - Elija el puerto NMDC. Puerto
411/tcpes tradicional. Verlihub puede vincularlo de forma segura a través de systemd sin ejecutarse comoroot. Puerto4111/tcpEs una alternativa más sencilla cuando no se necesita el puerto histórico. - Decida si esta primera instalación será únicamente NMDC. Agregue NMDCS después de que el concentrador simple esté estable.
- Mantenga una cuenta Linux para el servicio:
verlihub. - Mantenga una base de datos y un usuario MariaDB:
verlihub. - Anote el apodo y la contraseña del centro maestro antes de ejecutar el asistente.
Instalar paquetes Ubuntu
Las notas de instalación oficiales enumeran las bibliotecas cliente GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, subprocesos, carga dinámica, Lua y Dialog. En Ubuntu, instale primero los paquetes coincidentes.
sudo apt update
sudo apt install -y \
build-essential \
ca-certificates \
cmake \
default-libmysqlclient-dev \
default-mysql-client \
dialog \
gettext \
git \
libasprintf-dev \
libicu-dev \
liblua5.2-dev \
libmaxminddb-dev \
libpcre3-dev \
libssl-dev \
make \
mariadb-server \
pkg-config \
zlib1g-dev
Inicie MariaDB y asegúrese de que vuelva después de reiniciar.
sudo systemctl enable --now mariadb
sudo systemctl status mariadb
Crear el usuario Verlihub Linux
Ejecute Verlihub como su propio usuario sin privilegios. No ejecute el concentrador como root.
sudo adduser --system --group --home /var/lib/verlihub --shell /bin/bash verlihub
sudo install -d -o verlihub -g verlihub /var/lib/verlihub
sudo install -d -o verlihub -g verlihub /var/log/verlihub
El verlihub el usuario debe poseer únicamente archivos de tiempo de ejecución. Mantenga los archivos fuente en /usr/local/src/verlihub, mantenga los binarios debajo /usr/local y mantenga la administración de la base de datos en MariaDB. La cuenta de servicio necesita acceso de escritura a /var/lib/verlihub y /var/log/verlihub; no necesita acceso sudo.
Usar sudo como administrador del servidor para instalar paquetes, compilar el binario y crear la unidad systemd. Ejecute el proceso central en sí como verlihub. Esta división es importante porque un concentrador acepta tráfico público que no es de confianza de clientes DC++.
Crear la base de datos MariaDB
Cree la base de datos y el usuario antes de ejecutar vh --install. Utilice una contraseña real en lugar del valor de ejemplo.
sudo mariadb
CREATE DATABASE verlihub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'verlihub'@'localhost' IDENTIFIED BY 'change-this-password';
GRANT ALL PRIVILEGES ON verlihub.* TO 'verlihub'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Compruebe que el usuario de la aplicación pueda iniciar sesión.
mariadb -u verlihub -p verlihub
Descargue la fuente Verlihub
Compilado desde el repositorio oficial GitHub. Mantenga los archivos fuente en /usr/local/src por lo que el árbol de compilación está separado de los datos del tiempo de ejecución del concentrador.
sudo install -d -o "$USER" -g "$USER" /usr/local/src/verlihub
git clone https://github.com/Verlihub/verlihub.git /usr/local/src/verlihub
cd /usr/local/src/verlihub
Si necesita una versión o confirmación específica, compruébelo antes de compilar. Para una primera instalación, cree la rama ascendente actual después de leer las notas del repositorio.
Compile e instale Verlihub
La ruta de instalación ascendente utiliza mkdir build, cmake .., make, make install, y ldconfig. El siguiente comando instala Verlihub en /usr/local.
mkdir -p build
cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DUSE_TLS_PROXY=OFF \
-DUSE_FEARTLS_PROXY=OFF
make -j"$(nproc)"
sudo make install
sudo ldconfig
Mantenga las opciones de proxy TLS desactivadas para la primera ejecución a menos que ya tenga la dependencia del proxy, los certificados, las reglas de firewall y un cliente de prueba listo para NMDCS.
Ejecute vh --instalar
El vh El asistente escribe la configuración Verlihub, crea o actualiza tablas centrales y almacena la configuración del primer concentrador. Ejecútelo como el verlihub Linux Los archivos generados por el usuario pertenecen a la cuenta de servicio.
sudo -iu verlihub
vh --install
| Campo del asistente | Utilice este valor | Razón |
|---|---|---|
| Carpeta de configuración | /var/lib/verlihub | Propiedad de la verlihub usuario del servicio. |
| Host de base de datos | localhost | MariaDB se ejecuta en el mismo servidor Ubuntu. |
| Nombre de la base de datos | verlihub | Coincide con la base de datos creada anteriormente. |
| Usuario de base de datos | verlihub | Coincide con el usuario MariaDB creado anteriormente. |
| Contraseña de la base de datos | Su contraseña MariaDB | Permite que Verlihub lea y escriba tablas centrales. |
| Dirección del centro | Su nombre DNS público | Esta es la dirección que los clientes y hublists deben publicar. |
| Puerto central | 411, 4111, o el puerto elegido | Debe coincidir con las reglas systemd, firewall y enrutador. |
| Usuario maestro | Su apodo de operador | Crea la primera cuenta con acceso de administración del concentrador. |
Si el asistente solicita las credenciales de administrador MariaDB, utilice la cuenta de administrador local MariaDB. En muchas instalaciones de Ubuntu, eso significa ejecutar la administración de la base de datos a través de sudo mariadb en lugar de un inicio de sesión raíz basado en contraseña.
Pruebe el concentrador en primer plano
Antes de crear systemd, inicie el concentrador una vez desde la terminal y observe la salida.
vh --run /var/lib/verlihub
Abra una segunda terminal y pruebe el puerto desde otra máquina si es posible. Detenga el proceso en primer plano con Ctrl+C después de que el centro arranque limpiamente.
Ejecute el puerto 411 sin sudo
Linux normalmente reserva los puertos siguientes 1024 para procesos privilegiados. No resuelvas eso iniciando Verlihub con sudo vh --run. Otorgue al servicio solo la capacidad de enlace que necesita.
La unidad systemd a continuación utiliza AmbientCapabilities=CAP_NET_BIND_SERVICE y CapabilityBoundingSet=CAP_NET_BIND_SERVICE. Eso permite que el verlihub enlace de usuario 411/tcp mientras el proceso aún se ejecuta sin privilegios de root. si usas 4111/tcp, puede eliminar esas dos líneas de capacidad.
Evite el sistema global net.ipv4.ip_unprivileged_port_start=0 para este trabajo. Cambia la política de puertos bajos para cada proceso en el servidor. Evitar setcap en el binario Verlihub a menos que controle completamente las actualizaciones, porque las instalaciones de paquetes o fuentes pueden reemplazar el archivo y eliminar la capacidad.
Crear un servicio systemd
Cree un archivo de servicio para que Ubuntu inicie Verlihub después del arranque, lo reinicie después de un fallo y mantenga al usuario en tiempo de ejecución limitado a los archivos centrales.
sudo tee /etc/systemd/system/verlihub.service >/dev/null <<'EOF'
[Unit]
Description=Verlihub NMDC hub server
After=network-online.target mariadb.service
Wants=network-online.target
[Service]
Type=simple
User=verlihub
Group=verlihub
WorkingDirectory=/var/lib/verlihub
ExecStart=/usr/local/bin/vh --run /var/lib/verlihub
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
ReadWritePaths=/var/lib/verlihub /var/log/verlihub
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now verlihub
sudo systemctl status verlihub
journalctl -u verlihub -f
Abra el puerto del concentrador
Si UFW está habilitado, abra el puerto del concentrador que configuró. También verifique el panel de firewall de su proveedor VPS.
sudo ufw allow 411/tcp comment 'Verlihub NMDC'
# Or, if you configured 4111 instead:
sudo ufw allow 4111/tcp comment 'Verlihub NMDC alternate'
sudo ufw status numbered
Para un servidor doméstico, reenvíe el mismo puerto TCP del enrutador a la máquina Ubuntu. Para NMDCS, agregue el puerto seguro solo después de configurar y probar TLS.
Verificar la instalación
| Controlar | Dominio | Qué buscar |
|---|---|---|
| Estado del servicio | systemctl status verlihub | active (running). |
| Registros del concentrador | journalctl -u verlihub -n 100 | No hay errores de inicio de sesión en la base de datos ni errores de vinculación de puertos. |
| Estado del centro | sudo -iu verlihub vh --status /var/lib/verlihub | El ayudante puede leer la configuración del concentrador. |
| Usuario del servicio | systemctl show verlihub -p User -p Group -p NoNewPrivileges | Los informes de servicio. User=verlihub y NoNewPrivileges=yes. |
| Capacidad de puerto bajo | systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet | CAP_NET_BIND_SERVICE está presente cuando el concentrador escucha 411/tcp. |
| Puerto central | ss -ltnp | grep -E ':411|:4111' | Un socket TCP de escucha en el puerto configurado. |
| Copia de seguridad de la base de datos | mariadb-dump -u verlihub -p verlihub > verlihub.sql | Existe un archivo de volcado antes de cambiar complementos o actualizar. |
Etiqueta de hospedaje para un centro público
- Publicar una dirección accesible. Utilice el nombre DNS y el puerto que los clientes deben mantener en favoritos y hublists. No envíe IP temporales, redirecciones inactivas ni varios nombres para el mismo centro a menos que sirvan a protocolos diferentes.
- Mantenga útil el MOTD. Enumere la dirección del centro, la dirección segura cuando esté disponible, las reglas, el comando de registro, el contacto del operador y el sitio de soporte. Los usuarios no deberían tener que adivinar cómo registrarse o quién es el propietario del centro.
- No falsifiques las estadísticas del hub. El hublists público funciona mejor cuando los usuarios, el recurso compartido, el protocolo, el software y el tema coinciden con el estado real del centro.
- Mantenga los registros privados y rotados. Los registros sirven para el manejo de abusos y la resolución de problemas. No publicar IPs de usuarios, mensajes privados o datos de registro en páginas públicas. Configure la rotación de registros antes de la primera semana ocupada.
- Parchea el anfitrión. Aplique las actualizaciones de seguridad Ubuntu, mantenga la compatibilidad con MariaDB y pruebe las actualizaciones de Verlihub en una copia de la base de datos antes de reemplazar los archivos binarios de producción.
- Limite los puertos expuestos. Exponga públicamente el puerto del concentrador y cualquier puerto del concentrador seguro probado. Mantenga MariaDB en privado. Restrinja SSH a las IP del administrador cuando su proveedor lo admita.
- Establece reglas claras. Indique qué está prohibido, cómo los operadores manejan el spam o el contenido ilegal y qué sucede con los robots que inundan la búsqueda o el chat.
- Haga una copia de seguridad antes de los experimentos. Ahorrar
/var/lib/verlihuby la base de datos MariaDB antes de cambiar complementos, scripts Lua, configuraciones regionales o permisos de clase.
Rutina de actualización y respaldo
Haga una copia de seguridad de la base de datos y /var/lib/verlihub antes de reemplazar los binarios.
sudo -iu verlihub tar czf /tmp/verlihub-files-$(date +%F).tar.gz /var/lib/verlihub
mariadb-dump -u verlihub -p verlihub > verlihub-db-$(date +%F).sql
cd /usr/local/src/verlihub
git pull
cd build
cmake ..
make -j"$(nproc)"
sudo systemctl stop verlihub
sudo make install
sudo ldconfig
sudo systemctl start verlihub
Lea las notas de la versión anterior antes de actualizar un centro de producción. Si el diseño de una tabla cambia, primero pruebe la actualización en una copia de la base de datos.
Problemas comunes
-
vh --installNo se puede conectar a MariaDB. Verifique el nombre de la base de datos, el usuario, la contraseña y si MariaDB está escuchando localmente. - El servicio comienza y sale. Leer
journalctl -u verlihub -n 100. La mayoría de las fallas en la primera ejecución son credenciales de la base de datos, archivos de configuración faltantes o un puerto que ya está en uso. - Los clientes se detienen. Verifique UFW, el firewall VPS, el reenvío de puerto NAT y el puerto de escucha Verlihub.
- El puerto 411 falla para el
verlihubusuario. Verifique las líneas de capacidad systemd, luego ejecutesudo systemctl daemon-reloadysudo systemctl restart verlihub. No inicie el concentrador con sudo. - El texto del chat está confuso. Haga coincidir la configuración regional del concentrador, el juego de caracteres de la base de datos y la codificación del cliente utilizados por su comunidad.
- NMDCS aún no está disponible. Cree y configure la ruta de proxy TLS compatible por separado. NMDC simple debería funcionar antes de agregar el acceso seguro al centro.