Installation de GLPI sur Ubuntu 25.04

Installation de GLPI sur Ubuntu 25.04

Installation pas à pas de GLPI sur Ubuntu 25.04: prérequis, base de données, configuration Apache/PHP-FPM et configuration grâce à l'assistant d'installation GLPI
Publié le
Statut
Terminé

Présentation du projet

Ce projet documente l’installation de GLPI sur Ubuntu 25.04 avec une stack LAMP moderne: Apache2, MariaDB et PHP-FPM.

L’objectif est d’obtenir une instance GLPI stable, securisée et exploitable pour la gestion de parc et le ticketing.

Objectifs

  • Installer les prérequis GLPI sur Ubuntu 25.04
  • Préparer une base MariaDB dédiée
  • Déployer la dernière version stable de GLPI
  • Configurer Apache2 avec PHP 8.1+
  • Finaliser l’installation via l’assistant web
  • Appliquer les actions de sécurité post-installation

Prérequis

  • Une machine Ubuntu 25.04 avec accès sudo
  • Une IP fixe ou un nom DNS pour le serveur
  • Accès Internet pour installer les paquets
  • PHP 8.1+ (requis par GLPI 10+)

Commandes d’installation sur Ubuntu

1 - Installation des composants

BASH
apt update && apt upgrade
apt install -y apache2 php php-{apcu,cli,common,curl,gd,imap,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,redis,bz2} libapache2-mod-php php-soap php-cas
apt install -y mariadb-server
Cliquez pour développer et voir plus

2 - Configuration de la base de données

BASH
mysql_secure_installation
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
mysql -uroot -pmysql
Cliquez pour développer et voir plus
SQL
CREATE DATABASE glpi;
CREATE USER 'glpi'@'localhost' IDENTIFIED BY 'yourstrongpassword';
GRANT ALL PRIVILEGES ON glpi.* TO 'glpi'@'localhost';
GRANT SELECT ON `mysql`.`time_zone_name` TO 'glpi'@'localhost';
FLUSH PRIVILEGES;
Cliquez pour développer et voir plus

3 - Préparation des fichiers GLPI

BASH
cd /var/www/html
wget https://github.com/glpi-project/glpi/releases/download/11.0.6/glpi-11.0.6.tgz
tar -xvzf glpi-11.0.6.tgz
vim /var/www/html/glpi/inc/downstream.php
Cliquez pour développer et voir plus

Le fichier downstream.php indique à GLPI où se trouve le dossier de configuration GLPI_CONFIG_DIR.

Contenu à coller dans /var/www/html/glpi/inc/downstream.php :

PHP
<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
require_once GLPI_CONFIG_DIR . '/local_define.php';
}
Cliquez pour développer et voir plus

Puis déplacer les dossiers vers leurs nouveaux emplacements :

BASH
mv /var/www/html/glpi/config /etc/glpi
mv /var/www/html/glpi/files /var/lib/glpi
mv /var/lib/glpi/_log /var/log/glpi
vim /etc/glpi/local_define.php
Cliquez pour développer et voir plus

Après déclaration de GLPI_CONFIG_DIR, créer local_define.php dans /etc/glpi.

Contenu à coller dans /etc/glpi/local_define.php :

PHP
<?php
define('GLPI_VAR_DIR', '/var/lib/glpi');
define('GLPI_DOC_DIR', GLPI_VAR_DIR);
define('GLPI_CACHE_DIR', GLPI_VAR_DIR . '/_cache');
define('GLPI_CRON_DIR', GLPI_VAR_DIR . '/_cron');
define('GLPI_GRAPH_DIR', GLPI_VAR_DIR . '/_graphs');
define('GLPI_LOCAL_I18N_DIR', GLPI_VAR_DIR . '/_locales');
define('GLPI_LOCK_DIR', GLPI_VAR_DIR . '/_lock');
define('GLPI_PICTURE_DIR', GLPI_VAR_DIR . '/_pictures');
define('GLPI_PLUGIN_DOC_DIR', GLPI_VAR_DIR . '/_plugins');
define('GLPI_RSS_DIR', GLPI_VAR_DIR . '/_rss');
define('GLPI_SESSION_DIR', GLPI_VAR_DIR . '/_sessions');
define('GLPI_TMP_DIR', GLPI_VAR_DIR . '/_tmp');
define('GLPI_UPLOAD_DIR', GLPI_VAR_DIR . '/_uploads');
define('GLPI_INVENTORY_DIR', GLPI_VAR_DIR . '/_inventories');
define('GLPI_THEMES_DIR', GLPI_VAR_DIR . '/_themes');
define('GLPI_LOG_DIR', '/var/log/glpi');
Cliquez pour développer et voir plus

4 - Permissions fichiers et dossiers

BASH
chown root:root /var/www/html/glpi/ -R
chown www-data:www-data /etc/glpi -R
chown www-data:www-data /var/lib/glpi -R
chown www-data:www-data /var/log/glpi -R
chown www-data:www-data /var/www/html/glpi/marketplace -Rf
find /var/www/html/glpi/ -type f -exec chmod 0644 {} \;
find /var/www/html/glpi/ -type d -exec chmod 0755 {} \;
find /etc/glpi -type f -exec chmod 0644 {} \;
find /etc/glpi -type d -exec chmod 0755 {} \;
find /var/lib/glpi -type f -exec chmod 0644 {} \;
find /var/lib/glpi -type d -exec chmod 0755 {} \;
find /var/log/glpi -type f -exec chmod 0644 {} \;
find /var/log/glpi -type d -exec chmod 0755 {} \;
Cliquez pour développer et voir plus

