Creat: 2026/06/30 13:24:48 America/Chicago
De: admin

Ce instalează acest ghid

Acest ghid instalează Verlihub de la oficial Verlihub/verlihub arborele sursă pe serverul Ubuntu. Compilează serverul hub NMDC cu CMake, stochează datele hub sub /var/lib/verlihub, folosește MariaDB pentru tabelele hub și pornește hub-ul printr-un serviciu systemd.

Folosiți articolul Docker dacă doriți izolarea containerului. Utilizați acest articol Ubuntu atunci când hub-ul ar trebui să ruleze direct pe un VPS, un server dedicat sau o mașină metalică.

Planul serverului înainte de instalare

  • Alegeți un nume DNS public pentru hub, cum ar fi hub.example.org.
  • Alegeți portul NMDC. Port 411/tcp este tradițională. Verlihub îl poate lega în siguranță prin systemd fără a rula ca root. Port 4111/tcp este o alternativă mai simplă atunci când nu aveți nevoie de portul istoric.
  • Decideți dacă această primă instalare va fi doar NMDC. Adăugați NMDCS după ce hub-ul simplu este stabil.
  • Păstrați un cont Linux pentru serviciu: verlihub.
  • Păstrați o bază de date MariaDB și un utilizator: verlihub.
  • Notați porecla și parola hub-ului principal înainte de a rula vrăjitorul.

Instalați pachetele Ubuntu

Notele oficiale de instalare listează bibliotecile client GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, fire de execuție, încărcare dinamică, Lua și Dialog. Pe Ubuntu, instalați mai întâi pachetele potrivite.

 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 

Porniți MariaDB și asigurați-vă că revine după repornire.

 sudo systemctl enable --now mariadb
sudo systemctl status mariadb 

Creați utilizatorul Verlihub Linux

Rulați Verlihub ca propriul utilizator neprivilegiat. Nu rulați hub-ul ca 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 

The verlihub utilizatorul ar trebui să dețină numai fișiere de rulare. Păstrați fișierele sursă sub /usr/local/src/verlihub, păstrați binarele sub /usr/local și păstrați administrarea bazei de date sub MariaDB. Contul de serviciu necesită acces la scriere /var/lib/verlihub şi /var/log/verlihub; nu are nevoie de acces sudo.

Utilizare sudo ca administrator de server pentru a instala pachete, a compila binarul și a crea unitatea systemd. Rulați procesul hub în sine ca verlihub. Această împărțire contează deoarece un hub acceptă trafic public neîncrezat de la clienții DC++.

Creați baza de date MariaDB

Creați baza de date și utilizatorul înainte de a rula vh --install. Utilizați o parolă reală în loc de valoarea exemplului.

 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; 

Verificați dacă utilizatorul aplicației se poate conecta.

 mariadb -u verlihub -p verlihub 

Descărcați sursa Verlihub

Creați din depozitul oficial GitHub. Păstrați fișierele sursă sub /usr/local/src astfel încât arborele de construcție este separat de datele de execuție a hub-ului.

 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 

Dacă aveți nevoie de o versiune specifică sau de un commit, verificați-l înainte de a construi. Pentru o primă instalare, construiți ramura curentă în amonte după ce citiți notele de depozit.

Compilați și instalați Verlihub

Calea de instalare în amonte folosește mkdir build, cmake .., make, make install, și ldconfig. Comanda de mai jos instalează Verlihub sub /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 

Păstrați opțiunile proxy TLS dezactivate pentru prima rulare, cu excepția cazului în care aveți deja dependența de proxy, certificate, reguli de firewall și un client de testare pregătit pentru NMDCS.

Rulați vh --install

The vh helper scrie configurația Verlihub, creează sau actualizează tabele hub și stochează primele setări hub. Rulați-l ca verlihub Fișierele generate astfel de utilizator Linux aparțin contului de serviciu.

 sudo -iu verlihub
vh --install 
Câmpul expertuluiUtilizați această valoareMotiv
Dosarul de configurare /var/lib/verlihub Deținută de verlihub utilizator de serviciu.
Gazda bazei de date localhost MariaDB rulează pe același server Ubuntu.
Numele bazei de date verlihub Se potrivește cu baza de date creată mai sus.
Utilizator baze de date verlihub Se potrivește cu utilizatorul MariaDB creat mai sus.
Parola bazei de dateParola dvs. MariaDBPermite Verlihub să citească și să scrie tabele hub.
Adresa hubNumele dvs. DNS publicAceasta este adresa clienților și hublists ar trebui să o publice.
Port hub 411, 4111, sau portul ales de dvsTrebuie să se potrivească cu regulile systemd, firewall și router.
Utilizator principalPorecla dvs. de operatorCreează primul cont cu acces de administrare hub.

Dacă vrăjitorul solicită acreditările de administrator MariaDB, utilizați contul de administrator local MariaDB. La multe instalări Ubuntu, aceasta înseamnă rularea administrării bazei de date sudo mariadb în loc de o autentificare root bazată pe parolă.

Testați hub-ul din prim-plan

Înainte de a crea systemd, porniți hub-ul o dată de la terminal și urmăriți ieșirea.

 vh --run /var/lib/verlihub 

Deschideți un al doilea terminal și testați portul de pe o altă mașină, dacă este posibil. Opriți procesul de prim-plan cu Ctrl+C după ce butucul pornește curat.

Rulați portul 411 fără sudo

Linux își rezervă în mod normal porturile de mai jos 1024 pentru procese privilegiate. Nu rezolvați asta pornind Verlihub cu sudo vh --run. Acordați serviciului doar capacitatea de legare de care are nevoie.

