Erstellt: 2026/06/30 13:24:48 America/Chicago
Von: admin

Was dieses Handbuch installiert

In diesem Handbuch wird Verlihub vom offiziellen Hersteller installiert Verlihub/verlihub Quellbaum auf dem Ubuntu-Server. Es kompiliert den NMDC-Hub-Server mit CMake und speichert Hub-Daten darunter /var/lib/verlihub, verwendet MariaDB für Hubtabellen und startet den Hub über einen systemd-Dienst.

Verwenden Sie den Artikel Docker, wenn Sie eine Containerisolierung wünschen. Verwenden Sie diesen Ubuntu-Artikel, wenn der Hub direkt auf einem VPS, einem dedizierten Server oder einer Bare-Metal-Maschine ausgeführt werden soll.

Serverplan vor der Installation

  • Wählen Sie einen öffentlichen DNS-Namen für den Hub, z hub.example.org.
  • Wählen Sie den Port NMDC. Hafen 411/tcp ist traditionell. Verlihub kann es sicher über systemd binden, ohne als auszuführen root. Hafen 4111/tcp ist eine einfachere Alternative, wenn Sie den historischen Hafen nicht benötigen.
  • Entscheiden Sie, ob diese erste Installation nur NMDC sein soll. Fügen Sie NMDCS hinzu, nachdem der einfache Hub stabil ist.
  • Behalten Sie ein Linux-Konto für den Dienst: verlihub.
  • Behalten Sie eine MariaDB-Datenbank und einen Benutzer bei: verlihub.
  • Notieren Sie sich den Spitznamen und das Passwort des Master-Hubs, bevor Sie den Assistenten ausführen.

Installieren Sie Ubuntu-Pakete

In den offiziellen Installationshinweisen sind GCC, CMake, MySQL-Clientbibliotheken, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, Threads, dynamisches Laden, Lua und Dialog aufgeführt. Installieren Sie auf Ubuntu zunächst die passenden Pakete.

 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 

Starten Sie MariaDB und stellen Sie sicher, dass es nach dem Neustart wieder angezeigt wird.

 sudo systemctl enable --now mariadb
sudo systemctl status mariadb 

Erstellen Sie den Benutzer Verlihub Linux

Führen Sie Verlihub als eigenen unprivilegierten Benutzer aus. Betreiben Sie den Hub nicht 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 

Der verlihub Der Benutzer sollte nur Laufzeitdateien besitzen. Behalten Sie die Quelldateien unter /usr/local/src/verlihub, Binärdateien unten behalten /usr/local, und behalten Sie die Datenbankverwaltung unter MariaDB bei. Für das Dienstkonto ist Schreibzugriff erforderlich /var/lib/verlihub Und /var/log/verlihub; Es ist kein Sudo-Zugriff erforderlich.

Verwenden sudo als Serveradministrator, um Pakete zu installieren, die Binärdatei zu kompilieren und die systemd-Einheit zu erstellen. Führen Sie den Hub-Prozess selbst aus als verlihub. Diese Aufteilung ist wichtig, da ein Hub nicht vertrauenswürdigen öffentlichen Datenverkehr von DC++-Clients akzeptiert.

Erstellen Sie die MariaDB-Datenbank

Erstellen Sie vor der Ausführung die Datenbank und den Benutzer vh --install. Verwenden Sie anstelle des Beispielwerts ein echtes Passwort.

 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; 

Überprüfen Sie, ob sich der Anwendungsbenutzer anmelden kann.

 mariadb -u verlihub -p verlihub 

Laden Sie die Verlihub-Quelle herunter

Erstellen Sie aus dem offiziellen GitHub-Repository. Behalten Sie die Quelldateien unter /usr/local/src Daher ist der Build-Baum von den Hub-Laufzeitdaten getrennt.

 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 

Wenn Sie ein bestimmtes Release oder Commit benötigen, prüfen Sie es vor dem Erstellen. Erstellen Sie für eine Erstinstallation den aktuellen Upstream-Zweig, nachdem Sie die Repository-Hinweise gelesen haben.

Kompilieren und installieren Sie Verlihub

Der Upstream-Installationspfad verwendet mkdir build, cmake .., make, make install, Und ldconfig. Der folgende Befehl installiert Verlihub unter /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 

Lassen Sie die TLS-Proxy-Optionen für die erste Ausführung deaktiviert, es sei denn, Sie verfügen bereits über die Proxy-Abhängigkeit, Zertifikate, Firewall-Regeln und einen Test-Client, der für NMDCS bereit ist.

Führen Sie vh --install aus

