Crée un serveur GLPI sous Debian 13 avec Hyper-V
Introduction
Dans le cadre de ma formation TSSR, j’ai été amené à mettre en place un serveur GLPI sous Debian afin de simuler un centre d’appels.
Vous trouverez ci-dessous l’intégralité des étapes que j’ai mises en œuvre pour obtenir un serveur GLPI fonctionnel, depuis la création de la machine virtuelle jusqu’à la connexion à l’interface de GLPI.
La partie concernant l’installation de GLPI proprement dite a été reprise du site IT-Connect, à laquelle j’ai apporté quelques modifications, notamment sur la version de PHP-FPM et sur le script de sécurisation de MariaDB.
Pré Requis
- L'iso Net Install de Debian 13 Trixie
- Hyper-V installer sur la machine
- Le logiciel MobaXterm
Création du commutateur virtuel
Pour pouvoir accéder à Internet et permettre aux autres machines du LAN de communiquer avec GLPI, nous devons créer un commutateur externe.
Celui-ci permettra à notre machine virtuelle d’utiliser directement la carte réseau physique de l’hôte, d’obtenir une adresse IP sur le réseau local et d’être accessible par toutes les autres machines.
On lance Hyper-V, puis on clique sur Gestionnaire de commutateur virtuel.
On sélectionne le type de commutateur Externe, puis on clique sur Créer le commutateur virtuel.

On donne ensuite un nom à notre commutateur virtuel, on vérifie que le commutateur sélectionné est bien Externe et on laisse la case cochée.

Si une pop-up d’avertissement s’affiche, cliquez sur Oui.

Création de la VM sur Hyper-V
Dans Hyper-V, nous allons cliquer sur Nouveau, puis sur Ordinateur virtuel.

On donne un nom à notre machine virtuelle, on sélectionne le dossier dans lequel notre VM sera stockée, puis on clique sur Suivant.

On laisse la génération de la machine virtuelle sur Génération 2, Debian 13 étant pleinement compatible avec le démarrage sécurisé.

On choisit la quantité de mémoire vive à attribuer à notre machine virtuelle, on décoche l’utilisation de la mémoire dynamique, puis on clique sur Suivant.

L’assistant nous demande alors de configurer la mise en réseau. Nous sélectionnons donc le commutateur virtuel créé précédemment.

On laisse l’option Créer un disque dur virtuel. On garde également le nom par défaut et on vérifie que le fichier du disque dur virtuel soit bien stocké dans le dossier Virtual Hard Disks de notre machine virtuelle. On lui attribue 60 Go de stockage. Il est possible d’en attribuer moins si vous êtes limité par les ressources de votre machine.

Il nous faut ensuite sélectionner Installer un système d’exploitation à partir d’un CD/DVD-ROM de démarrage, puis Fichier image (.iso), et enfin cliquer sur Parcourir... pour choisir l’ISO de Debian 13 que nous avons téléchargé au préalable.

L’assistant nous résume les options que nous avons choisies précédemment. On clique sur Terminer.

Avant de démarrer notre machine virtuelle, nous allons devoir effectuer une opération sur le démarrage sécurisé de celle-ci.
On effectue donc un clic droit sur notre machine virtuelle fraîchement créée, puis on clique sur Paramètres.

Une fois dans les paramètres de notre machine virtuelle, on sélectionne Sécurité située sur la gauche, puis dans la partie Démarrage sécurisé, on change le modèle pour le placer sur Autorité de certification UEFI Microsoft. On valide ensuite en cliquant sur Appliquer, puis sur OK.

De retour sur la liste des machines virtuelles, on double-clique sur notre VM, puis on peut enfin la démarrer en cliquant sur le bouton Démarrer.

Installation de Debian 13
Nous allons effectuer une installation avec interface graphique, donc on sélectionne avec le clavier Graphical install, puis on appuie sur la touche Entrée.

On sélectionne notre langue, puis on valide avec Continue.

