Aangemaakt: 2026/06/30 13:24:48 America/Chicago
Door: admin

Wat deze handleiding installeert

Deze handleiding installeert Verlihub van de ambtenaar Verlihub/verlihub bronstructuur op Ubuntu Server. Het compileert de NMDC hubserver met CMake, slaat hubgegevens op onder /var/lib/verlihub, gebruikt MariaDB voor hubtabellen en start de hub via een systemd-service.

Gebruik het artikel Docker als u containerisolatie wilt. Gebruik dit Ubuntu artikel wanneer de hub rechtstreeks op een VPS, dedicated server of bare-metal machine moet draaien.

Serverplan voordat u installeert

  • Kies een openbare DNS-naam voor de hub, zoals hub.example.org.
  • Kies de NMDC-poort. Haven 411/tcp is traditioneel. Verlihub kan het veilig binden via systemd zonder te draaien als root. Haven 4111/tcp is een eenvoudiger alternatief als u de historische haven niet nodig heeft.
  • Bepaal of deze eerste installatie alleen maar NMDC zal zijn. Voeg NMDCS toe nadat de gewone hub stabiel is.
  • Houd één Linux-account aan voor de service: verlihub.
  • Houd één MariaDB database en gebruiker aan: verlihub.
  • Noteer de bijnaam en het wachtwoord van de master hub voordat u de wizard uitvoert.

Installeer Ubuntu-pakketten

De officiële installatie-opmerkingen vermelden GCC, CMake, MySQL clientbibliotheken, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, threads, dynamisch laden, Lua en Dialog. Installeer op Ubuntu eerst de overeenkomende pakketten.

 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 

Start MariaDB en zorg ervoor dat deze terugkeert na het opnieuw opstarten.

 sudo systemctl enable --now mariadb
sudo systemctl status mariadb 

Creëer de Verlihub Linux gebruiker

Voer Verlihub uit als zijn eigen, niet-bevoorrechte gebruiker. Voer de hub niet uit als 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 

De verlihub de gebruiker mag alleen runtimebestanden bezitten. Bewaar bronbestanden onder /usr/local/src/verlihub, houd binaire bestanden onder /usr/local en houd het databasebeheer onder MariaDB. Het serviceaccount heeft schrijftoegang nodig /var/lib/verlihub En /var/log/verlihub; het heeft geen sudo-toegang nodig.

Gebruik sudo als serverbeheerder om pakketten te installeren, het binaire bestand te compileren en de systemd-eenheid te maken. Voer het hubproces zelf uit als verlihub. Deze splitsing is van belang omdat een hub niet-vertrouwd openbaar verkeer accepteert van DC++-clients.

Maak de MariaDB-database

Maak de database en gebruiker aan voordat u begint vh --install. Gebruik een echt wachtwoord in plaats van de voorbeeldwaarde.

 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; 

Controleer of de applicatiegebruiker kan inloggen.

 mariadb -u verlihub -p verlihub 

Download de Verlihub-bron

Bouw vanuit de officiële GitHub-repository. Bewaar bronbestanden onder /usr/local/src dus de build-boom is gescheiden van hub-runtimegegevens.

 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 

Als je een specifieke release of commit nodig hebt, bekijk deze dan voordat je gaat bouwen. Voor een eerste installatie bouwt u de huidige upstream branch na het lezen van de repository-opmerkingen.

Compileren en installeren Verlihub

Het upstream-installatiepad maakt gebruik van mkdir build, cmake .., make, make install, En ldconfig. Met de onderstaande opdracht wordt Verlihub onder geïnstalleerd /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 

Houd de TLS proxy-opties uitgeschakeld voor de eerste keer, tenzij u al over de proxy-afhankelijkheid, certificaten, firewallregels en een testclient beschikt voor NMDCS.

Voer vh --install uit

