Créé: 2026/06/30 13:24:48 America/Chicago
Par: admin

Ce que ce guide installe

Ce guide installe Verlihub à partir du site officiel Verlihub/verlihub arborescence des sources sur le serveur Ubuntu. Il compile le serveur hub NMDC avec CMake, stocke les données du hub sous /var/lib/verlihub, utilise MariaDB pour les tables hub et démarre le hub via un service systemd.

Utilisez l'article Docker si vous souhaitez isoler les conteneurs. Utilisez cet article Ubuntu lorsque le hub doit s'exécuter directement sur un VPS, un serveur dédié ou une machine nue.

Plan de serveur avant l'installation

  • Choisissez un nom DNS public pour le hub, tel que hub.example.org.
  • Choisissez le port NMDC. Port 411/tcp est traditionnel. Verlihub peut le lier en toute sécurité via systemd sans s'exécuter en tant que root. Port 4111/tcp est une alternative plus simple lorsque vous n'avez pas besoin du port historique.
  • Décidez si cette première installation sera uniquement NMDC. Ajoutez NMDCS une fois que le hub simple est stable.
  • Conservez un compte Linux pour le service: verlihub.
  • Conservez une base de données et un utilisateur MariaDB: verlihub.
  • Notez le surnom et le mot de passe du hub principal avant d'exécuter l'assistant.

Installer les packages Ubuntu

Les notes d'installation officielles répertorient les bibliothèques client GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, les threads, le chargement dynamique, Lua et Dialog. Sur Ubuntu, installez d'abord les packages correspondants.

 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 

Démarrez MariaDB et assurez-vous qu'il réapparaît après le redémarrage.

 sudo systemctl enable --now mariadb
sudo systemctl status mariadb 

Créer l'utilisateur Verlihub Linux

Exécutez Verlihub en tant qu'utilisateur non privilégié. Ne faites pas fonctionner le hub comme 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 

Le verlihub l'utilisateur doit posséder uniquement les fichiers d'exécution. Conservez les fichiers sources sous /usr/local/src/verlihub, conservez les binaires sous /usr/local, et conservez l'administration de la base de données sous MariaDB. Le compte de service a besoin d'un accès en écriture à /var/lib/verlihub et /var/log/verlihub; il n'a pas besoin d'un accès sudo.

Utiliser sudo en tant qu'administrateur du serveur pour installer les packages, compiler le binaire et créer l'unité systemd. Exécutez le processus hub lui-même comme verlihub. Cette répartition est importante car un hub accepte le trafic public non fiable provenant des clients DC++.

Créer la base de données MariaDB

Créez la base de données et l'utilisateur avant d'exécuter vh --install. Utilisez un vrai mot de passe au lieu de la valeur d'exemple.

 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; 

Vérifiez que l'utilisateur de l'application peut se connecter.

 mariadb -u verlihub -p verlihub 

Téléchargez la source Verlihub

Construisez à partir du référentiel officiel GitHub. Conservez les fichiers sources sous /usr/local/src l'arborescence de construction est donc distincte des données d'exécution du 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 

Si vous avez besoin d'une version ou d'un commit spécifique, vérifiez-le avant de construire. Pour une première installation, construisez la branche amont actuelle après avoir lu les notes du référentiel.

Compiler et installer Verlihub

Le chemin d'installation en amont utilise mkdir build, cmake .., make, make install, et ldconfig. La commande ci-dessous installe Verlihub sous /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 

Gardez les options de proxy TLS désactivées pour la première exécution, sauf si vous disposez déjà de la dépendance du proxy, des certificats, des règles de pare-feu et d'un client de test prêt pour NMDCS.

Exécutez vh --install

Le vh helper écrit la configuration Verlihub, crée ou met à jour les tables du hub et stocke les premiers paramètres du hub. Exécutez-le en tant que verlihub L'utilisateur Linux ainsi généré les fichiers appartiennent au compte de service.

 sudo -iu verlihub
vh --install 
Champ AssistantUtiliser cette valeurRaison
Dossier de configuration /var/lib/verlihub Propriété du verlihub utilisateur du service.
Hôte de base de données localhost MariaDB s'exécute sur le même serveur Ubuntu.
Nom de la base de données verlihub Correspond à la base de données créée ci-dessus.
Utilisateur de la base de données verlihub Correspond à l'utilisateur MariaDB créé ci-dessus.
Mot de passe de la base de donnéesVotre mot de passe MariaDBPermet à Verlihub de lire et d'écrire des tables hub.
Adresse du hubVotre nom DNS publicIl s'agit de l'adresse que les clients et hublists doivent publier.
Port central 411, 4111, ou le port de votre choixDoit correspondre aux règles systemd, du pare-feu et du routeur.
Utilisateur principalVotre pseudo d'opérateurCrée le premier compte avec un accès à l'administration du hub.

Si l'assistant demande les informations d'identification de l'administrateur MariaDB, utilisez le compte administrateur MariaDB local. Sur de nombreuses installations Ubuntu, cela signifie exécuter l'administration de la base de données via sudo mariadb au lieu d'une connexion root basée sur un mot de passe.

Testez le hub au premier plan

Avant de créer systemd, démarrez le hub une fois à partir du terminal et regardez la sortie.

 vh --run /var/lib/verlihub 

Ouvrez un deuxième terminal et testez le port depuis une autre machine si possible. Arrêtez le processus de premier plan avec Ctrl+C après que le hub ait démarré proprement.

Exécutez le port 411 sans sudo

Linux réserve normalement les ports ci-dessous 1024 pour des processus privilégiés. Ne résolvez pas ce problème en démarrant Verlihub avec sudo vh --run. Accordez au service uniquement la capacité de liaison dont il a besoin.

