Utworzony: 2026/06/30 13:24:48 America/Chicago
Przez: admin

Co instaluje ten przewodnik

Ten przewodnik instaluje Verlihub z oficjalnej strony Verlihub/verlihub drzewo źródłowe na serwerze Ubuntu. Kompiluje serwer koncentrujący NMDC z CMake, przechowuje dane koncentratora w /var/lib/verlihub, używa MariaDB dla tabel koncentrujących i uruchamia koncentrator za pośrednictwem usługi systemd.

Jeśli chcesz izolować kontener, użyj artykułu Docker. Skorzystaj z tego artykułu Ubuntu, jeśli koncentrator powinien działać bezpośrednio na VPS, serwerze dedykowanym lub maszynie typu bare-metal.

Plan serwera przed instalacją

  • Wybierz publiczną nazwę DNS dla koncentratora, np. hub.example.org.
  • Wybierz port NMDC. Port 411/tcp jest tradycyjny. Verlihub może bezpiecznie powiązać go poprzez systemd bez uruchamiania jako root. Port 4111/tcp jest prostszą alternatywą, gdy nie potrzebujesz historycznego portu.
  • Zdecyduj, czy ta pierwsza instalacja będzie tylko zwykłym NMDC. Dodaj NMDCS, gdy zwykła piasta będzie stabilna.
  • Prowadź jedno konto Linux dla usługi: verlihub.
  • Zachowaj jedną bazę danych MariaDB i jednego użytkownika: verlihub.
  • Przed uruchomieniem kreatora zapisz pseudonim i hasło centrum głównego.

Zainstaluj pakiety Ubuntu

Oficjalna lista uwag dotyczących instalacji zawiera biblioteki klienckie GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, wątki, ładowanie dynamiczne, Lua i Dialog. Na Ubuntu najpierw zainstaluj pasujące pakiety.

 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 

Uruchom MariaDB i upewnij się, że wróci po ponownym uruchomieniu.

 sudo systemctl enable --now mariadb
sudo systemctl status mariadb 

Utwórz użytkownika Verlihub Linux

Uruchom Verlihub jako własny nieuprzywilejowany użytkownik. Nie uruchamiaj koncentratora 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żytkownik powinien posiadać wyłącznie pliki wykonawcze. Trzymaj pliki źródłowe pod /usr/local/src/verlihub, trzymaj pliki binarne pod /usr/local i zarządzaj bazą danych pod MariaDB. Konto usługi wymaga dostępu do zapisu /var/lib/verlihub I /var/log/verlihub; nie potrzebuje dostępu do Sudo.

Używać sudo jako administrator serwera, aby zainstalować pakiety, skompilować plik binarny i utworzyć jednostkę systemd. Uruchom sam proces centrum jako verlihub. Ten podział ma znaczenie, ponieważ koncentrator akceptuje niezaufany ruch publiczny od klientów DC++.

Utwórz bazę danych MariaDB

Przed uruchomieniem utwórz bazę danych i użytkownika vh --install. Użyj prawdziwego hasła zamiast wartości przykładowej.

 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; 

Sprawdź, czy użytkownik aplikacji może się zalogować.

 mariadb -u verlihub -p verlihub 

Pobierz źródło Verlihub

Kompiluj z oficjalnego repozytorium GitHub. Trzymaj pliki źródłowe pod /usr/local/src więc drzewo kompilacji jest oddzielone od danych środowiska wykonawczego centrum.

 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 

Jeśli potrzebujesz konkretnej wersji lub zatwierdzenia, sprawdź to przed budowaniem. W przypadku pierwszej instalacji zbuduj bieżącą gałąź nadrzędną po przeczytaniu uwag do repozytorium.

Skompiluj i zainstaluj Verlihub

Używana jest ścieżka instalacji nadrzędnej mkdir build, cmake .., make, make install, I ldconfig. Poniższe polecenie instaluje Verlihub w pliku /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 

Przy pierwszym uruchomieniu pozostaw wyłączone opcje proxy TLS, chyba że masz już zależność proxy, certyfikaty, reguły zapory sieciowej i klienta testowego gotowego na NMDCS.

Uruchom vh --install

