
Dans ce tutoriel, je vais vous montrer comment déployer GLPI 11 grâce à une image Docker que j’ai créée moi-même.
Habituellement, je déploie GLPI directement sur un serveur Linux Ubuntu en utilisant Apache et PHP depuis les dépôts PPA d’Ondřej, pour bénéficier des versions les plus récentes. Toute l’installation et la configuration de GLPI se font alors à la main. Pour gagner du temps, j’avais commencé par créer un script d’automatisation que vous pouvez retrouver ici : https://git.rdr-it.com/root/scripts/-/tree/master/Linux/Logiciels/GLPI/Installation
Mais comme je dois souvent installer GLPI pour réaliser des tests, recréer une VM à chaque fois devenait fastidieux. J’ai donc décidé de conteneuriser cette installation et de vous partager le résultat pour un déploiement rapide et pratique.
Présentation du conteneur
Pour commencer, vous trouverez les sources du conteneur ici : https://git.rdr-it.com/dockerfile/glpi
Si besoin vous pouvez analyser pour vous même le fichier dockerfile.
La partie le plus important est le fichier docker-entrypoint.sh qui va permettre toutes l’automatisation du déploiement de GLPI et sa configuration lors du démarrage.
En fonction des variables d’environnements que vous allez configurer avec le fichier docker-compose.yml, GLPI 11 sera complément installé et configuré pour être prêt à l’emploi.
Le stack présent dans le fichier docker-compose.yml va déployer les services suivants :
- Base de données MariaDB
- Conteneur GLPI (serveur Web Apache avec PHP)
- Conteneur GLPI pour les tâches planifiées
- Conteneur Redis pour le cache
Déployer GLPI 11 avec l’image Docker
Vous trouverez l’image GLPI 11 ici : https://hub.docker.com/r/rdrit/glpi
Pour faciliter le déploiement de GLPI, j’ai préparé un dépôt avec le fichier docker-compose et un fichier de variable qui est documenté que vous trouvez là : https://git.rdr-it.com/root/docker-compose/-/tree/main/GLPI
Avant de commencer, je vous invite à le lire fichier README qui va vous guider la configuration des différentes variables.
Sur votre serveur hôte Docker, commencer par créer un dossier pour cloner le dossier dépôt :
mkdir -p /containers/glpi11Placer vous dans le dossier et cloner le dossier GLPI :
bash <(wget -qO- https://git.rdr-it.com/root/scripts/-/raw/master/Linux/rdr-it/get-docker-compse/get.sh) GLPICopier le sample.env en le nommant .env
cp sample.env .envEditer le fichier .env
nano .envLa configuration terminée, démarrer les conteneurs :
docker compose up -dVous pouvez suivre les actions effectuées en regardant les logs :
docker compose logs -fDepuis un navigateur, aller à l’URL configuré et connecter vous avec le compte glpi/glpi.
Publication derrière un reverse proxy
Il est possible de publier le conteneur GLPI derrière un reverse proxy :
Nginx :
# Specify the IP address of the Docker or GLPI 11 host server where it is installed, along with the port
upstream glpi11web{
server 172.0.0.1:80;
}
server{
listen 443 ssl;
http2 on;
server_name glpi.domain.tld;
access_log /var/log/nginx/glpidomaintld_access.log;
#more_clear_headers Server;
#more_clear_headers X-Powered-By;
client_max_body_size 0;
ssl_certificate /etc/nginx/ssl/glpidomaintld.cer;
ssl_certificate_key /etc/nginx/ssl/glpidomaintld.key
location /{
proxy_pass http://glpi11web;
proxy_ssl_verify off;
include proxy_params;
}
}
server{
listen 80;
server_name glpi.domain.tld;
return 301 https://$host$request_uri;
}Les labels pour Traefik :
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.glpi11.rule=Host(`glpi.domain.tld`)"
- "traefik.http.routers.glpi11.entrypoints=web"
- "traefik.http.services.glpi11.loadbalancer.server.port=80"
- "traefik.http.routers.glpi11.service=glpi11"
- "traefik.http.routers.glpi11.middlewares=glpi11-headers"
- "traefik.http.middlewares.glpi11-headers.headers.sslProxyHeaders.X-Forwarded-Proto=https"
- "traefik.http.middlewares.glpi11-headers.headers.sslProxyHeaders.X-Forwarded-For=true"
- "traefik.http.middlewares.glpi11-headers.headers.sslProxyHeaders.X-Real-Ip=true"
- "traefik.http.middlewares.glpi11-headers.headers.sslProxyHeaders.X-Forwarded-Port=443"
- "traefik.http.middlewares.glpi11-headers.headers.customRequestHeaders.X-Forwarded-Proto=https"
- "traefik.http.middlewares.glpi11-headers.headers.customRequestHeaders.X-Forwarded-Port=443"Vous disposez désormais de toutes les clés pour déployer GLPI 11 rapidement grâce au conteneur que j’ai conçu.
Si vous rencontrez des difficultés ou si vous avez des questions, n’hésitez pas à laisser un commentaire, je me ferai un plaisir d’y répondre.
Utilisez-vous déjà GLPI en conteneur ou sur une installation classique ?

Merci pour ton tuto ultra bien détaillé et clair avec toute les infos sur le git concernant les variables etc..
J’ai mis en prod GLPI sur une VM Almalinux et çà fonctionne nickel..
Par contre j’ai une migration a faire d’un autre GLPI 10.0.16 en direct sur une Debian classique, et il possible de copier les anciennes données et la base de donnée sur la version en docker ?
Il y a des variables a modifier dans le fichier .env si j’ai bien compris.
Merci d’avance.
Bonjour,
Merci pour ton retour, concernant la migration que tu souhaites faire, voici comment je procèderai :
– Monter de version 10.0.16 -> 11.x.y directement sur la version « Debian classique »
– Déploiement d’un conteneur à la même vers en GLPI 11.
– Sauvegarde la base de données SQL (classique)
– Restauration de la base de données sur le conteneur
– Copie des fichiers « classique » vers « conteneur »
Dans le fichier .env, pour faciliter la « reconfiguration » de GLPI remettre les informations pour le comptes MariaDB/MySQL
Romain
Bonsoir,
Merci pour les conseils, pas de soucis sur le principe, j’ai fait un backup des fichiers a restaurer dans le nouveau GLPI en docker dans le dossier /data/glpi.
J’ai fait une sauvegarde de la base de donnée avec mariadb-dump qui ma donné un fichier ******.sql que j’ai aussi déplacé sur le nouveau serveur, par contre je ne trouve pas comment faire une restore de la base sql dans le dossier /data/mariadb du conteneur.
J’ai bien compris que il n’y a pas de base sur le serveur en lui même, c’est inclus dans le dossier du conteneur.
Bonjour,
Le service de la base de données se trouve dans le fichier docker-compose.yml (glpi-db).
Une fois les services démarrés (conteneur), il est possible de faire la restauration de la base de données :
docker compose exec -T glpi-db ariadb -u -p < dump.sql Une alternative aussi, c'est de publier temporaire MariaDB avec un transfert de port et de le faire avec HeidiSQL par exemple.
Romain