On clique sur France, puis on sélectionne Continuer.

On laisse le clavier en Français, puis on clique sur Continuer.

On donne maintenant un nom à notre machine, puis on poursuit avec Continuer.

On laisse le domaine vide, puis on clique sur Continuer.

Ici, nous allons saisir le mot de passe du « superutilisateur ». Ce mot de passe est à conserver précieusement.

Le programme d’installation de Debian nous demande alors de créer un autre utilisateur, différent du superutilisateur (« root »).
Nous allons créer un utilisateur que nous nommerons « administrateur ».

Le programme d’installation nous demande maintenant l’identifiant (login) de notre utilisateur administrateur. On laisse la valeur proposée, puis on clique sur Continuer.

On saisit maintenant le mot de passe de notre utilisateur administrateur. Ce mot de passe est à conserver précieusement.

On laisse le partitionnement par défaut, puis on valide avec Continuer.

On choisit notre disque virtuel précédemment créé, puis on continue l’installation.

On laisse tout dans une seule partition, puis on continue.

On sélectionne Terminer le partitionnement et appliquer les changements, puis on clique sur Continuer.

On choisit d’appliquer les changements, puis on continue.

On refuse l’analyse d’autres supports d’installation.

On sélectionne France, puis on continue.

On choisit deb.debian.org, puis on continue.

On laisse le serveur mandataire vide, puis on poursuit avec Continuer.

On laisse la collecte des informations sur l’utilisation des paquets sur Non, puis on continue.

On désactive l’environnement de bureau Debian et GNOME, puis on clique sur Continuer.

L’installation est maintenant terminée, nous pouvons redémarrer la machine en cliquant sur Continuer.

Au premier login, nous utiliserons le compte administrateur créé pendant l’installation avec son mot de passe associé.

Post-Installation
Configuration de l’administrateur
Pour respecter les bonnes pratiques d’administration, on n’utilisera pas le compte root au quotidien. On installe donc sudo et on ajoute l’utilisateur « administrateur » au groupe sudo afin de déléguer les privilèges d’administration de manière contrôlée.
su -Passage en « root ».
apt update && apt upgrade -yMise à jour et installation des paquets.
apt install sudo -yInstallation de « sudo ».
usermod -aG sudo administrateurAjout de l’utilisateur au groupe sudo.
exit # Déconnexion de "root"
exit # Déconnexion de "administrateur"
Sur l’écran de login, saisissez le login « administrateur » ainsi que son mot de passe associé, précédemment défini.

Configuration de l’IP Fixe du serveur
On va configurer une adresse IP statique afin de garantir que le serveur reste joignable de façon stable sur le réseau et puisse assurer correctement son rôle dans l’infrastructure.
sudo nano /etc/network/interfacesOn édite le fichier /etc/network/interfaces.

iface eth0 inet static
address 192.168.x.x
netmask 255.255.255.0
gateway 192.168.x.x
dns-nameservers 1.1.1.1 8.8.8.8Ajustez le bloc avec l’adresse IP et l’adresse de passerelle correspondant à votre réseau. Enregistrez votre fichier avec la combinaison de touches Ctrl+O, puis Entrée, et fermez-le avec Ctrl+X.
sudo systemctl restart networkingOn redémarre les services réseau pour que nos modifications prennent effet.
On peut maintenant vérifier que notre serveur dispose de la bonne adresse avec la commande :
ip aUn ping vers google.fr nous confirme que la connectivité de notre serveur est opérationnelle.
ping google.fr
Configuration de SSH
On installe le service SSH pour permettre la prise en main à distance du serveur. Cela nous permettra d’administrer notre serveur avec des outils plus adaptés, tels que MobaXterm.
Dans une logique de sécurité, on désactive la connexion directe au compte root et on limite l’accès aux utilisateurs disposant de droits sudo.
On commence par installer le serveur SSH.
sudo apt install openssh-serverOn va ensuite éditer le fichier sshd_config.
sudo nano /etc/ssh/sshd_configIl faut maintenant chercher la ligne :
#PermitRootLogin yesLa « décommenter » (retirer le caractère # devant la commande) et placer la valeur sur « no ».
Ce qui nous donne :
PermitRootLogin noOn procède de la même manière pour la ligne :
#PasswordAuthentification yesQu’on vient simplement « décommenter » sans toucher à sa valeur.