Unitatea systemd de mai jos folosește AmbientCapabilities=CAP_NET_BIND_SERVICE şi CapabilityBoundingSet=CAP_NET_BIND_SERVICE. Asta permite verlihub legarea utilizatorului 411/tcp în timp ce procesul încă rulează fără privilegii de root. Dacă utilizați 4111/tcp, puteți elimina acele două linii de capacitate.

Evitați sysctl global net.ipv4.ip_unprivileged_port_start=0 pentru acest job. Schimbă politica de port scăzut pentru fiecare proces de pe server. Evita setcap pe binarul Verlihub, cu excepția cazului în care controlați pe deplin actualizările, deoarece instalările de pachete sau surse pot înlocui fișierul și pot elimina capacitatea.

Creați un serviciu systemd

Creați un fișier de serviciu astfel încât Ubuntu să pornească Verlihub după pornire, să îl repornească după o blocare și să limiteze utilizatorul de rulare la fișierele hub.

 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 

Deschideți portul Hub

Dacă UFW este activat, deschideți portul hub pe care l-ați configurat. Verificați, de asemenea, panoul firewall de la furnizorul dvs. 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 

Pentru un server de acasă, redirecționați același port TCP de pe router către mașina Ubuntu. Pentru NMDCS, adăugați portul securizat numai după ce TLS este configurat și testat.

Verificați instalarea

VerificaComandaCe să cauți
Stare de serviciu systemctl status verlihub active (running).
Jurnalele hub journalctl -u verlihub -n 100 Fără erori de conectare la baza de date sau erori de legare la port.
Stare hub sudo -iu verlihub vh --status /var/lib/verlihub Asistentul poate citi configurația hub-ului.
Utilizator de serviciu systemctl show verlihub -p User -p Group -p NoNewPrivileges Rapoartele de service User=verlihub şi NoNewPrivileges=yes.
Capacitate de port scăzut systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet CAP_NET_BIND_SERVICE este prezent când hub-ul ascultă 411/tcp.
Port hub ss -ltnp | grep -E ':411|:4111' Un socket TCP de ascultare pe portul configurat.
Backup pentru baze de date mariadb-dump -u verlihub -p verlihub > verlihub.sql Există un fișier de descărcare înainte de a schimba pluginurile sau de a face upgrade.

Eticheta de găzduire pentru un hub public

  • Publicați o adresă accesibilă. Utilizați numele și portul DNS pe care clienții ar trebui să le păstreze în favorite și hublists. Nu trimiteți IP-uri temporare, redirecționări moarte sau mai multe nume pentru același hub decât dacă acestea servesc protocoale diferite.
  • Păstrați MOTD util. Listați adresa hub-ului, adresa securizată când este disponibilă, regulile, comanda de înregistrare, contactul operatorului și site-ul de asistență. Utilizatorii nu ar trebui să ghicească cum să se înregistreze sau cine deține hub-ul.
  • Nu falsificați statisticile hub. hublists public funcționează cel mai bine atunci când utilizatorii, partajarea, protocolul, software-ul și subiectul se potrivesc cu starea reală a hub-ului.
  • Păstrați jurnalele private și rotite. Jurnalele sunt pentru gestionarea abuzurilor și depanarea. Nu publicați IP-uri de utilizator, mesaje private sau date de înregistrare în pagini publice. Configurați rotația jurnalului înainte de prima săptămână ocupată.
  • Corectează gazda. Aplicați actualizările de securitate Ubuntu, mențineți MariaDB acceptat și testați upgrade-urile Verlihub pe o copie a bazei de date înainte de a înlocui fișierele binare de producție.
  • Limitați porturile expuse. Expuneți public portul hub și orice port hub securizat testat. Păstrați MariaDB privat. Restricționați SSH la IP-urile administratorului atunci când furnizorul dvs. îl acceptă.
  • Stabiliți reguli simple. Spuneți ce este interzis, cum gestionează operatorii spam-ul sau conținutul ilegal și ce se întâmplă cu roboții care inundă căutarea sau chatul.
  • Faceți backup înainte de experimente. Salva /var/lib/verlihub și baza de date MariaDB înainte de a schimba pluginurile, scripturile Lua, setările locale sau permisiunile de clasă.

Rutina de upgrade și backup

Faceți o copie de rezervă a bazei de date și /var/lib/verlihub înainte de a înlocui binarele.

 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 

Citiți notele de lansare din amonte înainte de a actualiza un hub de producție. Dacă se modifică aspectul unui tabel, testați mai întâi actualizarea pe o copie a bazei de date.

Probleme comune

  • vh --install nu se poate conecta la MariaDB. Verificați numele bazei de date, utilizatorul, parola și dacă MariaDB ascultă local.
  • Serviciul începe și iese. Citire journalctl -u verlihub -n 100. Cele mai multe erori de prima executare sunt acreditările bazei de date, fișierele de configurare lipsă sau un port deja utilizat.
  • Clienții expiră. Verificați UFW, firewall-ul VPS, redirecționarea portului NAT și portul de ascultare Verlihub.
  • Portul 411 eșuează pentru verlihub utilizator. Verificați liniile de capacitate systemd, apoi rulați sudo systemctl daemon-reload şi sudo systemctl restart verlihub. Nu porniți hub-ul cu sudo.
  • Textul de chat este deformat. Potriviți localul hub, setul de caractere al bazei de date și codificarea clientului utilizat de comunitatea dvs.
  • NMDCS nu este încă disponibil. Creați și configurați separat calea proxy TLS acceptată. NMDC simplu ar trebui să funcționeze înainte ca accesul securizat la hub să fie adăugat.