Skip to content

Tiozao-do-Linux/glpi-nginx

Repository files navigation

GLPI - (POC - Proof of concept)

Although there is already an Official Version of GLPI (https://github.com/glpi-project/glpi) on Docker Hub (https://hub.docker.com/r/glpi/glpi), I believe it is possible to use other more performant Docker Images in a docker-compose.yml and just map the source code inside these containers.

What do I gain from this?

  • The docker-compose.yml file is very simple. Take a look.
  • If NGINX or MariaDB receives an update, it will not be necessary to rebuild the glpi-fpm image.
  • If PHP or GLPI itself receives an update, it will be necessary to create a new glpi-fpm image to reflect the updates. This procedure is performed daily by the workflow.
  • The jarbelix/glpi-fpm image size is SMALLER than glpi/glpi and the jarbelix/glpi-fpm image supports both amd64 and arm64 architectures, while the glpi/glpi image only supports amd64.
  • And yes, I chose Nginx because it's more performant than Apache.

How to keep everything up to date

  • Just do a docker compose pull within the directory where docker-compose.yml is located to download the new versions and then a docker compose up -d and the new versions will already be in use.

Simple and straightforward

git clone https://github.com/Tiozao-do-Linux/glpi-nginx.git

cd glpi-nginx

cp env.example .env

docker compose up -d; docker compose logs -f

What's running

docker compose ps
NAME                    IMAGE               COMMAND                  SERVICE    CREATED         STATUS         PORTS
glpi-nginx-database-1   mariadb:latest      "docker-entrypoint.s…"   database   3 seconds ago   Up 2 seconds   3306/tcp
glpi-nginx-glpi-fpm-1   jarbelix/glpi-fpm   "/entrypoint.sh php-…"   glpi-fpm   3 seconds ago   Up 1 second    9000/tcp
glpi-nginx-nginx-1      nginx:latest        "/docker-entrypoint.…"   nginx      3 seconds ago   Up 1 second    0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp

Size of images used

docker images | grep -E '(REPOSITORY|glpi-fpm|mariadb|nginx)'
REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
jarbelix/glpi-fpm   latest    60131ae3c08d   5 seconds ago   717MB
nginx               latest    07ccdb783875   11 days ago     152MB
mariadb             latest    dfbea441e6fc   2 months ago    330MB

List glpi related volumes

docker volume ls | grep glpi_

Accessing the container shell

docker exec -it glpi-nginx-glpi-fpm-1 bash

My glpi-fpm images in hub.docker.com

Wizard Instalation

GLPI Setup

Tela-01

Select your language

Tela-02

License

Tela-03

Install or Upgrade GLPI

Tela-04

Checking your environment #1

Tela-05

Cheking your environment #2

Tela-06

Database conection setup

Tela-07

Test database connection

Tela-08

Initialize database #1

Tela-09

Initialize database #2

Tela-10

Collect data

Tela-11

One last thing before starting GLPI

Tela-12

The instalation is finished

Tela-13

Login to your account

Tela-14

Your Dasboard

Tela-15

Checking Version of GLPI

Tela-16

My POC environment


Generating Self-Signed Certificates

A single command line with openssl is all it takes to obtain the private key (nginx.key) and certificate (nginx.crt) files. The files in this repository were generated as follows:

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout nginx.key -out nginx.crt -subj "/C=US/ST=State/L=City/O=Organization/CN=localhost"

Customizing with Your Preferences

The Dockerfile file is very simple. Take a look and clear up any doubts. I used AlmaLinux 10 as a base to install the packages related to PHP.

The docker-compose.yml file can be edited to reflect your preferences (exposed ports, image versions, etc.).

The custom-nginx.conf file contains the basic Nginx server configurations.

The custom-php.ini file contains the PHP variable configurations.

Important

In production mode, adjust the locations in custom-nginx.conf to allow only your networks. Comment out the 'allow all' line and uncomment the line corresponding to your network.