On enregistre notre fichier avec la combinaison de touches Ctrl+O, puis Entrée, et on le ferme avec Ctrl+X.
sudo systemctl enable ssh
Active SSH au démarrage du système.
sudo systemctl start sshLance immédiatement le service SSH.
Installation du Pare-Feu
Bien que GLPI n’ait vocation à être accessible que depuis le LAN, nous allons renforcer la sécurité du serveur en installant UFW, en n’autorisant que les ports nécessaires et en bloquant par défaut toutes les autres connexions entrantes.
Pour commencer, nous allons procéder à l’installation de UFW.
sudo apt install ufw -yUne fois cela effectué, nous allons définir nos règles de pare-feu.
sudo ufw allow OpenSSHOn autorise OpenSSH pour la prise en main à distance.
sudo ufw allow 80On autorise le port HTTP (80).
sudo ufw allow 443On autorise le port HTTPS (443).
sudo ufw default deny incomingOn bloque le reste du trafic entrant.
sudo ufw default allow outgoingOn autorise le trafic sortant.
sudo ufw enableOn active le pare-feu
Nous pouvons maintenant contrôler notre pare-feu avec la commande :
sudo ufw status
Utilisation de MobaXterm
Pour la suite du tutoriel, nous allons utiliser le logiciel MobaXterm, qui nous facilitera le copier-coller des fichiers de configuration.
On lance MobaXterm, puis on clique sur Session en haut à gauche.

On clique ensuite sur SSH, puis on remplit le champ Remote host avec l’adresse IP fixe de notre serveur GLPI.
On coche également la case Specify username, on entre le login de notre administrateur, puis on termine par OK.

Un nouvel onglet apparaît alors dans MobaXterm, nous demandant le mot de passe de l’utilisateur administrateur.
On le saisit, puis on valide avec Entrée.
Une fenêtre nous demande si nous souhaitons conserver le mot de passe.
On répond Yes.

Nous voici alors sur le Shell de notre serveur en SSH.

Installation de GLPI
Installation de LAMP
sudo apt update && sudo apt upgradeMise à jour et installation des paquets.
sudo apt-get install apache2 php mariadb-serverOn installe Apache, PHP et MariaDB. On confirme l’installation en appuyant sur Entrée (O par défaut).
sudo apt-get install php-xml php-common php-json php-mysql php-mbstring php-curl php-gd php-intl php-zip php-bz2 php-apcuOn installe les dépendances nécessaires. On confirme l’installation en appuyant sur Entrée (O par défaut).
Sécurisation de MariaDB
Une fois l’installation terminée, on va sécuriser notre base de données en exécutant le script suivant :
sudo mariadb-secure-installationmysql-secure-installation est un script fourni avec MariaDB/MySQL pour renforcer la sécurité de l’installation par défaut.
Le script pose une série de questions auxquelles il faut répondre Y (Yes) ou N (No).
Switch to unix_socket authentication [Y/n] nGarder le mot de passe root classique.
Change the root password? [Y/n] yDéfinir un nouveau mot de passe root. C’est ici que vous devez définir le mot de passe root de la base de données. Veillez à le conserver précieusement.
Remove anonymous users? [Y/n] ySupprimer les comptes sans identifiant défini.
Disallow root login remotely? [Y/n] yBloquer l’accès root depuis l’extérieur.
Remove test database and access to it? [Y/n] ySupprimer la base de données "test", inutile et non sécurisée.
Reload privilege tables now? [Y/n] yAppliquer immédiatement les nouveaux paramètres.