De vh helper schrijft de Verlihub-configuratie, maakt hub-tabellen aan of werkt deze bij, en slaat de eerste hub-instellingen op. Voer het uit als de verlihub Linux door de gebruiker gegenereerde bestanden behoren tot het serviceaccount.

 sudo -iu verlihub
vh --install 
TovenaarsveldGebruik deze waardeReden
Configuratiemap /var/lib/verlihub Eigendom van de verlihub dienstgebruiker.
Database-host localhost MariaDB draait op dezelfde Ubuntu-server.
Databasenaam verlihub Komt overeen met de hierboven gemaakte database.
Databasegebruiker verlihub Komt overeen met de MariaDB-gebruiker die hierboven is aangemaakt.
DatabasewachtwoordUw MariaDB wachtwoordHiermee kan Verlihub hubtabellen lezen en schrijven.
Hub-adresUw openbare DNS-naamDit is het adres dat clients en hublists moeten publiceren.
Hub-poort 411, 4111, of de door u gekozen poortMoet overeenkomen met de regels van systemd, firewall en router.
HoofdgebruikerDe bijnaam van uw operatorCreëert het eerste account met toegang tot hubbeheer.

Als de wizard om MariaDB beheerdersreferenties vraagt, gebruik dan het lokale MariaDB beheerdersaccount. Bij veel Ubuntu-installaties betekent dit dat het databasebeheer moet worden uitgevoerd sudo mariadb in plaats van een op een wachtwoord gebaseerde root login.

Test de hub op de voorgrond

Voordat u systemd maakt, start u de hub één keer vanaf de terminal en bekijkt u de uitvoer.

 vh --run /var/lib/verlihub 

Open een tweede terminal en test indien mogelijk de poort vanaf een andere machine. Stop het voorgrondproces met Ctrl+C nadat de hub schoon start.

Voer poort 411 uit zonder sudo

Linux reserveert normaal gesproken onderstaande poorten 1024 voor bevoorrechte processen. Los dat niet op door Verlihub te beginnen met sudo vh --run. Geef de service alleen de bindingsmogelijkheden die deze nodig heeft.

De onderstaande systemd-eenheid gebruikt AmbientCapabilities=CAP_NET_BIND_SERVICE En CapabilityBoundingSet=CAP_NET_BIND_SERVICE. Dat laat de verlihub gebruiker binden 411/tcp terwijl het proces nog steeds draait zonder rootrechten. Als je gebruikt 4111/tcp, mag u deze twee mogelijkhedenlijnen verwijderen.

Vermijd het globale sysctl net.ipv4.ip_unprivileged_port_start=0 voor deze baan. Het verandert het lage-poortbeleid voor elk proces op de server. Voorkomen setcap op het binaire bestand Verlihub, tenzij u de upgrades volledig beheert, omdat pakket- of broninstallaties het bestand kunnen vervangen en de mogelijkheid kunnen wegvallen.

Creëer een systemd-service

Maak een servicebestand zodat Ubuntu Verlihub na het opstarten start, opnieuw opstart na een crash en de runtime-gebruiker beperkt houdt tot de hub-bestanden.

 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 

Open de Hub-poort

Als UFW is ingeschakeld, open dan de hubpoort die u hebt geconfigureerd. Controleer ook het firewallpaneel bij uw VPS-provider.

 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 

Voor een thuisserver stuurt u dezelfde TCP-poort op de router door naar de Ubuntu-machine. Voor NMDCS voegt u de beveiligde poort pas toe nadat TLS is geconfigureerd en getest.

Controleer de installatie

