Installation de GLPI 11

Gestion de parc informatique et helpdesk sur Debian 12 — BTS SIO SISR

Présentation

GLPI (Gestion Libre de Parc Informatique) est une solution open source de gestion de parc informatique et d'helpdesk conforme aux bonnes pratiques ITIL. Elle permet de centraliser la gestion des équipements, des tickets de support, des licences et des contrats au sein d'une seule interface web.

Cette procédure décrit l'installation de GLPI 11.0.6 sur Debian 12 (Bookworm) avec la stack Apache 2 + PHP 8.4-FPM + MariaDB, en appliquant la séparation des répertoires recommandée par le projet pour un déploiement sécurisé.

Fonctionnalités principales

Architecture technique

ComposantValeur
Système d'exploitationDebian 12 (Bookworm)
Serveur webApache 2.4
Moteur PHPPHP 8.4-FPM
Base de donnéesMariaDB 10.11+
ApplicationGLPI 11.0.6
AccèsInterface web (HTTP/HTTPS)

Séparation des répertoires (bonne pratique GLPI 11)

RépertoireRôle
/var/www/glpi/Code source de l'application (DocumentRoot = public/)
/etc/glpi/Fichiers de configuration (hors webroot)
/var/lib/glpi/Données persistantes (uploads, cache, sessions)
/var/log/glpi/Journaux applicatifs
Pourquoi séparer les répertoires ? Placer la configuration et les données en dehors du webroot empêche leur exposition directe via Apache, ce qui renforce la sécurité de l'installation en production.

Prérequis

Matériel minimum

RessourceMinimumRecommandé
CPU1 vCPU2 vCPU
RAM1 Go2 Go
Stockage8 Go20 Go

Logiciels requis

Installation pas à pas

Étape 1 : Mise à jour du système

apt update && apt upgrade -y

Étape 2 : Installation des dépendances

Installation d'Apache, MariaDB, PHP 8.4-FPM et de toutes les extensions PHP requises par GLPI 11 :

apt install -y apache2 mariadb-server \
  php8.4-fpm \
  php8.4-{curl,gd,intl,mysql,zip,bcmath,mbstring,xml,bz2,apcu,imap} \
  wget tar

Extension LDAP (optionnelle, requise pour intégration Active Directory) :

apt install -y php8.4-ldap
PHP-FPM vs mod_php : PHP-FPM (FastCGI Process Manager) est le mode d'exécution recommandé pour GLPI 11. Il offre de meilleures performances et un meilleur isolement des processus PHP par rapport au module Apache classique.

Étape 3 : Sécurisation de MariaDB

Exécuter le script de sécurisation interactif fourni avec MariaDB :

mysql_secure_installation

Répondre aux questions du script :

Étape 4 : Création de la base de données

mysql -u root -p
CREATE DATABASE db25_glpi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'glpi_adm'@'localhost' IDENTIFIED BY 'MotDePasseRobuste!2025';
GRANT ALL PRIVILEGES ON db25_glpi.* TO 'glpi_adm'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Sécurité : Remplacer MotDePasseRobuste!2025 par un mot de passe fort unique. Ne jamais utiliser root comme utilisateur applicatif.

Étape 5 : Téléchargement et extraction de GLPI

cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/11.0.6/glpi-11.0.6.tgz
tar -xzvf glpi-11.0.6.tgz -C /var/www/
rm glpi-11.0.6.tgz

Appliquer les permissions correctes au code source :

chown -R www-data:www-data /var/www/glpi/
chmod -R 755 /var/www/glpi/

Étape 6 : Séparation des répertoires (bonne pratique)

Déplacer la configuration, les données et les logs en dehors du webroot afin qu'ils ne soient pas accessibles directement par Apache :

# Répertoire de configuration
mkdir -p /etc/glpi
mv /var/www/glpi/config /etc/glpi/config
chown -R www-data:www-data /etc/glpi/

# Répertoire de données persistantes
mkdir -p /var/lib/glpi
mv /var/www/glpi/files /var/lib/glpi/files
chown -R www-data:www-data /var/lib/glpi/

# Répertoire de logs
mkdir -p /var/log/glpi
chown -R www-data:www-data /var/log/glpi/

Étape 7 : Création du fichier downstream.php

Ce fichier indique à GLPI où trouver sa configuration (hors webroot) :

nano /var/www/glpi/inc/downstream.php
<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/config/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
    require_once GLPI_CONFIG_DIR . '/local_define.php';
}

Étape 8 : Création du fichier local_define.php

Ce fichier déclare les chemins des données et des logs :

nano /etc/glpi/config/local_define.php
<?php
define('GLPI_VAR_DIR',  '/var/lib/glpi/files');
define('GLPI_LOG_DIR',  '/var/log/glpi');
chown -R www-data:www-data /etc/glpi/config/

Configuration Apache

Étape 9 : Création du VirtualHost

Avec GLPI 11, le DocumentRoot doit pointer sur le sous-répertoire public/ de l'application, pas sur la racine :

nano /etc/apache2/sites-available/glpi.conf
<VirtualHost *:80>
    ServerName glpi.example.com
    DocumentRoot /var/www/glpi/public

    <Directory /var/www/glpi/public>
        Require all granted
        RewriteEngine On

        # Transmettre le header Authorization à PHP-FPM
        RewriteCond %{HTTP:Authorization} ^(.+)$
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

        # Réécrire toutes les requêtes vers index.php (front controller)
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>

    ErrorLog  ${APACHE_LOG_DIR}/glpi_error.log
    CustomLog ${APACHE_LOG_DIR}/glpi_access.log combined