Une fois le script terminé, nous allons nous connecter à la base de données afin d’y créer l’utilisateur « glpi ».
Création de la base de donnée
sudo mysql -u root -pOn se connecte à la base de données avec le compte root et le mot de passe que l’on a défini précédemment dans le script.
CREATE DATABASE glpi;
GRANT ALL PRIVILEGES ON glpi.* TO glpi@localhost IDENTIFIED BY "MotdePasseUserGLPI";
FLUSH PRIVILEGES;
EXITOn crée une table nommée « glpi » et on attribue tous les droits sur cette table à l’utilisateur « glpi ». Attention à bien remplacer MotdePasseUserGLPI par votre mot de passe.
Téléchargement de GLPI
cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.20/glpi-10.0.20.tgz
On se place dans le dossier /tmp et on télécharge la version 10.0.20 de GLPI.
sudo tar -xzvf glpi-10.0.20.tgz -C /var/www/On décompresse l’archive dans le dossier /var/www.
sudo chown www-data /var/www/glpi/ -ROn modifie la propriété du dossier /var/www/glpi/ pour l’attribuer à l’utilisateur web www-data.
Création des dossiers de GLPI
sudo mkdir /etc/glpiOn crée un dossier de configuration pour GLPI.
sudo chown www-data /etc/glpi/On modifie la propriété du dossier /etc/glpi/ pour l’attribuer à l’utilisateur web www-data.
sudo mv /var/www/glpi/config /etc/glpiOn déplace le dossier config de GLPI vers /etc/glpi.
sudo mkdir /var/lib/glpiOn crée un dossier pour les données de GLPI.
sudo chown www-data /var/lib/glpi/On modifie la propriété du dossier /var/lib/glpi/ pour l’attribuer à www-data.
sudo mv /var/www/glpi/files /var/lib/glpiOn déplace le dossier files de GLPI vers /var/lib/glpi.
Création du dossier pour les logs de GLPI
sudo mkdir /var/log/glpiOn crée le dossier pour les journaux de GLPI.
sudo chown www-data /var/log/glpiOn modifie la propriété du dossier des logs GLPI pour l’attribuer à l’utilisateur www-data.
Création des fichiers de configurations
sudo nano /var/www/glpi/inc/downstream.phpOn crée le fichier downstream.php.
<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
require_once GLPI_CONFIG_DIR . '/local_define.php';
}On colle ce code dans le fichier que nous venons de créer. On enregistre avec Ctrl+O, puis Entrée, et on quitte avec Ctrl+X.
sudo nano /etc/glpi/local_define.phpOn crée le fichier de configuration local_define.php. Il permet d’indiquer à GLPI les emplacements personnalisés des dossiers : GLPI_VAR_DIR et GLPI_LOG_DIR
<?php
// Définition des chemins personnalisés pour les données et les logs de GLPI
define('GLPI_VAR_DIR', '/var/lib/glpi/files');
define('GLPI_LOG_DIR', '/var/log/glpi');
On colle le code dans le fichier que nous venons de créer. On enregistre avec Ctrl+O, puis Entrée, et on quitte avec Ctrl+X.
Configuration d'Apache
Un VirtualHost sous Apache est une configuration qui permet d’héberger plusieurs sites web (avec des noms de domaine ou des adresses IP différentes) sur un même serveur Apache.
Nous allons donc créer un fichier de configuration VirtualHost pour l’hébergement de notre GLPI.
sudo nano /etc/apache2/sites-available/support.damort.lab.confCe qui devrai donner ceci :
<VirtualHost *:80>
ServerName support.damort.lab
DocumentRoot /var/www/glpi/public
# If you want to place GLPI in a subfolder of your site (e.g. your virtual host is serving multiple applications),
# you can use an Alias directive. If you do this, the DocumentRoot directive MUST NOT target the GLPI directory itself.
# Alias "/glpi" "/var/www/glpi/public"
<Directory /var/www/glpi/public>
Require all granted
RewriteEngine On
# Redirect all requests to GLPI router, unless file exists.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
</VirtualHost>Une fois nos modifications effectuées on enregistre notre fichier avec ctrl+o et on le ferme avec ctrl+x
sudo a2ensite support.damort.lab.confOn active le site Apache support.damort.lab.conf.
sudo a2dissite 000-default.confOn désactive le site Apache par défaut.
sudo a2enmod rewriteOn active le module rewrite d’Apache, qui permet de réécrire les URL.
sudo systemctl restart apache2On redémarre le service Apache pour appliquer les changements.
Installation de PHP-FDM
sudo apt install php-fpmOn installe PHP-FPM, le gestionnaire de processus PHP.
sudo a2enmod proxy_fcgi setenvifOn active les modules proxy_fcgi et setenvif d’Apache, nécessaires pour l’utilisation de PHP-FPM.
sudo a2enconf php8.4-fpmOn active la configuration Apache pour PHP-FPM.
sudo systemctl reload apache2On recharge Apache sans l’arrêter pour appliquer les changements.
sudo nano /etc/php/8.4/fpm/php.iniOn ouvre le fichier de configuration PHP-FPM pour édition.
Il faut maintenant rechercher la valeur (Ctrl+F) session.cookie_httponly et la passer sur on. Cela rend le cookie PHP accessible uniquement côté serveur.
On enregistre le fichier avec Ctrl+O et on le ferme avec Ctrl+X.
On redémarre ensuite le service PHP-FPM.
sudo systemctl restart php8.4-fpm.serviceL'étape finale est de préciser à Apache que c'est le moteur PHP-FPM qui devra être utilisé. On retourne donc sur notre virtualhost créé précédemment pour le lui indiquer.
sudo nano /etc/apache2/sites-available/support.damort.lab.confOn vient ensuite placer ce code entre les deux balises VirtualHost :
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>Ce qui donne ceci :

