Ce instalează acest ghid
Acest ghid instalează Verlihub de la oficial Verlihub/verlihub arborele sursă pe serverul Ubuntu. Compilează serverul hub NMDC cu CMake, stochează datele hub sub /var/lib/verlihub, folosește MariaDB pentru tabelele hub și pornește hub-ul printr-un serviciu systemd.
Folosiți articolul Docker dacă doriți izolarea containerului. Utilizați acest articol Ubuntu atunci când hub-ul ar trebui să ruleze direct pe un VPS, un server dedicat sau o mașină metalică.
Planul serverului înainte de instalare
- Alegeți un nume DNS public pentru hub, cum ar fi
hub.example.org. - Alegeți portul NMDC. Port
411/tcpeste tradițională. Verlihub îl poate lega în siguranță prin systemd fără a rula caroot. Port4111/tcpeste o alternativă mai simplă atunci când nu aveți nevoie de portul istoric. - Decideți dacă această primă instalare va fi doar NMDC. Adăugați NMDCS după ce hub-ul simplu este stabil.
- Păstrați un cont Linux pentru serviciu:
verlihub. - Păstrați o bază de date MariaDB și un utilizator:
verlihub. - Notați porecla și parola hub-ului principal înainte de a rula vrăjitorul.
Instalați pachetele Ubuntu
Notele oficiale de instalare listează bibliotecile client GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, fire de execuție, încărcare dinamică, Lua și Dialog. Pe Ubuntu, instalați mai întâi pachetele potrivite.
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
Porniți MariaDB și asigurați-vă că revine după repornire.
sudo systemctl enable --now mariadb
sudo systemctl status mariadb
Creați utilizatorul Verlihub Linux
Rulați Verlihub ca propriul utilizator neprivilegiat. Nu rulați hub-ul ca 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 utilizatorul ar trebui să dețină numai fișiere de rulare. Păstrați fișierele sursă sub /usr/local/src/verlihub, păstrați binarele sub /usr/local și păstrați administrarea bazei de date sub MariaDB. Contul de serviciu necesită acces la scriere /var/lib/verlihub şi /var/log/verlihub; nu are nevoie de acces sudo.
Utilizare sudo ca administrator de server pentru a instala pachete, a compila binarul și a crea unitatea systemd. Rulați procesul hub în sine ca verlihub. Această împărțire contează deoarece un hub acceptă trafic public neîncrezat de la clienții DC++.
Creați baza de date MariaDB
Creați baza de date și utilizatorul înainte de a rula vh --install. Utilizați o parolă reală în loc de valoarea exemplului.
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;
Verificați dacă utilizatorul aplicației se poate conecta.
mariadb -u verlihub -p verlihub
Descărcați sursa Verlihub
Creați din depozitul oficial GitHub. Păstrați fișierele sursă sub /usr/local/src astfel încât arborele de construcție este separat de datele de execuție a hub-ului.
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
Dacă aveți nevoie de o versiune specifică sau de un commit, verificați-l înainte de a construi. Pentru o primă instalare, construiți ramura curentă în amonte după ce citiți notele de depozit.
Compilați și instalați Verlihub
Calea de instalare în amonte folosește mkdir build, cmake .., make, make install, și ldconfig. Comanda de mai jos instalează Verlihub sub /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ăstrați opțiunile proxy TLS dezactivate pentru prima rulare, cu excepția cazului în care aveți deja dependența de proxy, certificate, reguli de firewall și un client de testare pregătit pentru NMDCS.
Rulați vh --install
The vh helper scrie configurația Verlihub, creează sau actualizează tabele hub și stochează primele setări hub. Rulați-l ca verlihub Fișierele generate astfel de utilizator Linux aparțin contului de serviciu.
sudo -iu verlihub
vh --install
| Câmpul expertului | Utilizați această valoare | Motiv |
|---|---|---|
| Dosarul de configurare | /var/lib/verlihub | Deținută de verlihub utilizator de serviciu. |
| Gazda bazei de date | localhost | MariaDB rulează pe același server Ubuntu. |
| Numele bazei de date | verlihub | Se potrivește cu baza de date creată mai sus. |
| Utilizator baze de date | verlihub | Se potrivește cu utilizatorul MariaDB creat mai sus. |
| Parola bazei de date | Parola dvs. MariaDB | Permite Verlihub să citească și să scrie tabele hub. |
| Adresa hub | Numele dvs. DNS public | Aceasta este adresa clienților și hublists ar trebui să o publice. |
| Port hub | 411, 4111, sau portul ales de dvs | Trebuie să se potrivească cu regulile systemd, firewall și router. |
| Utilizator principal | Porecla dvs. de operator | Creează primul cont cu acces de administrare hub. |
Dacă vrăjitorul solicită acreditările de administrator MariaDB, utilizați contul de administrator local MariaDB. La multe instalări Ubuntu, aceasta înseamnă rularea administrării bazei de date sudo mariadb în loc de o autentificare root bazată pe parolă.
Testați hub-ul din prim-plan
Înainte de a crea systemd, porniți hub-ul o dată de la terminal și urmăriți ieșirea.
vh --run /var/lib/verlihub
Deschideți un al doilea terminal și testați portul de pe o altă mașină, dacă este posibil. Opriți procesul de prim-plan cu Ctrl+C după ce butucul pornește curat.
Rulați portul 411 fără sudo
Linux își rezervă în mod normal porturile de mai jos 1024 pentru procese privilegiate. Nu rezolvați asta pornind Verlihub cu sudo vh --run. Acordați serviciului doar capacitatea de legare de care are nevoie.
Unitatea systemd de mai jos folosește AmbientCapabilities=CAP_NET_BIND_SERVICE şi CapabilityBoundingSet=CAP_NET_BIND_SERVICE. Asta permite verlihub legarea utilizatorului 411/tcp în timp ce procesul încă rulează fără privilegii de root. Dacă utilizați 4111/tcp, puteți elimina acele două linii de capacitate.
Evitați sysctl global net.ipv4.ip_unprivileged_port_start=0 pentru acest job. Schimbă politica de port scăzut pentru fiecare proces de pe server. Evita setcap pe binarul Verlihub, cu excepția cazului în care controlați pe deplin actualizările, deoarece instalările de pachete sau surse pot înlocui fișierul și pot elimina capacitatea.
Creați un serviciu systemd
Creați un fișier de serviciu astfel încât Ubuntu să pornească Verlihub după pornire, să îl repornească după o blocare și să limiteze utilizatorul de rulare la fișierele hub.
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
Deschideți portul Hub
Dacă UFW este activat, deschideți portul hub pe care l-ați configurat. Verificați, de asemenea, panoul firewall de la furnizorul dvs. 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
Pentru un server de acasă, redirecționați același port TCP de pe router către mașina Ubuntu. Pentru NMDCS, adăugați portul securizat numai după ce TLS este configurat și testat.
Verificați instalarea
| Verifica | Comanda | Ce să cauți |
|---|---|---|
| Stare de serviciu | systemctl status verlihub | active (running). |
| Jurnalele hub | journalctl -u verlihub -n 100 | Fără erori de conectare la baza de date sau erori de legare la port. |
| Stare hub | sudo -iu verlihub vh --status /var/lib/verlihub | Asistentul poate citi configurația hub-ului. |
| Utilizator de serviciu | systemctl show verlihub -p User -p Group -p NoNewPrivileges | Rapoartele de service User=verlihub şi NoNewPrivileges=yes. |
| Capacitate de port scăzut | systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet | CAP_NET_BIND_SERVICE este prezent când hub-ul ascultă 411/tcp. |
| Port hub | ss -ltnp | grep -E ':411|:4111' | Un socket TCP de ascultare pe portul configurat. |
| Backup pentru baze de date | mariadb-dump -u verlihub -p verlihub > verlihub.sql | Există un fișier de descărcare înainte de a schimba pluginurile sau de a face upgrade. |
Eticheta de găzduire pentru un hub public
- Publicați o adresă accesibilă. Utilizați numele și portul DNS pe care clienții ar trebui să le păstreze în favorite și hublists. Nu trimiteți IP-uri temporare, redirecționări moarte sau mai multe nume pentru același hub decât dacă acestea servesc protocoale diferite.
- Păstrați MOTD util. Listați adresa hub-ului, adresa securizată când este disponibilă, regulile, comanda de înregistrare, contactul operatorului și site-ul de asistență. Utilizatorii nu ar trebui să ghicească cum să se înregistreze sau cine deține hub-ul.
- Nu falsificați statisticile hub. hublists public funcționează cel mai bine atunci când utilizatorii, partajarea, protocolul, software-ul și subiectul se potrivesc cu starea reală a hub-ului.
- Păstrați jurnalele private și rotite. Jurnalele sunt pentru gestionarea abuzurilor și depanarea. Nu publicați IP-uri de utilizator, mesaje private sau date de înregistrare în pagini publice. Configurați rotația jurnalului înainte de prima săptămână ocupată.
- Corectează gazda. Aplicați actualizările de securitate Ubuntu, mențineți MariaDB acceptat și testați upgrade-urile Verlihub pe o copie a bazei de date înainte de a înlocui fișierele binare de producție.
- Limitați porturile expuse. Expuneți public portul hub și orice port hub securizat testat. Păstrați MariaDB privat. Restricționați SSH la IP-urile administratorului atunci când furnizorul dvs. îl acceptă.
- Stabiliți reguli simple. Spuneți ce este interzis, cum gestionează operatorii spam-ul sau conținutul ilegal și ce se întâmplă cu roboții care inundă căutarea sau chatul.
- Faceți backup înainte de experimente. Salva
/var/lib/verlihubși baza de date MariaDB înainte de a schimba pluginurile, scripturile Lua, setările locale sau permisiunile de clasă.
Rutina de upgrade și backup
Faceți o copie de rezervă a bazei de date și /var/lib/verlihub înainte de a înlocui binarele.
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
Citiți notele de lansare din amonte înainte de a actualiza un hub de producție. Dacă se modifică aspectul unui tabel, testați mai întâi actualizarea pe o copie a bazei de date.
Probleme comune
-
vh --installnu se poate conecta la MariaDB. Verificați numele bazei de date, utilizatorul, parola și dacă MariaDB ascultă local. - Serviciul începe și iese. Citire
journalctl -u verlihub -n 100. Cele mai multe erori de prima executare sunt acreditările bazei de date, fișierele de configurare lipsă sau un port deja utilizat. - Clienții expiră. Verificați UFW, firewall-ul VPS, redirecționarea portului NAT și portul de ascultare Verlihub.
- Portul 411 eșuează pentru
verlihubutilizator. Verificați liniile de capacitate systemd, apoi rulațisudo systemctl daemon-reloadşisudo systemctl restart verlihub. Nu porniți hub-ul cu sudo. - Textul de chat este deformat. Potriviți localul hub, setul de caractere al bazei de date și codificarea clientului utilizat de comunitatea dvs.
- NMDCS nu este încă disponibil. Creați și configurați separat calea proxy TLS acceptată. NMDC simplu ar trebui să funcționeze înainte ca accesul securizat la hub să fie adăugat.