#type/kb #theme/IT/tools/glpi #theme/IT/LNX/Debian # Installer GLPI sous Debian 12 Ce KB (Knowledge Base) est une procédure simplifiée d’installation d’un serveur GLPI sous Debian 12. ## Prérequis - Disposer d'une machine Debian 12 (idéalement sans environnement de bureau) - Connaitre les commandes de bases de l'administration sous Debian. - Disposer des compétences de base en administration système et réseau. ## Sommaire Dans les prochaines étapes nous réaliser les opérations suivantes : - [[#Présentation de l'environnement de démonstration]]. - [[#Installation des prérequis GLPI 10.0.7 et ultérieur]] - [[#Installer GLPI 10.0.x]] - [[#Configuration initiale de GLPI]] # Présentation de l'environnement de démonstration ## Présentation de GLPI GLPI _(Gestionnaire Libre de Parc Informatique)_ est une solution logicielle permettant d’a**ssurer la gestion d’un système d’information** _(SI)_ et l’**assistance aux utilisateurs** de façon centralisée qui a vu le jour en 2003. Le [GLPI-Project](https://glpi-project.org/fr/) est aujourd’hui géré par **TecLib** mais reste sous **licence GPL**. > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> GLPI fait partie des logiciels **ITSM (Information Technology Service Management).** Cette notion est souvent associée à **ITIL, le référentiel de bonnes pratiques** en matière de management des services informatiques.</span> C’est un outil open source, gratuit, cross-platform et compatible ITIL. GLPI permet de mener de nombreuses actions de gestion de parcs telles que : - La gestion de l’inventaire : Gérer leur parc matériel et logiciel. - La gestion du cycle de vie des équipements : Statut des équipements, gestion des stocks et des renouvellements. - La gestion administrative et financière : gérer les garanties, les contrats, les amortissements, les, - Le support aux utilisateurs (helpdesk) : traiter les demandes, les incidents, les problèmes et les projets de changement. ## Présentation de la VM de démonstration > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Il est possible de l’installer sur des machines **Linux, Mac et Windows**, nous avons fait le choix de l’installer sur une machine Debian en version 12 sans interface graphique.</span> Dans cette procédure, nous utiliserons une machine virtuelle sous VirtualBox avec les configurations suivantes : - **Configuration du hardware virtuel** : - Nom de la VM : VM-GLPI - RAM : 2 Go (1 Go minimum) - CPU : 2 vCPU (1 vCPU minimum) - Disque : 20 Go en provisionnement dynamique (10 Go minimum). - Réseau : 1 adaptateur connecté au LAN - **Configuration du système** : Installation minimaliste depuis le CD net-install sans environnement du bureau et sans paquet additionnels pendant l'installation. - Le compte **root est désactivé** (laisser le mot de passe vide durant l’installation). - Utilisateur **non-root** nommé "admin-glpi" est membre du groupe sudo. - Installation manuelle des paquets complémentaires : openssh-server et des outils additionnels invités de mon hyperviseur. - **Configuration IP statique** : - Hostname : GLPI - Adresse : 10.0.2.15/24 - DNS : 1.1.1.1 et 8.8.8.8 - Passerelle : 10.0.2.1 - Suffixe DNS : mon-domain.local # Installation des prérequis GLPI 10.0.7 et ultérieur L'ensemble de prérequis GLPI sont disponibles directement sur la documentation officielle : https://glpi-install.readthedocs.io/en/latest/prerequisites.html : - Un serveur Web : apache2 (ou ultérieur), Nginx, lighttpd ou Microsoft IIS - PHP version 7.4 minimum, avec certaines extensions obligatoires (listées dans cette procédure). - Une base de données : MariaDB 10.2 minimum ou MySQL 5.7 minimum. ## Installation LAMP > [!warning] Ressources : <span style="font-weight: normal; color: var(--text-normal)">Pour une installation détaillée de LAMP, suivre la procédure annexe [[kb-lnx-lamp]].</span> ### Installation du socle LAMP Mettre à jour le système : ``` sudo apt update && sudo apt upgrade -y ``` Installer apache2, MariaDB et PHP : ``` sudo apt install apache2 php mariadb-server -y ``` ### Installer les extensions PHP requises Une fois votre socle LAMP installé, nous pouvons compléter sa configuration pour respecter les prérequis et les recommandations GLPI. Chacune de ces extensions PHP permet d’activer des fonctionnalités supplémentaires dans GLPI telles que l’authentification depuis un annuaire ldap par exemple. Voici la liste des extensions PHP requises pour GLPI : ``` sudo apt install php-xml php-common php-json php-mysql php-mbstring php-curl php-gd php-intl php-zip php-bz2 php-imap php-apcu -y ``` Si vous envisagez d'associer GLPI avec un annuaire LDAP comme l'Active Directory, vous devez installer l'extension LDAP de PHP. Sinon, ce n'est pas nécessaire et vous pouvez le faire par la suite, si besoin. ``` sudo apt install php-ldap -y ``` ### Préparer une base de données pour GLPI Nous allons préparer MariaDB pour qu'il puisse héberger la base de données de GLPI. La première action à effectuer, c'est d'exécuter la commande ci-dessous pour appliquer les configurations minimales de sécurisation de l'instance : ``` sudo mysql_secure_installation ``` Lorsque le message suivant s’affiche, presser la touche **`n`** (pour no) : ``` Switch to unix_socket authentication [Y/n] n ``` Pour toutes les questions suivantes, acceptez toutes les modifications proposées par le script et pressez la touche `[Y]`, puis `[Enter]` afin d’appliquer les configurations : - Changer le mot de passe root de MariaDB. - Supprimer les comptes anonymes. - Désactiver l'accès root à distance. - Supprimer les bases de données de tests. - Rechercher les privilèges des utilisateurs MariaDB. Vous devriez obtenir le message final suivant ``` All done!  If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! ``` Pour préparer la base GLPI dans MariaDB, se connecter à l’instance avec la commande : ``` sudo mariadb -u root -p ``` > [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Le compte root de l’instance mariaDB, est l’administrateur du Système de Gestion de Base de Données Relationnel. Ce n’est pas le compte root utiliser pour ouvrir une session sur l’OS.</span> Créer la base de données `glpidb`, et l’utilisateur `glpidb_admin` avec le mot de passe `my_password` qui disposera de tous les droits sur cette base (et uniquement celle-ci). ``` CREATE DATABASE glpidb; GRANT ALL PRIVILEGES ON glpidb.* TO glpidb_admin@localhost IDENTIFIED BY "my_password"; FLUSH PRIVILEGES; ``` Vérifiez que l'ensemble des commandes se sont exécutées sans erreur puis saisir l'instruction suivante pour quitter l'instance MariaDB : ``` EXIT; ``` Pour confirmer le bon fonctionnement de la nouvelle base et de l'utilisateur créé, , se connecter à l’instance avec le nouveau compte : ``` sudo mariadb -u glpidb_admin -p ``` Une fois authentifié vous pouvez constater la présence de la base de donnée `glpidb` à l'aide de la commande `show databases;`. Voici le résultat de la commande sur ma machine de démonstration : ![[_img-kb-lnx-glpi.png]] # Installer GLPI 10.0.x ## Télécharger l'archive officielle La prochaine étape consiste à **télécharger l'archive ".tgz"** qui contient les sources d'installation de GLPI. À partir du projet  [GitHub de GLPI](https://github.com/glpi-project/glpi/releases/), vérifiez que vous utilisez bien la dernière version disponible. Dans notre cas, c'est la version **GLPI 10.0.18** qui sera installée. > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> La commande wget permet de télécharger un fichier à partir de son **URL** en ligne de commande. </span> Installer wget (outil qui permet le téléchargement de fichier à partir d’une url). ``` sudo apt update sudo apt install wget -y ``` Se déplacer dans le dossier "/tmp" : ``` cd /tmp ``` Télécharger le fichier compressé : ``` wget https://github.com/glpi-project/glpi/releases/download/10.0.18/glpi-10.0.18.tgz ``` Décompresser l'archive .**tgz** dans le répertoire du site par défaut d’apache "**/var/www/**", ce qui donnera le chemin d'accès "**/var/www/glpi**" pour GLPI. ``` sudo tar -xzvf glpi-10.0.18.tgz -C /var/www ``` Nous allons définir l'utilisateur "**www-data**" correspondant au compte de service d’**Apache2**, en tant que **propriétaire** sur les fichiers GLPI. ``` sudo chown www-data /var/www/glpi -R ``` ## Sécuriser les fichiers sensibles de GLPI Comme beaucoup d'autres applications web, GLPI peut être installé en copiant simplement le répertoire entier sur n'importe quel serveur web. Cependant, cela peut être moins sûr. Tous les détails de cette configuration sont issus de la documentation officielle : https://glpi-install.readthedocs.io/en/latest/prerequisites.html. > [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Chaque fichier accessible directement depuis un serveur web doit être considéré comme dangereux !</span> GLPI stocke certaines données dans le répertoire `files` , la configuration d'accès à la base de données est stockée dans le répertoire `config`, etc. Même si GLPI fournit des moyens d'empêcher l'accès direct aux fichiers par le serveur Web, la meilleure pratique consiste à stocker des données en dehors de la racine Web. De cette façon, les fichiers sensibles ne sont pas accessibles directement depuis le serveur Web. Il existe quelques directives de configuration que vous pouvez utiliser pour y parvenir (directives utilisées dans les packages en aval fournis): - `GLPI_CONFIG_DIR`: définir le chemin d'accès au répertoire de configuration. - `GLPI_VAR_DIR` : tracer le chemin vers le répertoire `files`. - `GLPI_LOG_DIR`: définir le chemin d'accès aux fichiers journaux. Nous allons devoir créer plusieurs dossiers et sortir des données de la racine Web (/var/www/glpi) de manière à les stocker dans les nouveaux dossiers que nous allons créer. Ceci va permettre de faire une **installation sécurisée de GLPI, qui suit les recommandations de l'éditeur**. ### Déplacer le répertoire de configuration GLPI Commencez par créer le répertoire "/etc/glpi" qui va recevoir les fichiers de configuration de GLPI. Nous donnons des autorisations à www-data sur ce répertoire, car il a besoin de pouvoir y accéder. ``` sudo mkdir /etc/glpi sudo chown www-data /etc/glpi/ ``` Puis, nous allons déplacer le répertoire "config" de GLPI vers ce nouveau dossier : ``` sudo mv /var/www/glpi/config /etc/glpi ``` ### Déplacer le répertoire des fichiers GLPI Répétons la même opération avec la création du répertoire "/var/lib/glpi" : ``` sudo mkdir /var/lib/glpi sudo chown www-data /var/lib/glpi/ ``` Dans lequel nous déplaçons également le dossier "**files**" qui contient la majorité des fichiers de GLPI : CSS, plugins, etc. ``` sudo mv /var/www/glpi/files /var/lib/glpi ``` ### Déplacer le répertoire des logs GLPI Terminons par la création du répertoire "**/var/log/glpi**" destiné à stocker les journaux de GLPI. Toujours sur le même principe : ``` sudo mkdir /var/log/glpi sudo chown www-data /var/log/glpi ``` Nous n'avons rien à déplacer dans ce répertoire. ### Configurer les directives GLPI Nous devons configurer GLPI pour qu'il sache où aller chercher les données. Autrement dit, nous allons déclarer les nouveaux répertoires fraichement créés. Nous allons créer ce premier fichier : ``` sudo nano /var/www/glpi/inc/downstream.php ``` Afin d'ajouter le contenu ci-dessous qui indique le chemin vers le **répertoire de configuration** : ``` <?php define('GLPI_CONFIG_DIR', '/etc/glpi/'); if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) { require_once GLPI_CONFIG_DIR . '/local_define.php'; } ``` Ensuite, nous allons créer ce second fichier : ``` sudo nano /etc/glpi/local_define.php ``` Afin d'ajouter le contenu ci-dessous permettant de **déclarer deux variables** permettant de préciser les chemins vers **les répertoires "files" et "log"** que l'on a préparé précédemment. ``` <?php define('GLPI_VAR_DIR', '/var/lib/glpi/files'); define('GLPI_LOG_DIR', '/var/log/glpi'); ``` ## Préparer la configuration Apache2 Passons à la configuration du serveur web Apache2. Tous les détails de cette configuration sont issus de la documentation officielle : https://glpi-install.readthedocs.io/en/latest/prerequisites.html. Dans les prochaines étapes, nous allons : - Désactiver le site par défaut d'Apache2. - Créer un nouveau fichier de configuration qui va permettre de configurer le VirtualHost dédié à GLPI. - Optimiser les performances du moteur de script PHP. ### Désactiver le site par défaut d'Apache2 Cette opération permet de renforcer la sécurité du serveur LAMP et d'éviter les conflit avec le futur site GLPI. Pour désactiver le site par défaut d'apache utiliser la commande : ``` sudo a2dissite 000-default.conf ``` ### Création du virtualhost GLPI Dans cette démonstration, le fichier de configuration du site GLPI s'appelle "glpi.mon-domaine.local.conf" : ``` sudo nano /etc/apache2/sites-available/glpi.mon-domaine.local.conf ``` Collez la configuration suivante basée le modèle officiel de la documentation GLPI et enregistrez les modifications : ``` <VirtualHost *:80> ServerName glpi.mon-domaine.local 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> ``` Pour activer ce nouveau site dans Apache2 utilisez la commande : ``` sudo a2ensite glpi.mon-domaine.local.conf ``` Il est nécessaire d'activer le module Apache2 dédié aux règles de réécriture des url car il est utilisé dans le fichier de configuration du VirtualHost (*RewriteCond / RewriteRule*) : ``` sudo a2enmod rewrite ``` ### Renforcer la sécurité relative aux cookies La directive PHP "*session.cookie_httponly*" devrait être activée pour prévenir l'accès aux cookies depuis les scripts exécutés du côté client. Pour activer cette directive, éditer le fichier : ``` sudo nano /etc/php/8.2/apache2/php.ini ``` Dans ce fichier, recherchez l'option "**session.cookie_httponly**" et indiquez la valeur "1" pour l'activer : ![[_img-kb-lnx-glpi-3.png]] Enregistrez les modifications et redémarrez le service Apache2 : ``` sudo systemctl restart apache2 ``` > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Par la suite, vous pourriez être amené à effectuer d'autres modifications, notamment pour augmenter la taille des uploads sur GLPI, etc.</span> ### Optionnel : Optimiser les performances avec PHP-FPM Pour utiliser PHP en tant que moteur de scripts avec Apache2, il y a deux possibilités : - **Utiliser le module PHP** (libapache2-mod-php8.2) : Apache2 exécute son propre moteur de scripts PHP. - **Utiliser PHP-FPM** : recommandé pour les performances car il fonctionne comme un service indépendant. Installez PHP8.2-FPM avec la commande suivante : ``` sudo apt install php8.2-fpm ``` Activer deux modules dans Apache et la configuration de PHP-FPM, avant de recharger Apache2 : ``` sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.2-fpm sudo service apache2 reload ``` Pour configurer PHP-FPM pour Apache2, éditez le fichier suivant : ``` sudo nano /etc/php/8.2/fpm/php.ini ``` Dans ce fichier, recherchez l'option "*session.cookie_httponly*" et indiquez la valeur "1" pour l'activer afin de protéger les cookies de GLPI : ![[_img-kb-lnx-glpi-3.png]] Enregistrez les modifications, il ne reste plus qu'à redémarrer le service "`php8.2-fpm`" : ``` sudo service php8.2-fpm restart ``` Modifiez le fichier de configuration du VirtulHost de GLPI pour préciser à Apache2 que PHP-FPM doit être utilisé en tant que moteur de script : ``` <FilesMatch \.phpgt; SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/" </FilesMatch> ``` > [!Danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">Dorénavant Apache2 n'utilisera plus le fichier par défaut de `php.ini` situé dans `/etc/php/8.2/apache2/`. Si vous devez modifier de nouvelles directives php, utilisez le fichier ci-dessous.</span> Voici un exemple : ![[_img-kb-lnx-glpi-2.png]] Pour finir, relancez le service Apache2 : ``` sudo service apache2 restart ``` # Configuration initiale de GLPI Pour effectuer la configuration initiale de l'application Web, utilisez un navigateur Web depuis une machine cliente connectée au même réseau local : http://10.0.2.15 Si vous avez suivi toutes les étapes correctement, vous devriez arriver sur cette page. Nous allons commencer par choisir la langue. ![[_img-kb-lnx-glpi-1.png]] Lire le contrat de licence GNU GPL v3 puis cliquer sur "**Continuer >**" ![[_img-kb-lnx-glpi-4.png]] Puisqu'il s'agit d'une nouvelle installation, nous cliquons sur "**Installer**". ![[_img-kb-lnx-glpi-5.png]] GLPI vérifie la configuration de notre serveur pour déterminer si tous les prérequis sont respectés. > [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Si une extension requise n'est pas validée, c’est certainement qu’il vous manque une dépendance php. Le plus souvent, ce problème se règle en tapant le nom de l’extension précédé par “php-”. Par exemple s’il manque **intl**, installer le paquet php-intl avec l’outil de gestion de paquet Debian (apt).</span> ![[_img-kb-lnx-glpi-6.png]] > [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Dans le cadre de cette procédure, l'ensemble des tests devraient être validés.</span> À l'étape suivante, nous devons renseigner les informations pour se connecter à la base de données - Serveur SQL : `localhost` (MariaDB est installé en local sur le serveur GLPI). - Utilisateur : `glpidb_admin` - Mot de passe : `my_password` ![[_img-kb-lnx-glpi-7.png]] Choisir la base de données "**glpidb**" créée précédemment. ![[_img-kb-lnx-glpi-8.png]] > [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Ne **cliquez qu’une seule fois** sur le bouton « Continuer » et patientez, en attendant le message « OK – La base a bien été initialisée »</span> ![[_img-kb-lnx-glpi-9.png]] Décochez “Envoyer les statistiques d’usage”, notre votre machine est une simple démonstration : ![[_img-kb-lnx-glpi-10.png]] Suivez les dernières étapes qui n'ont pas d'impact particulier : ![[_img-kb-lnx-glpi-11.png]] Notez les logins et mots de passe par défaut puis cliquez sur le bouton "Utiliser GLPI" : - glpi/glpi pour le compte super-administrateur - tech/tech pour le compte technicien - normal/normal pour le compte utilisateur standard - post-only/postonly pour le compte du même nom ![[_img-kb-lnx-glpi-12.png]] Nous allons donc nous connecter avec le compte "*glpi*" et le mot de passe "*glpi*" en utilisant la source d'authentification "*Base interne GLPI*" : ![[_img-kb-lnx-glpi-13.png]] Bienvenue sur votre nouveau serveur GLPI ! ![[_img-kb-lnx-glpi-14.png]] Même si l'installation est terminée, nous avons encore quelques actions à réaliser pour la finaliser : - Changer le mot de passe de tous les comptes par défaut (cliquez sur les liens situés dans l'encadré orange) - Supprimer le fichier "install.php" puisqu'il n'est plus nécessaire et représente un risque (relancer l'installation) ``` sudo rm /var/www/glpi/install/install.php ``` # Conclusion > [!done] Félicitations ! <span style="font-weight: normal; color: var(--text-normal)"> L'installation de GLPI est terminée et elle respecte les bonnes pratiques minimales de sécurité préconisées par l'éditeur.</span> Désormais, votre GLPI est prêt à être utilisé et configuré (création d'utilisateurs, de catégories, de tickets, etc...). Pour aller plus loin, vous pourriez être intéressé par certains article complémentaires : - [Comment mettre à jour GLPI ?](https://www.it-connect.fr/tuto-mettre-a-jour-glpi/ "Comment mettre à jour GLPI ?") - [Comment installer un certificat HTTPS sur un serveur GLPI ?](https://www.it-connect.fr/glpi-en-https-comment-ajouter-un-certificat-ssl/) - [Comment déployer l'agent GLPI sur Windows par GPO ?](https://www.it-connect.fr/tuto-installer-configurer-gpo-agent-glpi-windows/ "GLPI 10 : comment déployer l’agent GLPI sur les machines Windows à l’aide d’une GPO ?") - [Comment synchroniser GLPI avec l'Active Directory ?](https://www.it-connect.fr/tuto-glpi-configurer-authentification-active-directory/ "GLPI : comment configurer l’authentification LDAP via l’Active Directory ?") ## Références - OpenClassrooms : [Gérez votre parc informatique avec GLPI](https://openclassrooms.com/fr/courses/1730516-gerez-votre-parc-informatique-avec-glpi) - IT-CONNECT : [Installation pas à pas de GLPI 10 sur Debian 12](https://www.it-connect.fr/installation-pas-a-pas-de-glpi-10-sur-debian-12)