Creato: 2026/06/30 13:24:48 America/Chicago
Da: admin

Cosa installa questa guida

Questa guida installa Verlihub dal programma ufficiale Verlihub/verlihub albero di origine sul server Ubuntu. Compila il server hub NMDC con CMake, memorizza i dati dell'hub in /var/lib/verlihub, utilizza MariaDB per le tabelle dell'hub e avvia l'hub tramite un servizio systemd.

Utilizza l'articolo Docker se desideri l'isolamento del contenitore. Utilizzare questo articolo Ubuntu quando l'hub deve essere eseguito direttamente su un VPS, un server dedicato o un computer bare metal.

Piano del server prima dell'installazione

  • Scegli un nome DNS pubblico per l'hub, ad esempio hub.example.org.
  • Scegli la porta NMDC. Porta 411/tcp è tradizionale. Verlihub può associarlo in modo sicuro tramite systemd senza eseguirlo come root. Porta 4111/tcp è un'alternativa più semplice quando non hai bisogno del porto storico.
  • Decidi se questa prima installazione sarà semplice solo NMDC. Aggiungere NMDCS dopo che l'hub semplice è stabile.
  • Mantieni un account Linux per il servizio: verlihub.
  • Mantieni un database e un utente MariaDB: verlihub.
  • Annotare il nickname e la password dell'hub principale prima di eseguire la procedura guidata.

Installa i pacchetti Ubuntu

Le note di installazione ufficiali elencano le librerie client GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, thread, caricamento dinamico, Lua e Dialog. Su Ubuntu, installare prima i pacchetti corrispondenti.

 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 

Avvia MariaDB e assicurati che ritorni dopo il riavvio.

 sudo systemctl enable --now mariadb
sudo systemctl status mariadb 

Creare l'utente Verlihub Linux

Esegui Verlihub come utente non privilegiato. Non eseguire l'hub come 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 

IL verlihub l'utente deve possedere solo i file di runtime. Conserva i file sorgente in /usr/local/src/verlihub, mantieni i file binari sotto /usr/local e mantenere l'amministrazione del database in MariaDB. L'account di servizio necessita dell'accesso in scrittura /var/lib/verlihub E /var/log/verlihub; non è necessario l'accesso sudo.

Utilizzo sudo come amministratore del server per installare pacchetti, compilare il file binario e creare l'unità systemd. Eseguire il processo hub stesso come verlihub. Questa suddivisione è importante perché un hub accetta traffico pubblico non attendibile dai client DC++.

Creare il database MariaDB

Creare il database e l'utente prima dell'esecuzione vh --install. Utilizza una password reale invece del valore di esempio.

 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; 

Verificare che l'utente dell'applicazione possa accedere.

 mariadb -u verlihub -p verlihub 

Scarica la fonte Verlihub

Crea dal repository ufficiale GitHub. Conserva i file sorgente in /usr/local/src quindi l'albero di compilazione è separato dai dati di runtime dell'hub.

 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 

Se hai bisogno di una versione o di un commit specifico, controllalo prima di creare. Per una prima installazione, crea il ramo upstream corrente dopo aver letto le note del repository.

Compila e installa Verlihub

Il percorso di installazione upstream utilizza mkdir build, cmake .., make, make install, E ldconfig. Il comando seguente installa Verlihub in /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 

Mantieni disattivate le opzioni proxy TLS per la prima esecuzione, a meno che tu non disponga già della dipendenza proxy, dei certificati, delle regole del firewall e di un client di test pronto per NMDCS.

Esegui vh --install

IL vh l'helper scrive la configurazione Verlihub, crea o aggiorna le tabelle dell'hub e memorizza le prime impostazioni dell'hub. Eseguilo come verlihub I file così generati dall'utente Linux appartengono all'account del servizio.

 sudo -iu verlihub
vh --install 
Campo del magoUsa questo valoreMotivo
Cartella di configurazione /var/lib/verlihub Di proprietà del verlihub utente del servizio.
Ospite della banca dati localhost MariaDB viene eseguito sullo stesso server Ubuntu.
Nome della banca dati verlihub Corrisponde al database creato sopra.
Utente del database verlihub Corrisponde all'utente MariaDB creato sopra.
Password della banca datiLa tua password MariaDBConsente a Verlihub di leggere e scrivere tabelle hub.
Indirizzo dell'hubIl tuo nome DNS pubblicoQuesto è l'indirizzo che i client e hublists dovrebbero pubblicare.
Porta dell'hub 411, 4111 o il porto presceltoDeve corrispondere alle regole systemd, firewall e router.
Utente principaleIl tuo nickname da operatoreCrea il primo account con accesso all'amministrazione dell'hub.

Se la procedura guidata richiede le credenziali di amministratore MariaDB, utilizzare l'account amministratore MariaDB locale. Su molte installazioni Ubuntu ciò significa eseguire l'amministrazione del database sudo mariadb invece di un accesso root basato su password.

Prova l'hub in primo piano

Prima di creare systemd, avviare l'hub una volta dal terminale e osservare l'output.

 vh --run /var/lib/verlihub 

Apri un secondo terminale e, se possibile, testa la porta da un'altra macchina. Interrompi il processo in primo piano con Ctrl+C dopo che l'hub si è avviato correttamente.

Esegui la porta 411 senza sudo

Linux normalmente riserva le porte seguenti 1024 per processi privilegiati. Non risolverlo avviando Verlihub con sudo vh --run. Concedere al servizio solo la capacità di associazione di cui ha bisogno.

