Services IT / Tutoriel

Installer un serveur GLPI 11 sur Debian 13

Monter un serveur GLPI propre et sécurisé pour l'inventaire du parc et la gestion des tickets : Apache, PHP-FPM, MariaDB, fichiers sensibles hors du dossier web, tâches automatiques, HTTPS, agent d'inventaire, premiers réglages, mises à jour et sauvegarde.

Services IT Tutoriel Intermédiaire Publié le 20 octobre 2026 60 min de lecture
Technicien d'assistance avec un casque devant un ordinateur
Photo : Vagaro sur Unsplash

Avant de commencer

  • Une machine virtuelle ou un serveur Debian 13 à jour, avec un accès root ou sudo
  • Un nom DNS pour le service, par exemple support.exemple.lan
  • Les bases de la ligne de commande Linux (voir les commandes Linux pour débuter)

En clair

GLPI, c'est à la fois le carnet de santé du parc informatique et le guichet du service informatique. Le carnet de santé liste chaque ordinateur, écran, imprimante, logiciel et contrat, avec son historique. Le guichet reçoit les demandes des utilisateurs sous forme de tickets, les attribue à un technicien et garde la trace de ce qui a été fait. Les deux sont liés : quand quelqu'un signale une panne, on voit tout de suite de quelle machine il s'agit.

1. GLPI en bref

GLPI (Gestionnaire Libre de Parc Informatique) est un logiciel libre (licence GPLv3) développé par la société française Teclib'. Il couvre :

Module Ce qu'il fait
Parc Inventaire des ordinateurs, serveurs, réseau, téléphones, imprimantes, logiciels et licences
Assistance Tickets (incidents et demandes), problèmes, changements, délais de traitement (SLA), satisfaction
Gestion Contrats, fournisseurs, budgets, documents, cycle de vie du matériel
Outils Base de connaissances, projets, réservations de matériel, rappels
Inventaire automatique Remontée des machines par l'agent GLPI, intégré nativement depuis GLPI 10

Quelle version ? Au 20 octobre 2026 :

  • GLPI 11.0 est la branche stable à installer (11.0.11 publiée le 1er octobre 2026 ; évitez 11.0.10, remplacée pour une régression).
  • GLPI 10.0.28 est la dernière version de la branche 10 : elle ne recevra plus de correctifs une fois GLPI 12 publié. Si vous êtes encore en 10, planifiez la montée de version.
  • GLPI 12 est en version candidate depuis septembre 2026, avec notamment une base de connaissances remaniée, un gestionnaire de sessions et un mode « sudo » pour les actions sensibles. Attendez la version stable et ses premiers correctifs avant de l'utiliser en production.

Vérifiez la dernière version

Consultez la page des versions de GLPI avant de commencer, et utilisez la plus récente de la branche 11.0. Les mises à jour de sécurité sont fréquentes.

2. Ce qu'on va construire

Élément Choix Pourquoi
Système Debian 13 Stable, PHP 8.4 et MariaDB 11.8 dans les dépôts officiels
Serveur web Apache avec PHP-FPM Configuration documentée par GLPI, PHP séparé du serveur web
Base de données MariaDB GLPI 11 exige MySQL 8.0 ou MariaDB 10.6 au minimum
Emplacement des fichiers Code dans /var/www/glpi, configuration dans /etc/glpi, données dans /var/lib/glpi, journaux dans /var/log/glpi Les fichiers sensibles ne sont jamais accessibles depuis le web
Accès https://support.exemple.lan Un nom dédié, en HTTPS

Dimensionnement de départ pour quelques centaines de machines : 2 vCPU, 4 Go de RAM, 30 Go de disque. Augmentez la RAM et le disque si vous stockez beaucoup de pièces jointes ou si le parc dépasse quelques milliers d'appareils.

Exposition sur Internet

GLPI contient l'inventaire complet du parc et des échanges parfois confidentiels. Laissez-le sur le réseau interne ou derrière un VPN. Si des utilisateurs extérieurs doivent y accéder, passez par un proxy inverse avec HTTPS, la double authentification activée, et appliquez chaque mise à jour de sécurité sans attendre.

3. Installer les paquets

Mettez le système à jour, puis installez Apache, PHP-FPM, MariaDB et les extensions PHP demandées par GLPI 11 :

