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/tcpist traditionell. Verlihub kann es sicher über systemd binden, ohne als auszuführenroot. Hafen4111/tcpist 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
| Assistentenfeld | Verwenden Sie diesen Wert | Grund |
|---|---|---|
| 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. |
| Datenbankpasswort | Ihr MariaDB-Passwort | Ermöglicht Verlihub das Lesen und Schreiben von Hub-Tabellen. |
| Hub-Adresse | Ihr öffentlicher DNS-Name | Dies ist die Adresse, die Clients und hublists veröffentlichen sollten. |
| Hub-Port | 411, 4111, oder der von Ihnen gewählte Hafen | Muss mit systemd, Firewall- und Routerregeln übereinstimmen. |
| Hauptbenutzer | Ihr Betreiber-Spitzname | Erstellt 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üfen | Befehl | Worauf 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/verlihubund 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 --installEs 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
verlihubBenutzer. Überprüfen Sie die systemd-Fähigkeitszeilen und führen Sie sie dann aussudo systemctl daemon-reloadUndsudo 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.