L'unità systemd di seguito utilizza AmbientCapabilities=CAP_NET_BIND_SERVICE E CapabilityBoundingSet=CAP_NET_BIND_SERVICE. Ciò consente a verlihub vincolo dell'utente 411/tcp mentre il processo viene ancora eseguito senza privilegi di root. Se usi 4111/tcp, puoi rimuovere quelle due linee di capacità.

Evita il sysctl globale net.ipv4.ip_unprivileged_port_start=0 per questo lavoro. Cambia la politica di porta bassa per ogni processo sul server. Evitare setcap sul file binario Verlihub a meno che non controlli completamente gli aggiornamenti, poiché le installazioni di pacchetti o sorgenti possono sostituire il file e eliminare la funzionalità.

Crea un servizio systemd

Crea un file di servizio in modo che Ubuntu avvii Verlihub dopo l'avvio, lo riavvii dopo un arresto anomalo e mantenga l'utente runtime limitato ai file 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 

Apri la porta dell'Hub

Se UFW è abilitato, apri la porta dell'hub configurata. Controlla anche il pannello firewall presso il tuo provider 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 

Per un server domestico, inoltrare la stessa porta TCP sul router alla macchina Ubuntu. Per NMDCS, aggiungere la porta protetta solo dopo aver configurato e testato TLS.

Verifica l'installazione

ControlloComandoCosa cercare
Stato del servizio systemctl status verlihub active (running).
Registri dell'hub journalctl -u verlihub -n 100 Nessun errore di accesso al database o errore di associazione della porta.
Stato dell'hub sudo -iu verlihub vh --status /var/lib/verlihub L'aiutante può leggere la configurazione dell'hub.
Utente del servizio systemctl show verlihub -p User -p Group -p NoNewPrivileges Lo riferisce il servizio User=verlihub E NoNewPrivileges=yes.
Capacità di porte basse systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet CAP_NET_BIND_SERVICE è presente quando l'hub è in ascolto 411/tcp.
Porta dell'hub ss -ltnp | grep -E ':411|:4111' Un socket TCP in ascolto sulla porta configurata.
Backup del database mariadb-dump -u verlihub -p verlihub > verlihub.sql Esiste un file dump prima di modificare i plugin o eseguire l'aggiornamento.

Etichetta di hosting per un hub pubblico

  • Pubblica un indirizzo raggiungibile. Utilizza il nome DNS e la porta che i client devono mantenere nei preferiti e hublists. Non inviare IP temporanei, reindirizzamenti inattivi o più nomi per lo stesso hub a meno che non servano protocolli diversi.
  • Mantieni utile il MOTD. Elenca l'indirizzo dell'hub, l'indirizzo sicuro quando disponibile, le regole, il comando di registrazione, il contatto dell'operatore e il sito di supporto. Gli utenti non dovrebbero dover indovinare come registrarsi o chi possiede l'hub.
  • Non falsificare le statistiche dell'hub. Il hublists pubblico funziona meglio quando utenti, condivisione, protocollo, software e argomento corrispondono allo stato reale dell'hub.
  • Mantieni i log privati ​​e ruotati. I registri servono per la gestione degli abusi e la risoluzione dei problemi. Non pubblicare IP utente, messaggi privati ​​o dati di registrazione nelle pagine pubbliche. Configura la rotazione dei log prima della prima settimana impegnativa.
  • Patch l'host. Applica gli aggiornamenti di sicurezza Ubuntu, mantieni il supporto MariaDB e testa gli aggiornamenti Verlihub su una copia del database prima di sostituire i file binari di produzione.
  • Limitare le porte esposte. Esporre pubblicamente la porta dell'hub e qualsiasi porta dell'hub sicura testata. Mantieni MariaDB privato. Limita SSH agli IP amministratore quando il tuo provider lo supporta.
  • Stabilisci regole chiare. Indica cosa è vietato, come gli operatori gestiscono lo spam o i contenuti illegali e cosa succede ai bot che inondano la ricerca o la chat.
  • Eseguire il backup prima degli esperimenti. Salva /var/lib/verlihub e il database MariaDB prima di modificare plug-in, script Lua, impostazioni locali o autorizzazioni di classe.

Routine di aggiornamento e backup

Eseguire il backup del database e /var/lib/verlihub prima di sostituire i binari.

 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 

Leggere le note sulla versione upstream prima di aggiornare un hub di produzione. Se il layout di una tabella cambia, testare prima l'aggiornamento su una copia del database.

Problemi comuni

  • vh --install impossibile connettersi a MariaDB. Controlla il nome del database, l'utente, la password e se MariaDB è in ascolto localmente.
  • Il servizio si avvia e termina. Leggere journalctl -u verlihub -n 100. La maggior parte degli errori di prima esecuzione sono dovuti a credenziali del database, file di configurazione mancanti o una porta già in uso.
  • Timeout dei clienti. Controllare UFW, il firewall VPS, il port forwarding NAT e la porta di ascolto Verlihub.
  • La porta 411 fallisce per verlihub utente. Controlla le righe di funzionalità systemd, quindi esegui sudo systemctl daemon-reload E sudo systemctl restart verlihub. Non avviare l'hub con sudo.
  • Il testo della chat è confuso. Abbina le impostazioni internazionali dell'hub, il set di caratteri del database e la codifica client utilizzati dalla tua comunità.
  • NMDCS non è ancora disponibile. Crea e configura separatamente il percorso proxy TLS supportato. NMDC normale dovrebbe funzionare prima che venga aggiunto l'accesso all'hub sicuro.