The vh pomocnik zapisuje konfigurację Verlihub, tworzy lub aktualizuje tabele koncentrujące i przechowuje pierwsze ustawienia koncentratora. Uruchom go jako verlihub Tak wygenerowane pliki użytkownika Linux należą do konta usługi.

 sudo -iu verlihub
vh --install 
Pole CzarodziejaUżyj tej wartościPowód
Folder konfiguracyjny /var/lib/verlihub Należy do verlihub użytkownik serwisu.
Host bazy danych localhost MariaDB działa na tym samym serwerze Ubuntu.
Nazwa bazy danych verlihub Pasuje do bazy danych utworzonej powyżej.
Użytkownik bazy danych verlihub Pasuje do użytkownika MariaDB utworzonego powyżej.
Hasło bazy danychTwoje hasło MariaDBUmożliwia Verlihub odczytywanie i zapisywanie tabel koncentrujących.
Adres centrumTwoja publiczna nazwa DNSTo jest adres, który powinni opublikować klienci i hublists.
Port koncentratora 411, 4111 lub wybrany portMusi być zgodny z regułami systemd, zapory sieciowej i routera.
Główny użytkownikTwój nick operatoraTworzy pierwsze konto z dostępem administracyjnym centrum.

Jeśli kreator poprosi o poświadczenia administratora MariaDB, użyj lokalnego konta administratora MariaDB. W przypadku wielu instalacji Ubuntu oznacza to uruchomienie administracji bazą danych sudo mariadb zamiast logowania root opartego na haśle.

Przetestuj koncentrator na pierwszym planie

Przed utworzeniem systemd uruchom koncentrator raz z terminala i obejrzyj dane wyjściowe.

 vh --run /var/lib/verlihub 

Otwórz drugi terminal i, jeśli to możliwe, przetestuj port z innego komputera. Zatrzymaj proces na pierwszym planie za pomocą Ctrl+C po czystym uruchomieniu piasty.

Uruchom port 411 bez sudo

Linux zwykle rezerwuje poniższe porty 1024 dla procesów uprzywilejowanych. Nie rozwiązuj tego, uruchamiając Verlihub z sudo vh --run. Przyznaj usłudze tylko taką możliwość wiązania, jakiej potrzebuje.

Poniższa jednostka systemd wykorzystuje AmbientCapabilities=CAP_NET_BIND_SERVICE I CapabilityBoundingSet=CAP_NET_BIND_SERVICE. To pozwala verlihub powiązanie użytkownika 411/tcp podczas gdy proces nadal działa bez uprawnień roota. Jeśli używasz 4111/tcp, możesz usunąć te dwie linie możliwości.

Unikaj globalnego sysctl net.ipv4.ip_unprivileged_port_start=0 dla tej pracy. Zmienia politykę niskiego portu dla każdego procesu na serwerze. Unikać setcap w pliku binarnym Verlihub, chyba że w pełni kontrolujesz aktualizacje, ponieważ instalacje pakietów lub źródeł mogą zastąpić plik i utracić tę możliwość.

Utwórz usługę systemd

Utwórz plik usługi, aby Ubuntu uruchamiał Verlihub po rozruchu, uruchamiał go ponownie po awarii i ograniczał użytkownika środowiska wykonawczego do plików centrum.

 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 

Otwórz port koncentratora

Jeśli włączono UFW, otwórz skonfigurowany port koncentratora. Sprawdź także panel zapory sieciowej u swojego dostawcy 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 

W przypadku serwera domowego przekieruj ten sam port TCP na routerze do komputera Ubuntu. W przypadku NMDCS bezpieczny port należy dodać dopiero po skonfigurowaniu i przetestowaniu TLS.

Sprawdź instalację

SprawdzaćRozkazCzego szukać
Stan usługi systemctl status verlihub active (running).
Dzienniki centrum journalctl -u verlihub -n 100 Żadnych błędów logowania do bazy danych ani błędów wiązania portów.
Stan centrum sudo -iu verlihub vh --status /var/lib/verlihub Pomocnik może odczytać konfigurację koncentratora.
Użytkownik serwisu systemctl show verlihub -p User -p Group -p NoNewPrivileges Serwis raportuje User=verlihub I NoNewPrivileges=yes.
Możliwość niskiego portu systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet CAP_NET_BIND_SERVICE jest obecny, gdy koncentrator nasłuchuje 411/tcp.
Port koncentratora ss -ltnp | grep -E ':411|:4111' Nasłuchujące gniazdo TCP na skonfigurowanym porcie.
Kopia zapasowa bazy danych mariadb-dump -u verlihub -p verlihub > verlihub.sql Plik zrzutu istnieje przed zmianą wtyczek lub aktualizacją.