L'unité systemd ci-dessous utilise AmbientCapabilities=CAP_NET_BIND_SERVICE et CapabilityBoundingSet=CAP_NET_BIND_SERVICE. Cela permet au verlihub liaison utilisateur 411/tcp alors que le processus s'exécute toujours sans privilèges root. Si vous utilisez 4111/tcp, vous pouvez supprimer ces deux lignes de capacité.

Évitez le système global net.ipv4.ip_unprivileged_port_start=0 pour ce travail. Il modifie la politique de port bas pour chaque processus sur le serveur. Éviter setcap sur le binaire Verlihub, sauf si vous contrôlez entièrement les mises à niveau, car les installations de packages ou de sources peuvent remplacer le fichier et supprimer la fonctionnalité.

Créer un service systemd

Créez un fichier de service pour que Ubuntu démarre Verlihub après le démarrage, le redémarre après un crash et limite l'utilisateur d'exécution aux fichiers 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 

Ouvrez le port du hub

Si UFW est activé, ouvrez le port du hub que vous avez configuré. Vérifiez également le panneau de pare-feu de votre fournisseur 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 

Pour un serveur domestique, transférez le même port TCP du routeur vers la machine Ubuntu. Pour NMDCS, ajoutez le port sécurisé uniquement une fois TLS configuré et testé.

Vérifier l'installation

VérifierCommandeQue rechercher
État du service systemctl status verlihub active (running).
Journaux du hub journalctl -u verlihub -n 100 Aucune erreur de connexion à la base de données ni erreur de liaison de port.
Statut du hub sudo -iu verlihub vh --status /var/lib/verlihub L'assistant peut lire la configuration du hub.
Utilisateur du service systemctl show verlihub -p User -p Group -p NoNewPrivileges Les rapports de service User=verlihub et NoNewPrivileges=yes.
Capacité de port bas systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet CAP_NET_BIND_SERVICE est présent lorsque le hub écoute 411/tcp.
Port central ss -ltnp | grep -E ':411|:4111' Un socket TCP en écoute sur le port configuré.
Sauvegarde de la base de données mariadb-dump -u verlihub -p verlihub > verlihub.sql Un fichier de vidage existe avant que vous ne changiez de plugin ou que vous effectuiez une mise à niveau.

Étiquette d'hébergement pour un hub public

  • Publiez une adresse accessible. Utilisez le nom DNS et le port que les clients doivent conserver dans les favoris et hublists. Ne soumettez pas d'adresses IP temporaires, de redirections mortes ou plusieurs noms pour le même hub, à moins qu'ils ne servent des protocoles différents.
  • Gardez le MOTD utile. Répertoriez l'adresse du hub, l'adresse sécurisée lorsqu'elle est disponible, les règles, la commande d'enregistrement, le contact de l'opérateur et le site d'assistance. Les utilisateurs ne devraient pas avoir à deviner comment s'inscrire ni à qui appartient le hub.
  • Ne falsifiez pas les statistiques du hub. Public hublists fonctionne mieux lorsque les utilisateurs, le partage, le protocole, le logiciel et le sujet correspondent à l'état réel du hub.
  • Gardez les journaux privés et alternés. Les journaux sont destinés à la gestion des abus et au dépannage. Ne publiez pas les adresses IP des utilisateurs, les messages privés ou les données d'enregistrement sur les pages publiques. Configurez la rotation des journaux avant la première semaine chargée.
  • Patchez l'hôte. Appliquez les mises à jour de sécurité Ubuntu, maintenez MariaDB pris en charge et testez les mises à niveau Verlihub sur une copie de base de données avant de remplacer les binaires de production.
  • Limitez les ports exposés. Exposez publiquement le port hub et tout port hub sécurisé testé. Gardez MariaDB privé. Limitez SSH aux adresses IP des administrateurs lorsque votre fournisseur le prend en charge.
  • Établissez des règles claires. Indiquez ce qui est interdit, comment les opérateurs gèrent le spam ou le contenu illégal, et ce qui arrive aux robots qui inondent les recherches ou les discussions.
  • Sauvegardez avant les expériences. Sauvegarder /var/lib/verlihub et la base de données MariaDB avant de modifier les plugins, les scripts Lua, les paramètres régionaux ou les autorisations de classe.

Routine de mise à niveau et de sauvegarde

Sauvegardez la base de données et /var/lib/verlihub avant de remplacer les binaires.

 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 

Lisez les notes de version en amont avant de mettre à niveau un hub de production. Si la disposition d'une table change, testez d'abord la mise à niveau sur une copie de la base de données.

Problèmes courants

  • vh --install Impossible de se connecter à MariaDB. Vérifiez le nom de la base de données, l'utilisateur, le mot de passe et si MariaDB écoute localement.
  • Le service démarre et se termine. Lire journalctl -u verlihub -n 100. La plupart des échecs de première exécution sont dus aux informations d'identification de la base de données, aux fichiers de configuration manquants ou à un port déjà utilisé.
  • Les clients expirent. Vérifiez UFW, le pare-feu VPS, la redirection de port NAT et le port d'écoute Verlihub.
  • Le port 411 échoue pour le verlihub utilisateur. Vérifiez les lignes de capacité systemd, puis exécutez sudo systemctl daemon-reload et sudo systemctl restart verlihub. Ne démarrez pas le hub avec sudo.
  • Le texte du chat est tronqué. Faites correspondre les paramètres régionaux du hub, le jeu de caractères de la base de données et le codage client utilisés par votre communauté.
  • NMDCS n’est pas encore disponible. Créez et configurez séparément le chemin de proxy TLS pris en charge. NMDC simple devrait fonctionner avant l'ajout d'un accès sécurisé au hub.