5 - Configuration Apache et PHP

Pour éviter les URLs complexes, il est recommandé d’utiliser un nom DNS et un VirtualHost dédié.

Créer le fichier de VirtualHost :

BASH
vim /etc/apache2/sites-available/glpi.conf
Cliquez pour développer et voir plus

Contenu à coller dans /etc/apache2/sites-available/glpi.conf :

APACHE
# Start of the VirtualHost configuration for port 80

<VirtualHost *:80>
  ServerName yourglpi.yourdomain.com
  # Specify the server's hostname
  DocumentRoot /var/www/html/glpi/public
  # The directory where the website's files are located
  # Start of a Directory directive for the website's directory
  <Directory /var/www/html/glpi/public>
    Require all granted
    # Allow all access to this directory
    RewriteEngine On
    # Enable the Apache rewrite engine
    # Ensure authorization headers are passed to PHP.
    # Some Apache configurations may filter them and break usage of API, CalDAV, ...
    RewriteCond %{HTTP:Authorization} ^(.+)$
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    # Redirect all requests to GLPI router, unless the file exists.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
  </Directory>
  # End of the Directory directive for /var/www/glpi/public
</VirtualHost>

# End of the VirtualHost configuration for port 80
Cliquez pour développer et voir plus

Activer la configuration Apache et les modules :

BASH
a2dissite 000-default.conf
a2enmod rewrite
a2ensite glpi.conf
systemctl restart apache2
vim /etc/php/8.1/apache2/php.ini
Cliquez pour développer et voir plus

Paramètres recommandés dans php.ini :

INI
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 60
max_input_vars = 5000
memory_limit = 256M
session.cookie_httponly = On
date.timezone = Europe/Paris
Cliquez pour développer et voir plus

Remplacer date.timezone par votre fuseau horaire.

PHP 8.1 - Recommandations GLPI

GLPI 11+ requiert PHP 8.1 minimum. Vérifier la version :

BASH
php -v
Cliquez pour développer et voir plus

Extensions PHP critiques :

BASH
php -m | grep -E "(mysql|curl|gd|ldap|intl|zip|bz2|soap)"
Cliquez pour développer et voir plus

Sécurité post-installation

1 - Supprimer le fichier d’installation

BASH
rm /var/www/html/glpi/install/install.php
Cliquez pour développer et voir plus

⚠️ CRITIQUE : Le laisser expose l’application aux attaques!

2 - Changer mot de passe par défaut

Via l’interface web : Admin > Profils > glpi / post-only > Mot de passe

Mots de passe par défaut (à changer immédiatement) :

  • glpi / glpi
  • post-only / postonly
  • tech / tech

3 - Désactiver administrateur par défaut

BASH
# Via MariaDB (conseil alternative)
mysql -u root -p glpi
UPDATE glpi_users SET is_active = 0 WHERE name = 'glpi';
EXIT;
Cliquez pour développer et voir plus

4 - Configuration HTTPS (TLS/SSL)

BASH
# Générer certificat auto-signé (test)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/private/glpi-key.pem \
  -out /etc/ssl/certs/glpi-cert.pem

# Ou utiliser Let's Encrypt
certbot certonly --standalone -d yourglpi.yourdomain.com
Cliquez pour développer et voir plus

Ajouter au VirtualHost :

APACHE
<VirtualHost *:443>
  ServerName yourglpi.yourdomain.com
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/glpi-cert.pem
  SSLCertificateKeyFile /etc/ssl/private/glpi-key.pem
  # ... reste de config
</VirtualHost>
Cliquez pour développer et voir plus

5 - Permissions sécurisées

BASH
# Interdire accès direct aux répertoires sensibles
chmod 700 /etc/glpi
chmod 700 /var/lib/glpi
chmod 700 /var/log/glpi

# Vérifier ownership
ls -la /var/www/html/glpi/ | grep -E "(^d|www-data)"
Cliquez pour développer et voir plus

Étapes de l’installation

Ajoute tes captures d’écran dans le même dossier que ce fichier index.md, puis garde les noms ci-dessous (ou adapte les noms directement dans les liens d’images).

Étape 1 - Choix de la langue

Etape 1 - Choix de la langue

Etape 2 - Acceptation de la licence

Etape 2 - Licence

Etape 3 - Installation ou mise à jour

Étape 3 - Installation ou mise à jour

Étape 4 - Vérification des prérequis

Étape 4 - Prérequis

Étape 5 - Configuration de la connexion base de données

Étape 5 - Connexion base de données

Étape 6 - Sélection de la base de données

Étape 6 - Sélection base

Étape 7 - Initialisation des tables GLPI

Étape 7 - Initialisation

Étape 8 - Envoyer des données à l’éditeur

Étape 8 - Envoi éditeur

Étape 9 - Fin de l’installation

Étape 9 - Fin de l’installation

Étape 10 - Dashboard après connexion

Étape 10 - Dashboard

Vérification d’installation

BASH
# Statut Apache
systemctl status apache2

# Logs GLPI
tail -50 /var/log/glpi/php-errors.log
tail -50 /var/log/apache2/error.log

# Vérifier permissions
ls -lR /var/www/html/glpi/public | head -20
Cliquez pour développer et voir plus

Recources et documentation

Commencer la recherche

Saisissez des mots-clés pour rechercher des articles

↑↓
ESC
⌘K Raccourci