Etykieta hostingu w centrum publicznym

  • Opublikuj jeden osiągalny adres. Użyj nazwy DNS i portu, które klienci powinni zachować w ulubionych, oraz hublists. Nie podawaj tymczasowych adresów IP, martwych przekierowań ani kilku nazw dla tego samego koncentratora, chyba że obsługują one różne protokoły.
  • Niech MOTD będzie użyteczny. Podaj adres centrum, bezpieczny adres, jeśli jest dostępny, zasady, polecenie rejestracji, kontakt z operatorem i witrynę pomocy technicznej. Użytkownicy nie powinni zgadywać, jak się zarejestrować ani kto jest właścicielem centrum.
  • Nie fałszuj statystyk centrum. Publiczny hublists działa najlepiej, gdy użytkownicy, udział, protokół, oprogramowanie i temat odpowiadają rzeczywistemu stanowi centrum.
  • Zachowaj prywatność dzienników i rotację. Dzienniki służą do obsługi nadużyć i rozwiązywania problemów. Nie publikuj adresów IP użytkowników, prywatnych wiadomości ani danych rejestracyjnych na stronach publicznych. Skonfiguruj rotację logów przed pierwszym pracowitym tygodniem.
  • Popraw hosta. Zastosuj aktualizacje zabezpieczeń Ubuntu, zachowaj obsługę MariaDB i przetestuj aktualizacje Verlihub na kopii bazy danych przed wymianą produkcyjnych plików binarnych.
  • Ogranicz odsłonięte porty. Publicznie udostępnij port koncentratora i każdy przetestowany bezpieczny port koncentratora. Zachowaj prywatność MariaDB. Ogranicz SSH do adresów IP administratora, jeśli obsługuje go Twój dostawca.
  • Ustal proste zasady. Określ, co jest zakazane, w jaki sposób operatorzy radzą sobie ze spamem lub nielegalnymi treściami i co dzieje się z botami, które zalewają wyszukiwanie lub czat.
  • Utwórz kopię zapasową przed eksperymentami. Ratować /var/lib/verlihub oraz bazę danych MariaDB przed zmianą wtyczek, skryptów Lua, ustawień regionalnych czy uprawnień klas.

Procedura aktualizacji i tworzenia kopii zapasowych

Utwórz kopię zapasową bazy danych i /var/lib/verlihub przed wymianą plików binarnych.

 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 

Przed aktualizacją centrum produkcyjnego przeczytaj uwagi do wcześniejszych wersji. Jeśli układ tabeli ulegnie zmianie, najpierw przetestuj aktualizację na kopii bazy danych.

Typowe problemy

  • vh --install nie można połączyć się z MariaDB. Sprawdź nazwę bazy danych, użytkownika, hasło i czy MariaDB nasłuchuje lokalnie.
  • Usługa uruchamia się i kończy. Czytać journalctl -u verlihub -n 100. Większość niepowodzeń przy pierwszym uruchomieniu wynika z poświadczeń bazy danych, brakujących plików konfiguracyjnych lub portu, który jest już używany.
  • Przekroczono limit czasu klientów. Sprawdź UFW, zaporę ogniową VPS, przekierowanie portów NAT i port nasłuchiwania Verlihub.
  • Port 411 nie działa dla verlihub użytkownik. Sprawdź linie możliwości systemd, a następnie uruchom sudo systemctl daemon-reload I sudo systemctl restart verlihub. Nie uruchamiaj koncentratora za pomocą sudo.
  • Tekst czatu jest zniekształcony. Dopasuj ustawienia regionalne centrum, zestaw znaków bazy danych i kodowanie klienta używane przez Twoją społeczność.
  • NMDCS nie jest jeszcze dostępny. Oddzielnie zbuduj i skonfiguruj obsługiwaną ścieżkę proxy TLS. Zwykły NMDC powinien działać przed dodaniem bezpiecznego dostępu do koncentratora.