Der vh Der Helfer schreibt die Verlihub-Konfiguration, erstellt oder aktualisiert Hub-Tabellen und speichert die ersten Hub-Einstellungen. Führen Sie es aus als verlihub Linux Benutzer, daher gehören generierte Dateien zum Dienstkonto.

 sudo -iu verlihub
vh --install 
AssistentenfeldVerwenden Sie diesen WertGrund
Konfigurationsordner /var/lib/verlihub Im Besitz der verlihub Dienstbenutzer.
Datenbankhost localhost MariaDB läuft auf demselben Ubuntu-Server.
Datenbankname verlihub Entspricht der oben erstellten Datenbank.
Datenbankbenutzer verlihub Entspricht dem oben erstellten Benutzer MariaDB.
DatenbankpasswortIhr MariaDB-PasswortErmöglicht Verlihub das Lesen und Schreiben von Hub-Tabellen.
Hub-AdresseIhr öffentlicher DNS-NameDies ist die Adresse, die Clients und hublists veröffentlichen sollten.
Hub-Port 411, 4111, oder der von Ihnen gewählte HafenMuss mit systemd, Firewall- und Routerregeln übereinstimmen.
HauptbenutzerIhr Betreiber-SpitznameErstellt das erste Konto mit Hub-Administrationszugriff.

Wenn der Assistent nach MariaDB-Administratoranmeldeinformationen fragt, verwenden Sie das lokale MariaDB-Administratorkonto. Bei vielen Ubuntu-Installationen bedeutet dies, dass die Datenbankverwaltung ausgeführt wird sudo mariadb anstelle eines passwortbasierten Root-Logins.

Testen Sie den Hub im Vordergrund

Bevor Sie systemd erstellen, starten Sie den Hub einmal vom Terminal aus und beobachten Sie die Ausgabe.

 vh --run /var/lib/verlihub 

Öffnen Sie ein zweites Terminal und testen Sie den Port nach Möglichkeit von einem anderen Computer aus. Stoppen Sie den Vordergrundprozess mit Ctrl+C nachdem der Hub sauber gestartet ist.

Führen Sie Port 411 ohne Sudo aus

Linux reserviert normalerweise die folgenden Ports 1024 für privilegierte Prozesse. Lösen Sie das Problem nicht, indem Sie Verlihub mit starten sudo vh --run. Gewähren Sie dem Dienst nur die Bindungsfähigkeit, die er benötigt.

Die folgende systemd-Einheit verwendet AmbientCapabilities=CAP_NET_BIND_SERVICE Und CapabilityBoundingSet=CAP_NET_BIND_SERVICE. Das lässt die verlihub Benutzerbindung 411/tcp während der Prozess weiterhin ohne Root-Rechte läuft. Wenn Sie verwenden 4111/tcp, können Sie diese beiden Fähigkeitslinien entfernen.

Vermeiden Sie das globale sysctl net.ipv4.ip_unprivileged_port_start=0 für diesen Job. Es ändert die Low-Port-Richtlinie für jeden Prozess auf dem Server. Vermeiden setcap auf der Verlihub-Binärdatei, es sei denn, Sie haben die vollständige Kontrolle über Upgrades, da Paket- oder Quellinstallationen die Datei ersetzen und die Funktion verlieren können.

Erstellen Sie einen systemd-Dienst

Erstellen Sie eine Dienstdatei, damit Ubuntu Verlihub nach dem Booten startet, nach einem Absturz neu startet und den Laufzeitbenutzer auf die Hub-Dateien beschränkt.

 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 

Öffnen Sie den Hub-Port

Wenn UFW aktiviert ist, öffnen Sie den von Ihnen konfigurierten Hub-Port. Überprüfen Sie auch das Firewall-Panel Ihres VPS-Anbieters.

 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 

Leiten Sie für einen Heimserver denselben TCP-Port auf dem Router an den Ubuntu-Computer weiter. Fügen Sie für NMDCS den sicheren Port erst hinzu, nachdem TLS konfiguriert und getestet wurde.

Überprüfen Sie die Installation

ÜberprüfenBefehlWorauf Sie achten sollten
Dienststatus systemctl status verlihub active (running).
Hub-Protokolle journalctl -u verlihub -n 100 Keine Datenbank-Anmeldefehler oder Port-Bindungsfehler.
Hub-Status sudo -iu verlihub vh --status /var/lib/verlihub Der Helfer kann die Hub-Konfiguration lesen.
Dienstbenutzer systemctl show verlihub -p User -p Group -p NoNewPrivileges Der Dienst meldet User=verlihub Und NoNewPrivileges=yes.
Low-Port-Fähigkeit systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet CAP_NET_BIND_SERVICE ist vorhanden, wenn der Hub mithört 411/tcp.
Hub-Port ss -ltnp | grep -E ':411|:4111' Ein lauschender TCP-Socket am konfigurierten Port.
Datenbanksicherung mariadb-dump -u verlihub -p verlihub > verlihub.sql Bevor Sie Plugins ändern oder ein Upgrade durchführen, ist eine Dump-Datei vorhanden.