sudo apt update && sudo apt full-upgrade -y
sudo apt install -y apache2 mariadb-server php8.4-fpm \
  php8.4-curl php8.4-gd php8.4-intl php8.4-mysql php8.4-zip \
  php8.4-bcmath php8.4-mbstring php8.4-xml php8.4-bz2 php8.4-ldap

L'extension php8.4-ldap n'est utile que pour l'authentification par Active Directory ou un annuaire LDAP, mais elle évite de revenir installer un paquet plus tard. Vérifiez la version de PHP :

php -v

4. Préparer la base de données

Sécurisez MariaDB (mot de passe root, suppression des comptes anonymes et de la base de test) :

sudo mariadb-secure-installation

Chargez les fuseaux horaires dans MariaDB. GLPI s'en sert pour afficher les dates selon le fuseau de chaque utilisateur :

mariadb-tzinfo-to-sql /usr/share/zoneinfo | sudo mariadb mysql
sudo systemctl restart mariadb

Créez la base et un compte dédié, qui n'a des droits que sur cette base. Remplacez le mot de passe par une valeur longue et unique, conservée dans votre gestionnaire de mots de passe :

sudo mariadb
CREATE DATABASE glpi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'glpi'@'localhost' IDENTIFIED BY 'MotDePasseLongEtUnique';
GRANT ALL PRIVILEGES ON glpi.* TO 'glpi'@'localhost';
GRANT SELECT ON mysql.time_zone_name TO 'glpi'@'localhost';
FLUSH PRIVILEGES;
EXIT;

5. Télécharger GLPI

Placez le numéro de la dernière version dans une variable, téléchargez l'archive officielle et décompressez-la :

VERSION=11.0.11
cd /tmp
wget "https://github.com/glpi-project/glpi/releases/download/\
${VERSION}/glpi-${VERSION}.tgz"
sudo tar -xzf glpi-${VERSION}.tgz -C /var/www/

Le dossier /var/www/glpi est créé.

6. Sortir les fichiers sensibles du dossier web

Par défaut, la configuration (identifiants de la base, clé de chiffrement) et les données (pièces jointes, sessions) sont dans le dossier de l'application. On les déplace vers les emplacements standard de Linux, comme le recommande la documentation de GLPI.

Déplacez la configuration, les données et créez le dossier des journaux :

sudo mv /var/www/glpi/config /etc/glpi
sudo mkdir -p /var/lib/glpi
sudo mv /var/www/glpi/files /var/lib/glpi/
sudo mkdir -p /var/log/glpi

Indiquez à GLPI où se trouve sa configuration, avec le fichier /var/www/glpi/inc/downstream.php :

sudo tee /var/www/glpi/inc/downstream.php > /dev/null <<'EOF'
<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
    require_once GLPI_CONFIG_DIR . '/local_define.php';
}
EOF

Puis indiquez l'emplacement des données et des journaux dans /etc/glpi/local_define.php :

sudo tee /etc/glpi/local_define.php > /dev/null <<'EOF'
<?php
define('GLPI_VAR_DIR', '/var/lib/glpi/files');
define('GLPI_LOG_DIR', '/var/log/glpi');
EOF

Appliquez les droits selon le moindre privilège : le code appartient à root et n'est pas modifiable par le serveur web, seuls les dossiers qui doivent être écrits appartiennent à www-data (le compte d'Apache et de PHP-FPM) :

sudo chown -R root:root /var/www/glpi
sudo chown -R www-data:www-data /var/www/glpi/marketplace
sudo chown -R www-data:www-data /etc/glpi /var/lib/glpi /var/log/glpi
sudo chmod 750 /etc/glpi /var/lib/glpi /var/log/glpi

Le dossier marketplace reste modifiable pour pouvoir installer des extensions depuis l'interface de GLPI.

7. Configurer Apache

Créez l'hôte virtuel /etc/apache2/sites-available/glpi.conf. Seul le dossier public est servi : le reste de l'application n'est pas accessible depuis le navigateur.

