Co tato příručka instaluje
Tato příručka nainstaluje Verlihub od oficiálního Verlihub/verlihub zdrojový strom na serveru Ubuntu. Kompiluje NMDC hub server s CMake, ukládá data hubu pod /var/lib/verlihub, používá MariaDB pro tabulky hubů a spouští hub prostřednictvím služby systemd.
Pokud chcete izolaci kontejnerů, použijte článek Docker. Tento článek Ubuntu použijte, pokud by měl rozbočovač běžet přímo na VPS, dedikovaném serveru nebo holém počítači.
Plán serveru před instalací
- Vyberte veřejný název DNS pro hub, jako např
hub.example.org. - Vyberte port NMDC. Přístav
411/tcpje tradiční. Verlihub jej může bezpečně svázat přes systemd bez spuštění jakoroot. Přístav4111/tcpje jednodušší alternativou, když nepotřebujete historický přístav. - Rozhodněte, zda tato první instalace bude pouze obyčejná NMDC. Přidejte NMDCS poté, co bude prostý náboj stabilní.
- Ponechte si jeden účet Linux pro službu:
verlihub. - Udržujte jednu databázi MariaDB a uživatele:
verlihub. - Před spuštěním průvodce si zapište přezdívku a heslo hlavního centra.
Nainstalujte balíčky Ubuntu
Oficiální seznam poznámek k instalaci GCC, CMake, MySQL klientských knihoven, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, vlákna, dynamické načítání, Lua a Dialog. Na Ubuntu nejprve nainstalujte odpovídající balíčky.
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
Spusťte MariaDB a ujistěte se, že se po restartu vrátí.
sudo systemctl enable --now mariadb
sudo systemctl status mariadb
Vytvořte uživatele Verlihub Linux
Spusťte Verlihub jako jeho vlastní neprivilegovaný uživatel. Nespouštějte rozbočovač jako 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 uživatel by měl vlastnit pouze soubory runtime. Udržujte zdrojové soubory pod /usr/local/src/verlihub, ponechat binární soubory pod /usr/local a správu databáze ponechat pod MariaDB. Účet služby potřebuje přístup pro zápis /var/lib/verlihub a /var/log/verlihub; nepotřebuje přístup sudo.
Použití sudo jako správce serveru nainstalujte balíčky, zkompilujte binární soubor a vytvořte jednotku systemd. Spusťte samotný proces hubu jako verlihub. Toto rozdělení je důležité, protože rozbočovač přijímá nedůvěryhodný veřejný provoz od klientů DC++.
Vytvořte databázi MariaDB
Před spuštěním vytvořte databázi a uživatele vh --install. Místo vzorové hodnoty použijte skutečné heslo.
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;
Zkontrolujte, zda se uživatel aplikace může přihlásit.
mariadb -u verlihub -p verlihub
Stáhněte si zdroj Verlihub
Sestavte z oficiálního úložiště GitHub. Udržujte zdrojové soubory pod /usr/local/src takže strom sestavení je oddělený od dat za běhu centra.
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
Pokud potřebujete konkrétní vydání nebo potvrzení, zkontrolujte je před sestavením. Pro první instalaci vytvořte aktuální upstream větev po přečtení poznámek k úložišti.
Kompilace a instalace Verlihub
Upstream instalační cesta používá mkdir build, cmake .., make, make install a ldconfig. Níže uvedený příkaz nainstaluje Verlihub pod /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ři prvním spuštění ponechte možnosti proxy TLS vypnuté, pokud již nemáte závislost proxy, certifikáty, pravidla brány firewall a testovacího klienta připraveného pro NMDCS.
Spusťte vh --install
The vh helper zapíše konfiguraci Verlihub, vytvoří nebo aktualizuje tabulky hubu a uloží první nastavení hubu. Spusťte jej jako verlihub Linux uživatelem takto vygenerované soubory patří k servisnímu účtu.
sudo -iu verlihub
vh --install
| Pole čaroděje | Použijte tuto hodnotu | Důvod |
|---|---|---|
| Konfigurační složka | /var/lib/verlihub | Ve vlastnictví společnosti verlihub uživatel služby. |
| Hostitel databáze | localhost | MariaDB běží na stejném serveru Ubuntu. |
| Název databáze | verlihub | Odpovídá databázi vytvořené výše. |
| Uživatel databáze | verlihub | Odpovídá výše vytvořenému uživateli MariaDB. |
| Heslo databáze | Vaše heslo MariaDB | Umožňuje Verlihub číst a zapisovat tabulky rozbočovačů. |
| Adresa hubu | Vaše veřejné jméno DNS | Toto je adresa klientů a hublists by měla být zveřejněna. |
| Hub port | 411, 4111 nebo vámi zvolený port | Musí odpovídat systemd, pravidlům brány firewall a směrovače. |
| Hlavní uživatel | Přezdívka vašeho operátora | Vytvoří první účet s přístupem pro správu centra. |
Pokud vás průvodce požádá o pověření správce MariaDB, použijte místní účet správce MariaDB. U mnoha instalací Ubuntu to znamená spuštění administrace databáze sudo mariadb namísto přihlášení root na základě hesla.
Otestujte Hub V Popředí
Před vytvořením systemd spusťte hub jednou z terminálu a sledujte výstup.
vh --run /var/lib/verlihub
Otevřete druhý terminál a otestujte port z jiného počítače, pokud je to možné. Zastavte proces v popředí pomocí Ctrl+C po čistém startu náboje.
Spusťte Port 411 bez sudo
Linux normálně rezervuje porty níže 1024 pro privilegované procesy. Neřešte to tím, že začnete Verlihub s sudo vh --run. Poskytněte službě pouze schopnost vazby, kterou potřebuje.
Jednotka systemd níže používá AmbientCapabilities=CAP_NET_BIND_SERVICE a CapabilityBoundingSet=CAP_NET_BIND_SERVICE. To umožňuje verlihub uživatelská vazba 411/tcp zatímco proces stále běží bez oprávnění root. Pokud použijete 4111/tcp, můžete tyto dva řádky schopností odstranit.
Vyhněte se globálnímu sysctl net.ipv4.ip_unprivileged_port_start=0 pro tuto práci. Mění zásady nízkého portu pro každý proces na serveru. Vyhněte se setcap na binární soubor Verlihub, pokud nemáte plnou kontrolu nad upgrady, protože instalace balíčku nebo zdroje mohou nahradit soubor a zrušit funkci.
Vytvořte službu systemd
Vytvořte soubor služby tak, aby se Ubuntu spustil Verlihub po spuštění, restartoval jej po zhroucení a aby byl uživatel běhového prostředí omezen na soubory rozbočovače.
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
Otevřete Hub Port
Pokud je povoleno UFW, otevřete port rozbočovače, který jste nakonfigurovali. Zkontrolujte také panel brány firewall u poskytovatele 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
V případě domácího serveru přepošlete stejný port TCP na routeru do počítače Ubuntu. Pro NMDCS přidejte zabezpečený port až poté, co je TLS nakonfigurován a otestován.
Ověřte instalaci
| Kontrola | Příkaz | Co hledat |
|---|---|---|
| Stav služby | systemctl status verlihub | active (running). |
| Protokoly rozbočovače | journalctl -u verlihub -n 100 | Žádné chyby přihlášení k databázi nebo chyby vazby portů. |
| Stav centra | sudo -iu verlihub vh --status /var/lib/verlihub | Pomocník může číst konfiguraci hubu. |
| Uživatel služby | systemctl show verlihub -p User -p Group -p NoNewPrivileges | Služba hlásí User=verlihub a NoNewPrivileges=yes. |
| Schopnost nízkého portu | systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet | CAP_NET_BIND_SERVICE je přítomen, když hub naslouchá 411/tcp. |
| Hub port | ss -ltnp | grep -E ':411|:4111' | Naslouchající soket TCP na nakonfigurovaném portu. |
| Zálohování databáze | mariadb-dump -u verlihub -p verlihub > verlihub.sql | Před změnou zásuvných modulů nebo upgradem existuje soubor výpisu. |
Hostingová etiketa pro veřejné centrum
- Zveřejněte jednu dostupnou adresu. Použijte název DNS a port, které by si klienti měli ponechat v oblíbených a hublists. Neodesílejte dočasné IP adresy, mrtvá přesměrování nebo několik názvů pro stejný hub, pokud neobsluhují různé protokoly.
- Udržujte MOTD užitečné. Uveďte adresu hubu, zabezpečenou adresu, je-li k dispozici, pravidla, příkaz k registraci, kontakt na operátora a web podpory. Uživatelé by neměli hádat, jak se zaregistrovat nebo kdo vlastní hub.
- Nefalšujte statistiky hubu. Veřejné hublists fungují nejlépe, když uživatelé, sdílení, protokol, software a téma odpovídají skutečnému stavu centra.
- Udržujte protokoly soukromé a otočené. Protokoly slouží k řešení zneužití a řešení problémů. Na veřejných stránkách nezveřejňujte uživatelské IP adresy, soukromé zprávy ani registrační údaje. Nakonfigurujte rotaci protokolu před prvním rušným týdnem.
- Opravte hostitele. Aplikujte aktualizace zabezpečení Ubuntu, udržujte podporu MariaDB a otestujte upgrady Verlihub na kopii databáze před nahrazením produkčních binárních souborů.
- Omezte exponované porty. Zveřejněte port rozbočovače a jakýkoli testovaný zabezpečený port rozbočovače. Udržujte MariaDB v soukromí. Omezte SSH na administrátorské IP adresy, pokud to váš poskytovatel podporuje.
- Nastavte jasná pravidla. Uveďte, co je zakázáno, jak operátoři nakládají se spamem nebo nelegálním obsahem a co se stane s roboty, kteří zahlcují vyhledávání nebo chat.
- Před experimenty zálohujte. Uložit
/var/lib/verlihuba databázi MariaDB před změnou zásuvných modulů, skriptů Lua, nastavení národního prostředí nebo oprávnění třídy.
Upgrade A Zálohování Rutina
Zálohujte databázi a /var/lib/verlihub před nahrazením binárních souborů.
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
Před upgradem produkčního centra si přečtěte poznámky k upstreamové verzi. Pokud se rozložení tabulky změní, otestujte nejprve upgrade na kopii databáze.
Běžné problémy
-
vh --installnelze se připojit k MariaDB. Zkontrolujte název databáze, uživatele, heslo a zda MariaDB naslouchá místně. - Služba se spustí a ukončí. Číst
journalctl -u verlihub -n 100. Většina selhání při prvním spuštění jsou pověření databáze, chybějící konfigurační soubory nebo již používaný port. - Klientům vypršel časový limit. Zkontrolujte UFW, VPS firewall, NAT přesměrování portů a Verlihub naslouchací port.
- Port 411 selže pro
verlihubuživatel. Zkontrolujte řádky schopností systemd a poté spusťtesudo systemctl daemon-reloadasudo systemctl restart verlihub. Nespouštějte hub pomocí sudo. - Text chatu je zkomolený. Porovnejte národní prostředí centra, znakovou sadu databáze a kódování klienta používané vaší komunitou.
- NMDCS zatím není k dispozici. Sestavte a nakonfigurujte podporovanou cestu proxy TLS samostatně. Obyčejný NMDC by měl fungovat před přidáním zabezpečeného přístupu k hubu.