Contexte : gestion de parc et centre d'assistance (tickets) avec inventaire automatique · Testé sur : Debian / Ubuntu, GLPI 9.5.5 et 9.5.9, PHP 7.3/7.4, Nginx ou Apache · Dernière vérification : contenu de 2023 non revérifié
Cette procédure concerne la branche GLPI 9.5, aujourd'hui en fin de vie. Le plugin FusionInventory n'est pas compatible avec GLPI 10 et suivants, qui intègrent l'inventaire en natif avec GLPI Agent. Pour une nouvelle installation, partez de la dernière version de GLPI et de sa documentation officielle.
Installer un serveur GLPI (gestion de parc informatique et helpdesk), puis ajouter le plugin FusionInventory pour remonter automatiquement l'inventaire des postes. La fin de la page montre les usages de base : utilisateurs de l'annuaire, création de tickets, inventaire du matériel réseau, attribution automatique des tickets et notifications par e-mail.
root ou sudo (et OpenSSH pour l'administration à distance).sudo apt update
sudo apt upgrade -y
Variante A — Nginx + PHP-FPM
sudo apt install -y nginx mariadb-server php-fpm php-mysql php-gd php-ldap php-curl php-xmlrpc php-imap php-mbstring php-xml php-intl php-apcu php-cli php-zip php-bz2 php-pear
Installez bien
php-fpmet non le méta-paquetphpseul : ce dernier tire le module PHP d'Apache et installe Apache à côté de Nginx.
Variante B — Apache + PHP-FPM (exemple avec PHP 7.4, Ubuntu 20.04 / Debian 11)
sudo apt install -y mariadb-server apache2 libapache2-mod-fcgid php7.4-fpm
sudo apt install -y php7.4-mysql php7.4-mbstring php7.4-gd php7.4-xml php7.4-intl php7.4-ldap php-apcu php7.4-xmlrpc php7.4-zip php7.4-bz2 php7.4-imap php-cas
La version d'origine de cette page ajoutait les dépôts d'Ubuntu 20.10 « groovy » dans
/etc/apt/sources.listpour obtenir PHP 7.4. Cette version d'Ubuntu est en fin de vie : utilisez uniquement les dépôts de votre distribution.
sudo mysql_secure_installation
sudo mysql -u root -p
CREATE DATABASE glpidb;
CREATE USER 'glpiuser'@'localhost' IDENTIFIED BY '<MOT_DE_PASSE_DB>';
GRANT ALL PRIVILEGES ON glpidb.* TO 'glpiuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/9.5.9/glpi-9.5.9.tgz
tar -zxvf glpi-9.5.9.tgz
sudo mv glpi /var/www/html/glpi
sudo chown -R www-data:www-data /var/www/html/glpi
sudo chmod -R 775 /var/www/html/glpi
Adaptez le numéro de version si vous installez une autre version de la branche 9.5.
Variante A — Nginx
Repérez d'abord le socket PHP-FPM installé (par exemple php7.3-fpm.sock sous Debian 10, php7.4-fpm.sock sous Debian 11 / Ubuntu 20.04) :
ls /run/php/
Créez le fichier /etc/nginx/sites-available/glpi :
server {
listen 80;
server_name <IP_OU_NOM_DU_SERVEUR>;
root /var/www/html/glpi;
index index.php;
location / {
try_files $uri $uri/ =404;
}
# Nginx ignore les fichiers .htaccess de GLPI : on bloque explicitement
# les dossiers sensibles (équivalent des règles Apache de la variante B)
location ~ ^/(config|files|locales|scripts|install/mysql)/ {
deny all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Activez le site, testez la configuration puis redémarrez Nginx :
sudo ln -s /etc/nginx/sites-available/glpi /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Variante B — Apache
Créez le fichier /etc/apache2/conf-available/glpi.conf :
Alias /glpi /var/www/html/glpi
<Directory /var/www/html/glpi>
Options None
AllowOverride Limit Options FileInfo
Require all granted
</Directory>
<Directory /var/www/html/glpi/install>
Require all granted
<IfModule mod_php7.c>
php_value max_execution_time 0
php_value memory_limit -1
</IfModule>
</Directory>
<Directory /var/www/html/glpi/config>
Require all denied
</Directory>
<Directory /var/www/html/glpi/locales>
Require all denied
</Directory>
<Directory /var/www/html/glpi/install/mysql>
Require all denied
</Directory>
<Directory /var/www/html/glpi/scripts>
Require all denied
</Directory>
Activez les modules et la configuration, puis redémarrez les services :
sudo a2enmod proxy_fcgi fcgid alias
sudo a2enconf php7.4-fpm glpi
sudo apache2ctl configtest
sudo systemctl restart php7.4-fpm apache2
Ouvrez http://<IP_SERVEUR>/ (variante Nginx) ou http://<IP_SERVEUR>/glpi (variante Apache) et suivez l'assistant : langue, licence, vérification des prérequis, puis connexion à la base (localhost, glpiuser, <MOT_DE_PASSE_DB>, base glpidb).

À faire immédiatement après l'installation :
- les comptes par défaut documentés publiquement (
glpi/glpi,tech/tech,normal/normal,post-only/postonly) sont à changer immédiatement, ou à désactiver — le compte super-administrateurglpien priorité ;- supprimer le fichier d'installation :
sudo rm /var/www/html/glpi/install/install.php.
sudo tar -xf fusioninventory-<VERSION>.tar.bz2 -C /var/www/html/glpi/plugins/
sudo chown -R www-data:www-data /var/www/html/glpi/plugins/fusioninventory
sudo apt install fusioninventory-agent
sudo nano /etc/fusioninventory/agent.cfg
Décommentez et renseignez la ligne server avec l'adresse de votre serveur GLPI :
# Variante Apache (alias /glpi)
server = http://<IP_SERVEUR_GLPI>/glpi/plugins/fusioninventory/
# Variante Nginx (GLPI à la racine du site)
# server = http://<IP_SERVEUR_GLPI>/plugins/fusioninventory/
Lancez ensuite un premier inventaire à la main :
sudo fusioninventory-agent
Une fois l'annuaire LDAP déclaré (Configuration > Authentification > Annuaires LDAP), les utilisateurs de l'Active Directory peuvent se connecter à GLPI et apparaissent dans la liste des utilisateurs.


Exemple avec l'utilisateur « Paul » :
Paul se connecte à GLPI.

Il crée un ticket pour signaler son problème.

Il décrit le problème et choisit la catégorie adaptée (par exemple « Réseau » ou « Programmation »).

Le ticket est alors enregistré :

Les équipements qui ne portent pas d'agent (point d'accès Wi-Fi, switch, téléphone, clé USB…) s'ajoutent à la main depuis Parc > Périphériques et Parc > Matériel réseau.

Exemple : ajout d'un point d'accès Wi-Fi…

… puis d'un switch HP ProCurve, d'un iPhone 13 et d'une clé USB :

Créez les catégories de tickets : Configuration > Intitulés > Catégories ITIL, puis ajoutez par exemple « Réseau » et « Développement ».
Ouvrez les Règles métier pour les tickets (Administration > Règles) et créez une règle par catégorie : une pour le réseau, une pour le développement.
Exemple pour le réseau — critères : la catégorie du ticket est « Réseau » :

Actions : attribuer le ticket au groupe « Réseau » :

Testez avec un nouveau ticket : celui de Paul est bien attribué au groupe Réseau.

Dans Configuration > Notifications, activez le suivi et le suivi par courriel, puis ouvrez Configuration des suivis par courriels :
| Paramètre | Valeur |
|---|---|
| Courriel de l'administrateur | <ADRESSE_ADMIN> |
| Mode d'envoi des courriels | SMTP+SSL (ou SMTP+TLS selon le serveur) |
| Hôte et port SMTP | <SERVEUR_SMTP> / 465 en SSL (587 en TLS) |
| Identifiant SMTP | <IDENTIFIANT_SMTP> |
| Mot de passe SMTP | <MOT_DE_PASSE_SMTP> |
| Expéditeur du message | <ADRESSE_EXPEDITEUR> |
Utilisez un compte d'envoi dédié. En mode SMTP, GLPI se connecte directement au serveur de messagerie : aucun paquet supplémentaire n'est nécessaire sur le serveur (la version d'origine installait un agent d'envoi local, utile seulement avec le mode d'envoi « PHP »).
install/install.php a disparu.http://<IP_SERVEUR>/config/ (variante Nginx) ou http://<IP_SERVEUR>/glpi/config/ (variante Apache) renvoie une erreur 403 (dossier protégé).fastcgi_pass ne correspond pas à la version de PHP installée (ls /run/php/), ou PHP-FPM est arrêté (systemctl status php7.4-fpm).php-<extension> correspondant puis redémarrez PHP-FPM.server (avec ou sans /glpi selon la variante), relancez l'agent en mode verbeux avec fusioninventory-agent --debug et contrôlez le pare-feu.Ce script enchaîne les étapes 1 à 5 de la variante Nginx sur un serveur neuf. Renseignez les trois variables du début avant de le lancer ; l'assistant web (étape 6) et le plugin (étapes 7 et 8) restent à faire ensuite.
#!/bin/bash
set -e
SERVER_NAME="<IP_OU_NOM_DU_SERVEUR>"
DB_PASS="<MOT_DE_PASSE_DB>"
GLPI_VERSION="9.5.9"
DB="glpidb"
DB_USER="glpiuser"
# Mettre à jour le système
sudo apt-get update
sudo apt-get upgrade -y
# Installer Nginx, MariaDB, PHP-FPM et les extensions nécessaires
sudo apt-get install -y nginx mariadb-server php-fpm php-mysql php-gd php-ldap php-curl php-xmlrpc php-imap php-mbstring php-xml php-intl php-apcu php-cli php-zip php-bz2 php-pear
# Télécharger, extraire et déployer GLPI
cd /tmp
wget "https://github.com/glpi-project/glpi/releases/download/${GLPI_VERSION}/glpi-${GLPI_VERSION}.tgz"
tar -zxvf "glpi-${GLPI_VERSION}.tgz"
sudo mv glpi /var/www/html/glpi
# Configurer les permissions
sudo chown -R www-data:www-data /var/www/html/glpi
sudo chmod -R 775 /var/www/html/glpi
# Créer la base de données et l'utilisateur
sudo mysql -e "CREATE DATABASE ${DB};"
sudo mysql -e "CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASS}';"
sudo mysql -e "GRANT ALL PRIVILEGES ON ${DB}.* TO '${DB_USER}'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
# Repérer le socket PHP-FPM installé
PHP_SOCK=$(ls /run/php/php*-fpm.sock | head -n 1)
# Configurer Nginx (les \$ protègent les variables propres à Nginx)
sudo tee /etc/nginx/sites-available/glpi > /dev/null <<EOF
server {
listen 80;
server_name ${SERVER_NAME};
root /var/www/html/glpi;
index index.php;
location / {
try_files \$uri \$uri/ =404;
}
location ~ ^/(config|files|locales|scripts|install/mysql)/ {
deny all;
}
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:${PHP_SOCK};
}
location ~ /\.ht {
deny all;
}
}
EOF
# Activer le site, tester la configuration et redémarrer Nginx
sudo ln -s /etc/nginx/sites-available/glpi /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Ne conservez pas le script avec le mot de passe renseigné : supprimez-le, ou remettez la valeur générique, une fois l'installation terminée.