RekeningCommandoWaar u op moet letten
Servicestatus systemctl status verlihub active (running).
Hub-logboeken journalctl -u verlihub -n 100 Geen databaseaanmeldingsfouten of poortbindingsfouten.
Hub-status sudo -iu verlihub vh --status /var/lib/verlihub De helper kan de hubconfiguratie lezen.
Servicegebruiker systemctl show verlihub -p User -p Group -p NoNewPrivileges De dienst meldt User=verlihub En NoNewPrivileges=yes.
Mogelijkheid tot lage poort systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet CAP_NET_BIND_SERVICE is aanwezig wanneer de hub meeluistert 411/tcp.
Hub-poort ss -ltnp | grep -E ':411|:4111' Een luisterende TCP-socket op de geconfigureerde poort.
Databaseback-up mariadb-dump -u verlihub -p verlihub > verlihub.sql Er bestaat een dumpbestand voordat u plug-ins wijzigt of upgradet.

Hosting-etiquette voor een openbare hub

  • Publiceer één bereikbaar adres. Gebruik de DNS-naam en poort die clients in favorieten moeten bewaren en hublists. Geef geen tijdelijke IP-adressen, dode omleidingen of meerdere namen op voor dezelfde hub, tenzij deze verschillende protocollen gebruiken.
  • Houd de MOTD nuttig. Vermeld het hubadres, het beveiligde adres indien beschikbaar, regels, registratieopdracht, operatorcontact en ondersteuningssite. Gebruikers hoeven niet te raden hoe ze zich moeten registreren of wie de eigenaar is van de hub.
  • Maak geen vervalsing van hubstatistieken. Publieke hublists werkt het beste wanneer gebruikers, delen, protocollen, software en onderwerp overeenkomen met de echte hubstatus.
  • Houd logboeken privé en gerouleerd. Logboeken zijn bedoeld voor het afhandelen van misbruik en het oplossen van problemen. Publiceer geen gebruikers-IP's, privéberichten of registratiegegevens op openbare pagina's. Configureer logrotatie vóór de eerste drukke week.
  • Patch de host. Pas Ubuntu beveiligingsupdates toe, zorg ervoor dat MariaDB wordt ondersteund en test Verlihub-upgrades op een databasekopie voordat u productie-binaire bestanden vervangt.
  • Beperk blootgestelde poorten. Maak de hubpoort en eventuele geteste beveiligde hubpoorten openbaar. Houd MariaDB privé. Beperk SSH tot beheerder-IP's als uw provider dit ondersteunt.
  • Stel duidelijke regels op. Geef aan wat verboden is, hoe operators omgaan met spam of illegale inhoud, en wat er gebeurt met bots die zoekopdrachten of chats overspoelen.
  • Maak een back-up vóór experimenten. Redden /var/lib/verlihub en de MariaDB-database voordat u plug-ins, Lua-scripts, landinstellingen of klassenrechten wijzigt.

Upgrade- en back-uproutine

Maak een back-up van de database en /var/lib/verlihub voordat binaire bestanden worden vervangen.

 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 

Lees de upstream-releaseopmerkingen voordat u een productiehub upgradet. Als een tabelindeling verandert, test u de upgrade eerst op een kopie van de database.

Veelvoorkomende problemen

  • vh --install kan geen verbinding maken met MariaDB. Controleer de databasenaam, gebruiker en wachtwoord en of MariaDB lokaal luistert.
  • De dienst begint en eindigt. Lezen journalctl -u verlihub -n 100. Most first-run failures are database credentials, missing config files, or a port already in use.
  • Klanten hebben een time-out. Controleer UFW, de VPS firewall, NAT port forwarding en de Verlihub luisterpoort.
  • Poort 411 mislukt voor de verlihub gebruiker. Controleer de systemd-capaciteitslijnen en voer vervolgens uit sudo systemctl daemon-reload En sudo systemctl restart verlihub. Start de hub niet met sudo.
  • Chattekst is onleesbaar. Zorg ervoor dat de hublandinstelling, de databasetekenset en de clientcodering die door uw community worden gebruikt, overeenkomen.
  • NMDCS is nog niet beschikbaar. Bouw en configureer het ondersteunde TLS proxypad afzonderlijk. Normaal NMDC zou moeten werken voordat beveiligde hubtoegang wordt toegevoegd.