Hosting-Etikette für einen öffentlichen Hub

  • Veröffentlichen Sie eine erreichbare Adresse. Verwenden Sie den DNS-Namen und Port, den Clients in den Favoriten behalten sollen, und hublists. Übermitteln Sie keine temporären IP-Adressen, tote Weiterleitungen oder mehrere Namen für denselben Hub, es sei denn, sie bedienen unterschiedliche Protokolle.
  • Halten Sie den MOTD nützlich. Listen Sie die Hub-Adresse, die sichere Adresse (falls verfügbar), die Regeln, den Registrierungsbefehl, den Betreiberkontakt und die Support-Site auf. Benutzer sollten nicht raten müssen, wie sie sich registrieren oder wem der Hub gehört.
  • Fälschen Sie keine Hub-Statistiken. Öffentliche hublists funktionieren am besten, wenn Benutzer, Freigabe, Protokoll, Software und Thema mit dem tatsächlichen Hub-Status übereinstimmen.
  • Halten Sie Protokolle privat und rotieren Sie. Protokolle dienen der Missbrauchsbehandlung und Fehlerbehebung. Veröffentlichen Sie keine Benutzer-IPs, privaten Nachrichten oder Registrierungsdaten auf öffentlichen Seiten. Konfigurieren Sie die Protokollrotation vor der ersten arbeitsreichen Woche.
  • Patchen Sie den Host. Wenden Sie Ubuntu-Sicherheitsupdates an, sorgen Sie dafür, dass MariaDB unterstützt wird, und testen Sie Verlihub-Upgrades an einer Datenbankkopie, bevor Sie Produktionsbinärdateien ersetzen.
  • Begrenzen Sie exponierte Ports. Machen Sie den Hub-Port und alle getesteten sicheren Hub-Ports öffentlich zugänglich. Halten Sie MariaDB privat. Beschränken Sie SSH auf Administrator-IPs, wenn Ihr Anbieter dies unterstützt.
  • Legen Sie klare Regeln fest. Geben Sie an, was verboten ist, wie Betreiber mit Spam oder illegalen Inhalten umgehen und was mit Bots passiert, die die Suche oder den Chat überfluten.
  • Sichern Sie sich vor Experimenten. Speichern /var/lib/verlihub und die MariaDB-Datenbank, bevor Sie Plugins, Lua-Skripte, Gebietsschemaeinstellungen oder Klassenberechtigungen ändern.

Upgrade- und Backup-Routine

Sichern Sie die Datenbank und /var/lib/verlihub bevor Sie Binärdateien ersetzen.

 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 

Lesen Sie die Versionshinweise der Originalautoren, bevor Sie einen Produktionshub aktualisieren. Wenn sich ein Tabellenlayout ändert, testen Sie das Upgrade zunächst an einer Kopie der Datenbank.

Häufige Probleme

  • vh --install Es kann keine Verbindung zu MariaDB hergestellt werden. Überprüfen Sie den Datenbanknamen, den Benutzer und das Kennwort und ob MariaDB lokal lauscht.
  • Der Dienst wird gestartet und beendet. Lesen journalctl -u verlihub -n 100. Die meisten Fehler beim ersten Start sind auf Datenbankanmeldeinformationen, fehlende Konfigurationsdateien oder einen bereits verwendeten Port zurückzuführen.
  • Kunden haben eine Auszeit. Überprüfen Sie UFW, die Firewall VPS, die Portweiterleitung NAT und den Listen-Port Verlihub.
  • Port 411 schlägt für die fehl verlihub Benutzer. Überprüfen Sie die systemd-Fähigkeitszeilen und führen Sie sie dann aus sudo systemctl daemon-reload Und sudo systemctl restart verlihub. Starten Sie den Hub nicht mit sudo.
  • Der Chattext ist verstümmelt. Passen Sie das Hub-Gebietsschema, den Datenbank-Zeichensatz und die Client-Kodierung an, die von Ihrer Community verwendet werden.
  • NMDCS ist noch nicht verfügbar. Erstellen und konfigurieren Sie den unterstützten TLS-Proxy-Pfad separat. Einfaches NMDC sollte funktionieren, bevor der sichere Hub-Zugriff hinzugefügt wird.