Atelier A505 16/12/2025
Pitch de l’exercice 🧑‍🏫

L : Installation d'une VM Debian

On a pas besoin d'un environnement de bureau : il n'y a pas d'écran connecté à un serveur, on s'y connecte ultérieurement avec le protocole SSH


Création SUDO
On installe et on passe notre utilisateur en sudo
su -
apt update
apt install sudo
usermod -aG sudo freed
Guest addition
sudo apt install qemu-guest-agent
sudo systemctl start qemu-guest-agent
A : Apache
sudo apt install apache2

On met notre VM par pont pour y avoir accès sur notre réseau, sudo systemctl restart networking pour renouveler notre IP, et ip a pour avoir l'IP du serveur et s'y connecter dessus.

M : MariaDB
On va installer un serveur de bases de données (un SGBDR, pour Système de Gestion de Bases de Données Relationnelles). L'un des plus connus est MySQL, et un fork a vu le jour il y a quelques années : MariaDB.
sudo apt install mariadb-server
sudo madiadb_secure_installation

Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

On se connecte au shell mySQL avec mysql -u root -p
On va créer un utilisateur avec les instructions SQL suivantes
CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'rocknroll';
GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
P : PHP
La plupart des applications web sont développées avec le langage PHP : c'est le cas de GLPI, il faut donc qu'on installe l'interpréteur PHP
sudo apt install php libapache2-mod-php
On va également installer plusieurs modules de PHP, souvent utiles (certains sont indispensables, comme le module php-mysql)
sudo apt install php-{curl,gd,intl,memcache,xml,zip,mbstring,json,mysql,bz2,ldap}
Redémarrage du service Apache avec la commande sudo systemctl restart apache2
Création d'un fichier PHP basique avec echo "<?php phpinfo(); ?>" | sudo tee -a /var/www/html/info.php et pour vérifier sur http://192.168.1.86/info.php

Connexion SSH

GLPI
On va télécharger et décompresser GLPI avec
cd ~
wget https://github.com/glpi-project/glpi/releases/download/10.0.17/glpi-10.0.17.tgz
sudo tar -xvf glpi-10.0.17.tgz -C /var/www/html
En allant sur http://192.168.1.86/glpi/ on a une erreur qui indique que GLPI nécessite php 7.4.0 à 8.4.0 hors Debian 13 a la version php 8.4.10
On va devoir réinstaller une version antérieure de php
sudo apt install curl
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt install php8.2 php8.2-mysql php8.2-xml php8.2-curl php8.2-gd php8.2-intl php8.2-mbstring php8.2-zip php8.2-bz2 php8.2-ldap -y
sudo a2dismod php8.4
sudo a2enmod php8.2
sudo systemctl restart apache2
C'est OK, maintenant on passe Ă l'installation de GLPI
On doit modifier les droits d'accès au fichier html avec un chmod 770

On va ignorer les erreurs de sécurisé qu'on corrigera ultérieurement, et on va se connecter à l'utilisateur dbuser qu'on avait créé puis créer une nouvelle db

On a finit l'installation, et on peu se connecter avec glpi/glpi, et nous voilĂ sur notre tableau de bord !

Bonus : PHPMyAdmin & Adminer
Pour administrer un serveur de base de données relationnelles tel que MySQL ou MariaDB, on utilise en général une interface web. Il existe deux solutions populaires : PHPMyAdmin et Adminer
sudo apt install phpmyadmin
On sélectionne apache2 en appuyant sur la touche Espace de votre clavier AVANT d'appuyer sur Entrée pour valider. Sinon la commande sudo dpkg-reconfigure phpmyadmin permet de reconfigurer (dpkg : debian package)
On s'y connecte avec notre dbuser

On va aussi tester Adminer
cd /var/www/html
mkdir adminer
cd adminer
wget https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1-mysql.php
mv adminer-4.8.1-mysql.php index.php
On a une interface très légère voir minimaliste


Super-bonus : sécurité
On va résoudre les problèmes de sécurité indiqués lors de l'installation.
Documentation officielle sur la configuration du serveur Apache, et les Virtual Hosts Apache.
On va retrouver nos erreurs dans : Configuration > Générale

Erreur 1 : le site GLPI doit pointer sur /public et non /glpi
Web server root directory configuration is not safe as it permits access to non-public files. See installation documentation for more details.

On va créer un fichier de configuration avec sudo nano /etc/apache2/sites-available/glpi.conf

On va désactiver l'ancienne conf et mettre la nouvelle
sudo a2ensite glpi.conf
sudo a2dissite 000-default.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
Erreur 2 : les cookies 🍪
PHP directive "session.cookie_httponly" should be set to "on" to prevent client-side script to access cookie values.
On doit sécuriser l'accès aux Cookies pour empêcher des scripts d'y accéder
On va ouvrir notre config php avec sudo nano /etc/php/8.2/apache2/php.ini
On cherche la ligne en question avec Crtl + W et on l'active avec on

On sauvegarde et redémarre apache
Problème de Timezone
Mariadb n'a pas accès aux informations de TZ nativement https://glpi-install.readthedocs.io/en/latest/timezones.html
On va lui injecter ces informations :
mariadb-tzinfo-to-sql /usr/share/zoneinfo > /tmp/zones.sql
sudo mariadb -u root -p mysql
Il faut maintenant donner le droit de lecture Ă notre utilisateur
sudo mariadb -u root -p
USE mysql;
GRANT SELECT ON time_zone_name TO 'dbuser'@'localhost';
FLUSH PRIVILEGES;
exit
Effacer le fichier d'installation
sudo rm /var/www/html/glpi/install/install.php

Hyper-bonus : configuration de GLPI
Prérequis : avec une VM Windows avec l'agent GLPI Windows et qui est sur le même réseau que notre serveur.
Depuis ma VM Windows 10 je ping mon serveur et je vais télécharger mon agent GLPI (.msi) sur https://github.com/glpi-project/glpi-agent/releases/tag/1.15

On target notre serveur GLPI

On va activer l'inventaire dans notre serveur GLPI > Administration > Inventaire > Activer.
On va forcer l'inventaire en ouvrant http://localhost:62354 dans notre navigateur sur la VM Windows

Et voilĂ !


Sur linux pour installer le GLPI agent
sudo apt update
sudo apt install glpi-agent
modifier le fichier config et ajouter notre serveur server = http://10.0.0.55/glpi/
sudo nano /etc/glpi-agent/agent.cfg
redémarrer le service
sudo systemctl restart glpi-agent
forcer l'inventaire
sudo glpi-agent --force