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/glpi11
Placer 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) GLPI
Copier le sample.env en le nommant .env
cp sample.env .env
Editer le fichier .env
nano .env
La configuration terminée, démarrer les conteneurs :
docker compose up -d
Vous pouvez suivre les actions effectuées en regardant les logs :
docker compose logs -f
Depuis 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 ?