</VirtualHost>
# Activer le site et les modules nécessaires
a2ensite glpi.conf
a2dissite 000-default.conf
a2enmod rewrite

# Activer le proxy PHP-FPM
a2enmod proxy_fcgi setenvif
a2enconf php8.4-fpm

systemctl restart apache2
Pourquoi public/ ? GLPI 11 adopte le modèle « front controller » : seul le dossier public/ est exposé sur le web. Le reste du code (include, config, vendor) reste inaccessible depuis un navigateur, ce qui réduit la surface d'attaque.

Configuration PHP

Étape 10 : Ajustement de php.ini

nano /etc/php/8.4/fpm/php.ini
; Sécurité des sessions
session.cookie_httponly = On
session.cookie_samesite = Lax

; Limites adaptées à GLPI
memory_limit          = 256M
max_execution_time    = 300
upload_max_filesize   = 100M
post_max_size         = 100M
date.timezone         = Europe/Paris
systemctl restart php8.4-fpm

Délégation PHP-FPM dans Apache (optionnel, dans le VirtualHost)

Si le handler PHP-FPM n'est pas appliqué globalement par la conf php8.4-fpm, ajouter dans le bloc <Directory> :

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>

Installation via interface web

Ouvrir un navigateur et accéder à :

http://<ADRESSE_IP_SERVEUR>

Suivre l'assistant d'installation :

  1. Choix de la langue : Français
  2. Licence GPL : Accepter
  3. Type d'action : Installer
  4. Connexion à la base de données :
    • Serveur SQL : localhost
    • Utilisateur SQL : glpi_adm
    • Mot de passe : le mot de passe défini à l'étape 4
  5. Sélection de la base : db25_glpi
  6. Initialisation : patienter pendant le chargement du schéma
  7. Fin d'installation : noter les comptes par défaut

Comptes par défaut (à changer immédiatement)

LoginMot de passeProfil
glpiglpiSuper-administrateur
techtechTechnicien
normalnormalUtilisateur standard
post-onlypostonlyObservateur (ticket)
SÉCURITÉ CRITIQUE : Changer immédiatement tous les mots de passe par défaut dès la première connexion. Laisser ces comptes inchangés expose l'application à une compromission triviale.

Vérifications

Vérification des services

systemctl status apache2
systemctl status php8.4-fpm
systemctl status mariadb

Vérification de l'installation GLPI

  1. Se connecter avec le compte glpi / glpi
  2. Naviguer vers Configuration → Générale → Système : aucun avertissement rouge ne doit apparaître
  3. Créer un ticket de test : Assistance → Tickets → Créer
  4. Vérifier qu'il apparaît dans la liste des tickets ouverts

Vérification des logs

tail -f /var/log/glpi/php-errors.log
tail -f /var/log/apache2/glpi_error.log

Sécurisation post-installation

Supprimer le script d'installation

rm -f /var/www/glpi/install/install.php

Durcir les permissions sur la configuration

chmod 600 /etc/glpi/config/config_db.php
chown www-data:www-data /etc/glpi/config/config_db.php

Changer tous les mots de passe par défaut

Dans GLPI : Administration → Utilisateurs → modifier chaque compte par défaut (glpi, tech, normal, post-only).

Activer HTTPS (recommandé en production)

apt install -y certbot python3-certbot-apache
certbot --apache -d glpi.example.com
En environnement de test sans nom de domaine public, utiliser un certificat auto-signé ou un proxy HTTPS interne. HTTPS est obligatoire dès que des données personnelles transitent sur le réseau.

Sauvegardes

Sauvegarde de la base de données

mysqldump -u glpi_adm -p db25_glpi > /root/backup_glpi_$(date +%Y%m%d_%H%M).sql

Sauvegarde des fichiers applicatifs

tar -czf /root/glpi_files_$(date +%Y%m%d_%H%M).tar.gz \
  /var/www/glpi/ \
  /etc/glpi/ \
  /var/lib/glpi/

Script de sauvegarde automatique (cron quotidien)

nano /etc/cron.daily/backup-glpi
#!/bin/bash
BACKUP_DIR="/var/backups/glpi"
DATE=$(date +%Y%m%d_%H%M)
mkdir -p "$BACKUP_DIR"

# Base de données
mysqldump -u glpi_adm -pMotDePasseRobuste!2025 db25_glpi \
  > "$BACKUP_DIR/db_$DATE.sql"

# Fichiers
tar -czf "$BACKUP_DIR/files_$DATE.tar.gz" \
  /var/lib/glpi/ /etc/glpi/ 2>/dev/null

# Rotation : garder les 7 derniers jours
find "$BACKUP_DIR" -type f -mtime +7 -delete
chmod +x /etc/cron.daily/backup-glpi

Conclusion

GLPI 11.0.6 est désormais installé et opérationnel sur Debian 12. Cette procédure met en œuvre les bonnes pratiques recommandées par le projet : séparation des répertoires hors webroot, PHP-FPM, front controller Apache, et sécurisation post-installation.

Prochaines étapes

Mots-clés pour l'oral BTS