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/tcpis traditioneel. Verlihub kan het veilig binden via systemd zonder te draaien alsroot. Haven4111/tcpis 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
| Tovenaarsveld | Gebruik deze waarde | Reden |
|---|---|---|
| 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. |
| Databasewachtwoord | Uw MariaDB wachtwoord | Hiermee kan Verlihub hubtabellen lezen en schrijven. |
| Hub-adres | Uw openbare DNS-naam | Dit is het adres dat clients en hublists moeten publiceren. |
| Hub-poort | 411, 4111, of de door u gekozen poort | Moet overeenkomen met de regels van systemd, firewall en router. |
| Hoofdgebruiker | De bijnaam van uw operator | Creë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
| Rekening | Commando | Waar 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/verlihuben 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 --installkan 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
verlihubgebruiker. Controleer de systemd-capaciteitslijnen en voer vervolgens uitsudo systemctl daemon-reloadEnsudo 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.