# Chapitre 6 - Maintenance et dépannage

Mises à jour, supervision, diagnostic et fiche mémo.

# Mise à jour de GLPI

Au 27 juillet 2026, la version stable courante est GLPI 11.0.8. Les versions récentes ont inclus plusieurs corrections de sécurité : les mises à jour ne doivent pas être considérées comme purement esthétiques.

## 12.1 Avant la mise à jour

1. lire les notes de version ;
2. vérifier la compatibilité des plugins ;
3. réaliser une sauvegarde complète ;
4. tester la restauration si la mise à jour est importante ;
5. contrôler le schéma ;
6. activer la maintenance.

```bash
cd /var/www/glpi
sudo -u www-data php bin/console db:check_schema_integrity
sudo -u www-data php bin/console glpi:maintenance:enable
```

## 12.2 Télécharger la nouvelle version

```bash
cd /tmp
NEW_GLPI_VERSION="VERSION_CIBLE"
wget "https://github.com/glpi-project/glpi/releases/download/${NEW_GLPI_VERSION}/glpi-${NEW_GLPI_VERSION}.tgz"
tar -xzf "glpi-${NEW_GLPI_VERSION}.tgz"
```

Remplacer `VERSION_CIBLE` par la version réellement publiée. Ne jamais deviner un numéro de version : le vérifier sur le site officiel.

## 12.3 Remplacer le code

La documentation officielle déconseille de copier la nouvelle version par-dessus l’ancienne.

Conserver `downstream.php`, puis permuter les dossiers :

```bash
sudo cp \
  /var/www/glpi/inc/downstream.php \
  /tmp/downstream.php

sudo mv /var/www/glpi \
  "/var/www/glpi-old-$(date +%F_%H-%M-%S)"

sudo mv /tmp/glpi /var/www/glpi

sudo install \
  -o root -g root -m 0644 \
  /tmp/downstream.php \
  /var/www/glpi/inc/downstream.php

sudo chown -R root:root /var/www/glpi
sudo find /var/www/glpi -type d -exec chmod 0755 {} \;
sudo find /var/www/glpi -type f -exec chmod 0644 {} \;
```

Les données, la configuration et la Marketplace sont conservées dans `/var/lib/glpi` et `/etc/glpi`.

## 12.4 Migrer la base

```bash
cd /var/www/glpi
sudo -u www-data php bin/console glpi:system:check_requirements
sudo -u www-data php bin/console db:update
```

Pour une mise à jour majeure, vérifier les plugins puis reprendre leur exécution :

```bash
sudo -u www-data php bin/console plugin:resume_execution
```

Terminer :

```bash
sudo -u www-data php bin/console db:check_schema_integrity
sudo -u www-data php bin/console glpi:maintenance:disable
sudo apache2ctl configtest
sudo systemctl reload apache2
```

## 12.5 Contrôles après mise à jour

- connexion administrateur ;
- création d’un ticket ;
- envoi d’une notification ;
- exécution de cron ;
- collecte d’un courriel ;
- connexion LDAP ;
- remontée d’un agent ;
- consultation d’un document ;
- fonctionnement de chaque plugin ;
- absence d’erreur dans les journaux.

Conserver temporairement l’ancien répertoire source et la sauvegarde jusqu’à validation. Le retour arrière nécessite généralement de restaurer **ensemble** l’ancien code, la base et les fichiers correspondant à la même sauvegarde.

---

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Supervision et entretien

## Contrôle des services

```bash
systemctl status apache2 mariadb cron --no-pager
```

## Contrôle HTTP

```bash
curl -I http://127.0.0.1
curl -I https://glpi.dreamsaphir.fr
```

## Espace disque

```bash
df -h
sudo du -sh \
  /var/lib/glpi/files \
  /var/lib/glpi/marketplace \
  /var/log/glpi \
  /var/lib/mysql
```

## Base de données

```bash
sudo mariadb -e \
  "SELECT table_schema AS base_name,
          ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS taille_Mo
   FROM information_schema.tables
   WHERE table_schema='glpi'
   GROUP BY table_schema;"
```

## Vérification GLPI

```bash
cd /var/www/glpi
sudo -u www-data php bin/console glpi:system:check_requirements
sudo -u www-data php bin/console db:check_schema_integrity
```

## Journaux

```bash
sudo tail -n 100 /var/log/apache2/glpi-error.log
sudo tail -n 100 /var/log/glpi/php-errors.log
sudo journalctl -u apache2 -n 100 --no-pager
sudo journalctl -u mariadb -n 100 --no-pager
```

## Fréquence d’entretien conseillée

| Fréquence | Opérations |
|---|---|
| Quotidienne | Vérifier les sauvegardes et les erreurs critiques |
| Hebdomadaire | Vérifier cron, collecteurs, file de notifications et espace disque |
| Mensuelle | Vérifier les mises à jour GLPI, plugins, Debian et certificats |
| Trimestrielle | Tester une restauration et revoir les comptes privilégiés |
| Annuelle | Revoir l’architecture, les SLA, les règles, la conservation et les droits |