Il ne nous reste plus qu'à redémarrer une dernière fois Apache avec la commande :
sudo systemctl restart apache2Si vous ne disposez pas de serveur DNS et que vous souhaitez résoudre un nom de domaine localement, alors vous devez modifier votre fichier hosts pour accéder au site.
Configuration de GLPI
Une fois arrivé sur notre GLPI, on sélectionne Français et on clique sur OK.

On valide la licence en cliquant sur Continuer.

Notre GLPI étant une première installation, on clique sur Installer.

Après avoir vérifié que tous les pré-requis de GLPI sont satisfaits pour l'installation, on clique sur Continuer.


GLPI nous demande alors de renseigner les identifiants de connexion à la base de données définie lors de la création de l'utilisateur GLPI dans la base de données.

On sélectionne ensuite notre base de données GLPI et on clique sur Continuer.

Un message de confirmation nous indique que la base a bien été installée. On poursuit avec Continuer.

On choisit d’envoyer les "statistiques d'usage" ou non à la société GLPI.

Enfin, une avant-dernière étape où on prend connaissance du message et on clique sur Continuer.

L'installation est enfin terminée et GLPI nous communique les mots de passe par défaut. On les enregistre et on clique sur Utiliser GLPI.



Il ne nous reste plus qu’à supprimer du serveur le fichier install.php, qui pourrait relancer l’installation et ainsi perturber le fonctionnement de GLPI.
sudo rm /var/www/glpi/install/install.phpConclusion
L’installation et la configuration de GLPI sont maintenant terminées. Votre serveur est prêt à gérer les tickets, les inventaires et l’administration de votre infrastructure. Pensez à maintenir GLPI et vos dépendances (Apache, PHP, MariaDB) à jour, et à réaliser régulièrement des sauvegardes de la base de données et des fichiers pour garantir la sécurité et la pérennité de votre plateforme.