<VirtualHost *:80>
    ServerName support.exemple.lan

    DocumentRoot /var/www/glpi/public

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

        RewriteEngine On

        # Transmet l'en-tête d'autorisation (API, inventaire)
        RewriteCond %{HTTP:Authorization} ^(.+)$
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

        # Toutes les adresses passent par le routeur de GLPI
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>

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

    ErrorLog ${APACHE_LOG_DIR}/glpi-error.log
    CustomLog ${APACHE_LOG_DIR}/glpi-access.log combined
</VirtualHost>

Activez le site et les modules, désactivez le site par défaut, puis vérifiez la syntaxe avant de recharger :

sudo a2enmod rewrite proxy_fcgi setenvif
sudo a2enconf php8.4-fpm
sudo a2ensite glpi.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

La commande configtest doit répondre Syntax OK.

8. Régler PHP

Les réglages se font dans le fichier de PHP-FPM, /etc/php/8.4/fpm/php.ini (et non celui d'Apache, inutilisé ici). Modifiez ou ajoutez ces lignes :

session.cookie_httponly = On
session.cookie_samesite = Lax
upload_max_filesize = 20M
post_max_size = 20M
memory_limit = 256M
date.timezone = Europe/Paris

Redémarrez PHP-FPM :

sudo systemctl restart php8.4-fpm

session.cookie_secure = On s'ajoutera à l'étape HTTPS : l'activer avant empêcherait toute connexion en HTTP.

9. Installer GLPI

Deux méthodes, au choix.

Par le navigateur. Ouvrez http://support.exemple.lan, choisissez la langue, acceptez la licence, puis Installer. GLPI vérifie les prérequis : tout doit être vert, les avertissements orange sont à lire. Indiquez ensuite localhost, l'utilisateur glpi et son mot de passe, sélectionnez la base glpi et laissez l'initialisation se terminer.

En ligne de commande, plus rapide et reproductible. La commande s'exécute avec le compte www-data, et -p sans valeur demande le mot de passe sans le laisser dans l'historique :

cd /var/www/glpi
sudo -u www-data php bin/console db:install \
  -H localhost -d glpi -u glpi -p -L fr_FR

Vérifiez ensuite que tous les prérequis sont remplis :

sudo -u www-data php bin/console glpi:system:check_requirements

10. Sécuriser juste après l'installation

GLPI crée quatre comptes par défaut, aux mots de passe connus de tous (glpi/glpi, tech/tech, normal/normal, post-only/postonly) :

Compte Profil Action
glpi Super-Admin Changer le mot de passe immédiatement, puis le réserver aux urgences
tech Technicien Désactiver ou supprimer
normal Utilisateur Désactiver ou supprimer
post-only Demandeur simple Désactiver ou supprimer
  1. Connectez-vous avec glpi, changez son mot de passe, et créez votre propre compte administrateur nominatif, par exemple spo.
  2. Désactivez les comptes tech, normal et post-only dans Administration > Utilisateurs.
  3. Supprimez le programme d'installation, qui ne doit plus être accessible :

    sudo rm /var/www/glpi/install/install.php

  4. Désactivez les données de démonstration proposées sur le tableau de bord.

  5. Activez la double authentification pour les comptes administrateurs (GLPI 11 intègre l'authentification par code TOTP, voir la double authentification).
  6. Une fois l'installation terminée, rendez la configuration non modifiable par le serveur web :

    sudo chown -R root:www-data /etc/glpi && sudo chmod -R g-w /etc/glpi

La clé de chiffrement

Le fichier /etc/glpi/glpicrypt.key chiffre les mots de passe stockés par GLPI (comptes de messagerie, annuaires LDAP). Sans lui, une restauration de la base est inutilisable pour ces éléments. Il doit faire partie de chaque sauvegarde, et ne doit jamais être publié.

11. Activer les actions automatiques

GLPI a des tâches de fond : envoi des notifications, relève des courriels, calcul des délais, nettoyage. Par défaut, elles sont déclenchées par les visites des utilisateurs, ce qui est peu fiable. Faites-les exécuter chaque minute par le système, avec le compte du serveur web :

echo '* * * * * www-data /usr/bin/php /var/www/glpi/front/cron.php' \
  | sudo tee /etc/cron.d/glpi

Dans GLPI, ouvrez ensuite Configuration > Actions automatiques et passez les tâches en mode CLI. Vérifiez au bout de quelques minutes que la colonne « Dernière exécution » se met à jour.

12. Passer en HTTPS

Les identifiants et les tickets ne doivent pas circuler en clair.

  • Réseau interne : utilisez un certificat émis par l'autorité de certification de l'entreprise (par exemple AD CS) ou par une autorité interne comme step-ca.
  • Nom public : un certificat Let's Encrypt via certbot (paquet python3-certbot-apache) convient.

Ajoutez un hôte virtuel sur le port 443 avec SSLEngine on et les chemins du certificat (module ssl, sudo a2enmod ssl), et faites rediriger le port 80 vers HTTPS. Puis :

  1. Ajoutez session.cookie_secure = On dans /etc/php/8.4/fpm/php.ini et redémarrez PHP-FPM.
  2. Dans Configuration > Générale, mettez à jour l'URL de l'application avec https://support.exemple.lan : elle sert dans les liens des notifications.

13. Remonter l'inventaire avec l'agent GLPI

Activez d'abord l'inventaire dans Administration > Inventaire, case Activer l'inventaire.

Téléchargez l'agent depuis la page des versions de GLPI Agent, puis installez-le sur les postes.

Windows, installation silencieuse depuis l'invite de commandes (pas PowerShell, qui peut gêner le passage des paramètres), en remplaçant le nom du fichier par celui de la version téléchargée :

msiexec /i GLPI-Agent-x.y-x64.msi /quiet ^
  SERVER=https://support.exemple.lan/front/inventory.php RUNNOW=1

Pour un parc, déployez ce même MSI par stratégie de groupe, Intune ou votre outil de déploiement habituel.

Linux, avec le script d'installation fourni sur la même page :

sudo perl glpi-agent-x.y-linux-installer.pl \
  --server=https://support.exemple.lan/front/inventory.php --runnow

Les machines apparaissent dans Parc > Ordinateurs après la première remontée. L'agent sait aussi découvrir le réseau et interroger les équipements en SNMP (switchs, imprimantes) : ces tâches se configurent ensuite dans le même menu d'inventaire.

14. Premiers réglages

Dans l'ordre, pour partir sur une base propre :

  1. Entités : si vous gérez plusieurs sociétés ou sites étanches, créez une entité par périmètre avant d'importer quoi que ce soit. Sinon, gardez l'entité racine.
  2. Authentification : branchez Active Directory ou l'annuaire LDAP dans Configuration > Authentification > Annuaires LDAP pour que les utilisateurs se connectent avec leur compte habituel. Utilisez LDAPS (port 636) et un compte de service en lecture seule.
  3. Profils : partez des profils existants (Self-Service, Technicien, Supervisor, Admin) et ajustez les droits plutôt que d'en créer de zéro.
  4. Catégories de tickets : une dizaine au départ (Poste de travail, Messagerie, Imprimante, Accès et comptes, Réseau, Logiciel…). Trop de catégories découragent les demandeurs.
  5. Collecteur de courriels : dans Configuration > Collecteurs, une adresse comme support@exemple.fr transforme chaque message reçu en ticket.
  6. Notifications : configurez l'envoi SMTP dans Configuration > Notifications, puis ne gardez que les notifications utiles.
  7. Délais (SLA) : définissez des délais de prise en charge et de résolution réalistes, et associez-les aux catégories.
  8. Base de connaissances : publiez les réponses aux questions fréquentes, visibles des utilisateurs depuis l'interface simplifiée. Pour une documentation interne plus riche, voir les bases de connaissances et wikis.

15. Sauvegarder

Trois éléments sont indispensables : la base, les données et la configuration. Exemple de script, à planifier chaque nuit :

#!/bin/bash
# /usr/local/sbin/sauvegarde-glpi.sh
set -euo pipefail
DEST=/var/backups/glpi
JOUR=$(date +%F)
mkdir -p "$DEST"

mariadb-dump --single-transaction glpi | gzip > "$DEST/glpi-base-$JOUR.sql.gz"
tar -czf "$DEST/glpi-fichiers-$JOUR.tar.gz" /etc/glpi /var/lib/glpi

find "$DEST" -type f -mtime +14 -delete

Le script s'exécute en root, qui se connecte à MariaDB sans mot de passe par le socket local. Copiez ensuite /var/backups/glpi hors du serveur (voir la règle 3-2-1), et faites un test de restauration sur une machine de test au moins une fois par trimestre.

16. Mettre à jour GLPI

Une mise à jour de version mineure (11.0.x vers 11.0.y) se fait ainsi. Testez d'abord sur une copie si vous le pouvez.

Étape 1. Lancez une sauvegarde complète (étape 15) et prenez un instantané de la machine virtuelle.

Étape 2. Rendez temporairement la configuration modifiable, puis passez GLPI en maintenance :

sudo chown -R www-data /etc/glpi
sudo -u www-data php /var/www/glpi/bin/console glpi:maintenance:enable

Étape 3. Remplacez le code, en conservant downstream.php et les extensions :

VERSION=11.0.12   # la nouvelle version
cd /tmp
wget "https://github.com/glpi-project/glpi/releases/download/\
${VERSION}/glpi-${VERSION}.tgz"
sudo mv /var/www/glpi /var/www/glpi-ancien
sudo tar -xzf glpi-${VERSION}.tgz -C /var/www/
sudo rm -rf /var/www/glpi/config /var/www/glpi/files
sudo cp /var/www/glpi-ancien/inc/downstream.php /var/www/glpi/inc/
sudo cp -a /var/www/glpi-ancien/marketplace/. /var/www/glpi/marketplace/
sudo chown -R root:root /var/www/glpi
sudo chown -R www-data:www-data /var/www/glpi/marketplace

Étape 4. Mettez à jour la base, quittez la maintenance et verrouillez de nouveau la configuration :

cd /var/www/glpi
sudo -u www-data php bin/console db:update
sudo -u www-data php bin/console glpi:maintenance:disable
sudo chown -R root:www-data /etc/glpi

Étape 5. Supprimez install/install.php, vérifiez le fonctionnement, puis supprimez /var/www/glpi-ancien.

Les changements de version majeure (10 vers 11, puis 11 vers 12) suivent le même principe, mais lisez d'abord les notes de version : les extensions doivent être compatibles avec la nouvelle version.

17. En cas de problème

Symptôme Cause probable Solution
Page blanche ou erreur 500 Erreur PHP Lisez /var/log/glpi/php-errors.log et /var/log/apache2/glpi-error.log
Erreur 404 sur toutes les pages sauf l'accueil Module rewrite absent ou mauvais DocumentRoot sudo a2enmod rewrite, vérifiez que la racine est bien /var/www/glpi/public
Le code PHP s'affiche ou se télécharge PHP-FPM non relié à Apache sudo a2enconf php8.4-fpm, vérifiez le chemin du socket dans le SetHandler
« Le dossier de configuration n'est pas accessible en écriture » à l'installation Droits sur /etc/glpi sudo chown -R www-data /etc/glpi le temps de l'installation
Avertissement sur les fuseaux horaires Tables de fuseaux non chargées ou droit manquant Refaites le chargement de l'étape 4 et le GRANT SELECT sur mysql.time_zone_name
Les notifications ne partent pas Actions automatiques non exécutées Vérifiez /etc/cron.d/glpi et le mode CLI des actions
L'agent ne remonte rien Inventaire désactivé, URL ou certificat refusé Activez l'inventaire, vérifiez l'URL, lancez l'agent à la main avec glpi-agent --debug

18. Liste de contrôle

Point Fait ?
Debian à jour, mises à jour de sécurité automatiques activées ☐
Compte MariaDB dédié, avec droits limités à la base glpi ☐
Configuration, données et journaux hors du dossier web ☐
Code de l'application non modifiable par www-data ☐
DocumentRoot sur /var/www/glpi/public ☐
install/install.php supprimé ☐
Mot de passe du compte glpi changé, comptes tech, normal et post-only désactivés ☐
Comptes administrateurs nominatifs, avec double authentification ☐
Actions automatiques en mode CLI par cron ☐
HTTPS actif, session.cookie_secure activé, URL de l'application à jour ☐
Sauvegarde de la base, de /var/lib/glpi et de /etc/glpi (avec glpicrypt.key) testée ☐
Abonnement aux annonces de sécurité de GLPI pour appliquer les mises à jour rapidement ☐

À lire aussi