---

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Dépannage du serveur Web et de la base

## 14.1 Page blanche ou erreur 500

```bash
sudo apache2ctl configtest
sudo tail -n 100 /var/log/apache2/glpi-error.log
sudo tail -n 100 /var/log/glpi/php-errors.log
php -v
php -m | sort
```

Puis :

```bash
cd /var/www/glpi
sudo -u www-data php bin/console glpi:system:check_requirements
```

---

## 14.2 Erreur de permissions

```bash
sudo chown -R www-data:www-data \
  /etc/glpi \
  /var/lib/glpi \
  /var/log/glpi

sudo find /etc/glpi /var/lib/glpi /var/log/glpi \
  -type d -exec chmod 0750 {} \;

sudo find /etc/glpi /var/lib/glpi /var/log/glpi \
  -type f -exec chmod 0640 {} \;
```

Ne pas appliquer `chmod -R 777`.

---

## 14.3 Connexion à la base impossible

```bash
systemctl status mariadb --no-pager
mariadb -u glpi -p glpi
sudo ss -lntp | grep 3306
```

Contrôler le fichier :

```text
/etc/glpi/config_db.php
```

---

## 14.4 Mauvaise racine Web

Le VirtualHost doit contenir :

```apache
DocumentRoot /var/www/glpi/public
```

et non :

```apache
DocumentRoot /var/www/glpi
```

---

## 14.5 L’URL renvoie la page Apache par défaut

```bash
sudo a2dissite 000-default.conf
sudo a2ensite glpi.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
apache2ctl -S
```

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Dépannage de cron, SMTP et de l’inventaire

## 14.6 Les actions automatiques ne se lancent pas

```bash
systemctl status cron --no-pager
sudo -u www-data php /var/www/glpi/front/cron.php
sudo journalctl -u cron -n 100 --no-pager
```

Vérifier également que les actions sont en mode **CLI** dans GLPI.

---

## 14.7 Les courriels ne partent pas

Vérifier :

- l’activation des notifications ;
- le serveur et le port SMTP ;
- STARTTLS ou TLS ;
- l’authentification ;
- l’action automatique `queuednotification` ;
- la file d’attente ;
- les règles du pare-feu ;
- l’heure du serveur.

```bash
openssl s_client -starttls smtp -connect smtp.example.fr:587
```

---

## 14.8 Les dates ou fuseaux horaires sont incorrects

```bash
timedatectl
php -i | grep date.timezone
sudo mariadb mysql -e \
  "SELECT Name FROM time_zone_name WHERE Name='Europe/Paris';"
```

---

## 14.9 L’inventaire arrive mais le poste n’apparaît pas

Contrôler :

- les éléments ignorés ou refusés ;
- les règles d’import et de liaison ;
- le tag ;
- l’entité ;
- les doublons de numéro de série ou UUID ;
- le journal GLPI Agent ;
- l’URL d’inventaire.

---

## 14.10 Diagnostic complet à fournir

En cas de demande d’assistance, collecter :

```bash
cat /etc/os-release
php -v
mariadb --version
apache2 -v
apache2ctl -S
systemctl status apache2 mariadb cron --no-pager
cd /var/www/glpi
sudo -u www-data php bin/console glpi:system:check_requirements
sudo tail -n 100 /var/log/apache2/glpi-error.log
sudo tail -n 100 /var/log/glpi/php-errors.log
```

Supprimer les mots de passe, secrets OAuth, cookies, jetons API et données personnelles avant de partager les résultats.

---

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Checklist de mise en production

## Installation

- [ ] Debian et les paquets sont à jour.
- [ ] Le serveur utilise une adresse IP stable.
- [ ] Le DNS résout correctement le nom GLPI.
- [ ] Apache pointe vers `/var/www/glpi/public`.
- [ ] PHP respecte les prérequis GLPI 11.
- [ ] MariaDB est sécurisé.
- [ ] Le compte MariaDB GLPI est limité à la base `glpi`.
- [ ] Les fuseaux horaires MariaDB sont chargés.
- [ ] La commande de vérification GLPI ne signale aucune erreur obligatoire.

## Sécurité

- [ ] HTTPS est obligatoire.
- [ ] Les comptes par défaut ont été changés ou désactivés.
- [ ] Un administrateur nominatif a été créé.
- [ ] Un compte local de secours est protégé dans un coffre-fort.
- [ ] La MFA est activée pour les comptes privilégiés.
- [ ] Les clés GLPI sont incluses dans les sauvegardes.
- [ ] MariaDB n’est pas exposé à Internet.
- [ ] Le serveur est filtré par pare-feu.
- [ ] Les plugins proviennent de sources fiables.

