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
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-server2 - Configuration de la base de données
mysql_secure_installation
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
mysql -uroot -pmysqlCREATE 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;3 - Préparation des fichiers GLPI
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.phpLe 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
define('GLPI_CONFIG_DIR', '/etc/glpi/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
require_once GLPI_CONFIG_DIR . '/local_define.php';
}Puis déplacer les dossiers vers leurs nouveaux emplacements :
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.phpAprès déclaration de GLPI_CONFIG_DIR, créer local_define.php dans /etc/glpi.
Contenu à coller dans /etc/glpi/local_define.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');4 - Permissions fichiers et dossiers
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 {} \;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 :
vim /etc/apache2/sites-available/glpi.confContenu à coller dans /etc/apache2/sites-available/glpi.conf :
# 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 80Activer la configuration Apache et les modules :
a2dissite 000-default.conf
a2enmod rewrite
a2ensite glpi.conf
systemctl restart apache2
vim /etc/php/8.1/apache2/php.iniParamètres recommandés dans php.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/ParisRemplacer date.timezone par votre fuseau horaire.
PHP 8.1 - Recommandations GLPI
GLPI 11+ requiert PHP 8.1 minimum. Vérifier la version :
php -vExtensions PHP critiques :
php -m | grep -E "(mysql|curl|gd|ldap|intl|zip|bz2|soap)"Sécurité post-installation
1 - Supprimer le fichier d’installation
rm /var/www/html/glpi/install/install.php⚠️ 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/glpipost-only/postonlytech/tech
3 - Désactiver administrateur par défaut
# Via MariaDB (conseil alternative)
mysql -u root -p glpi
UPDATE glpi_users SET is_active = 0 WHERE name = 'glpi';
EXIT;4 - Configuration HTTPS (TLS/SSL)
# 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.comAjouter au VirtualHost :
<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>5 - Permissions sécurisées
# 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)"É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 2 - Acceptation de la licence

Etape 3 - Installation ou mise à jour

Étape 4 - Vérification des prérequis

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

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

Étape 7 - Initialisation des tables GLPI

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

Étape 9 - Fin de l’installation

Étape 10 - Dashboard après connexion

Vérification d’installation
# 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