## Exploitation

- [ ] Cron fonctionne en mode CLI.
- [ ] L’envoi d’un courriel de test fonctionne.
- [ ] Le collecteur crée correctement un ticket.
- [ ] LDAP ou LDAPS a été testé avec un utilisateur standard.
- [ ] Les profils et entités ont été contrôlés.
- [ ] Un inventaire GLPI Agent a été reçu.
- [ ] Les règles d’import ont été testées.
- [ ] Les journaux sont surveillés.

## Sauvegardes

- [ ] La base est sauvegardée.
- [ ] `/etc/glpi` est sauvegardé.
- [ ] `/var/lib/glpi/files` est sauvegardé.
- [ ] La Marketplace et les plugins sont sauvegardés.
- [ ] Une copie existe hors du serveur GLPI.
- [ ] Une restauration a réellement été testée.

---

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Fiche mémo des principales commandes GLPI

## Vérification générale

```bash
systemctl status apache2 mariadb cron --no-pager
cd /var/www/glpi
sudo -u www-data php bin/console glpi:system:check_requirements
sudo -u www-data php bin/console db:check_schema_integrity
```

Ces commandes contrôlent les services, les prérequis GLPI et l’intégrité du schéma de base de données.

## Apache

```bash
sudo apache2ctl configtest
apache2ctl -S
sudo systemctl reload apache2
sudo tail -n 100 /var/log/apache2/glpi-error.log
```

Elles vérifient la configuration du VirtualHost, affichent les sites actifs et consultent les dernières erreurs.

## MariaDB

```bash
systemctl status mariadb --no-pager
mariadb -u glpi -p glpi
sudo mariadb-dump --single-transaction --quick glpi > glpi.sql
```

Ces commandes testent la base et produisent une sauvegarde SQL simple.

## Actions automatiques

```bash
sudo -u www-data php /var/www/glpi/front/cron.php
sudo journalctl -u cron -n 100 --no-pager
```

Elles forcent les actions automatiques puis affichent les journaux cron.

## Maintenance

```bash
cd /var/www/glpi
sudo -u www-data php bin/console glpi:maintenance:enable
sudo -u www-data php bin/console db:update
sudo -u www-data php bin/console glpi:maintenance:disable
```

À utiliser lors d’une mise à jour, uniquement après une sauvegarde complète.

## LDAP et LDAPS

```bash
getent hosts dc1.snts.local
nc -vz dc1.snts.local 636
openssl s_client -connect dc1.snts.local:636 -showcerts
```

Ces commandes vérifient le DNS, le port LDAPS et le certificat du contrôleur de domaine.

## GLPI Agent

```bat
"C:\Program Files\GLPI-Agent\glpi-agent.bat" --force
```

```bash
sudo glpi-agent --force
sudo journalctl -u glpi-agent -n 100 --no-pager
```

Ces commandes forcent un inventaire sous Windows ou Linux.

## Journaux principaux

```text
/var/log/apache2/glpi-error.log
/var/log/apache2/glpi-access.log
/var/log/glpi/php-errors.log
C:\Program Files\GLPI-Agent\logs\glpi-agent.log
```

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Sources officielles

- [Téléchargement de la dernière version de GLPI](https://www.glpi-project.org/en/downloads/)
- [Publications officielles GLPI sur GitHub](https://github.com/glpi-project/glpi/releases)
- [Prérequis GLPI](https://glpi-install.readthedocs.io/en/latest/prerequisites.html)
- [Installation GLPI](https://glpi-install.readthedocs.io/en/latest/install/)
- [Assistant d’installation et comptes par défaut](https://glpi-install.readthedocs.io/en/latest/install/wizard.html)
- [Commandes de la console GLPI](https://glpi-install.readthedocs.io/en/latest/command-line.html)
- [Procédure officielle de mise à jour](https://glpi-install.readthedocs.io/en/latest/update.html)
- [Configuration des fuseaux horaires](https://glpi-install.readthedocs.io/en/latest/timezones.html)
- [Documentation générale GLPI](https://help.glpi-project.org/documentation)
- [Configuration LDAP](https://help.glpi-project.org/documentation/fr/modules/configuration/authentication/ldap)
- [Actions automatiques](https://help.glpi-project.org/documentation/modules/configuration/crontasks)
- [Documentation GLPI Agent](https://glpi-agent.readthedocs.io/)
- [Publications officielles GLPI Agent](https://github.com/glpi-project/glpi-agent/releases)
- [Paramètres de l’installateur Windows GLPI Agent](https://glpi-agent.readthedocs.io/en/version-1.17/installation/windows-command-line.html)

---

> **Rappel important :** avant toute modification importante, mise à jour ou ajout de plugin, sauvegarder la base, les documents, la configuration et les clés de chiffrement. Une sauvegarde non restaurée au moins une fois reste une sauvegarde non vérifiée.

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.