Sign inSign up

jmbasolucoes/glpi

By jmbasolucoes

•Updated 4 days ago

GLPI 12.0.0 | PHP 8.3 | AlmaLinux 9 | Apache/PHP-FPM | Redis opcional | JMBA Soluções

Image
2

3.9K

jmbasolucoes/glpi repository overview

⁠GLPI 12.0.0 - PHP 8.3

Site Linkedin Docker

⁠O que é GLPI?

O GLPI é uma aplicação de gestão de serviços e gerenciamento de ativos 100% web. Foi prioritariamente desenvolvida para atender às necessidades de Gestores de TI no gerenciamento de chamados de Helpdesk e transformou-se numa poderosa plataforma de gerenciamento de ativos e serviços, provendo aos gestores informações “on time” de seus recursos físicos e humanos.

⁠Pré-requisitos

Certifique-se de que o Docker e o Docker Compose estão instalados no seu ambiente:

⁠Imagens GLPI

Imagem mantida pela JMBA Soluções, com GLPI 12.0.0, PHP 8.3, AlmaLinux 9, Apache, PHP-FPM e cron. O banco de dados e o Redis são serviços separados. A build publicada é para Linux amd64:

jmbasolucoes/glpi:latest
jmbasolucoes/glpi:12.0.0
jmbasolucoes/glpi:11.0.11
jmbasolucoes/glpi:10.0.28
docker pull jmbasolucoes/glpi:12.0.0
# Ou acompanhe a tag latest:
docker pull jmbasolucoes/glpi:latest

Fontes: lançamento GLPI 12⁠ e release 12.0.0⁠.

⁠Criando os diretórios / volumes (Dados persistentes)

⁠Volumes para o GLPI
mkdir -p /data/glpi-12/glpi/documents
mkdir -p /data/glpi-12/glpi/marketplace
mkdir -p /data/glpi-12/glpi/plugins
mkdir -p /data/glpi-12/glpi/files/_pictures
mkdir -p /data/glpi-12/glpi/files/_plugins
mkdir -p /data/glpi-12/glpi/etc
mkdir -p /data/glpi-12/glpi/imagens-custom
mkdir -p /data/glpi-12/backup
⁠Volumes para o MySQL
mkdir -p /data/glpi-12/percona/lib
⁠Ajustando permissões do GLPI e MySQL
chown 48:48 -R /data/glpi-12/glpi
chown 1001:0 -R /data/glpi-12/percona
⁠Criando uma Network

Vamos criar uma nova network para que os nossos containers possam se comunicar diretamente pelo nome, garantindo que o GLPI não perca a conexão com o banco de dados:

docker network create glpi

⁠Arquivo .env

Antes de iniciar o banco de dados e o GLPI, é essencial configurar as variáveis de ambiente no arquivo .env. Este arquivo deve conter as credenciais do banco de dados e configurações do GLPI. Crie o arquivo .env na mesma pasta do seu compose.yaml, com valores próprios para sua instalação.

Aqui estão as variáveis que você deve configurar:

MYSQL_ROOT_PASSWORD=root_password
MYSQL_DATABASE=glpi
MYSQL_USER=glpi_user
MYSQL_PASSWORD=glpi_password
TZ=America/Sao_Paulo

As variáveis de ambiente MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER, e MYSQL_PASSWORD devem ser ajustadas de acordo com sua configuração do banco de dados. No exemplo, TZ é repassado ao serviço de banco. A imagem GLPI é construída com o fuso America/Sao_Paulo.

Agora, com o .env configurado corretamente, podemos prosseguir com os próximos passos.

⁠Iniciando o banco de dados

Com as variáveis definidas no arquivo .env, vamos iniciar o container do banco de dados MySQL com as credenciais configuradas:

docker run --name db-glpi-12 --network glpi \
  --env-file .env \
  -v /data/glpi-12/percona/lib/:/var/lib/mysql \
  -d percona/percona-server:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

⁠Iniciando o GLPI

Inicie o container GLPI. As variáveis MYSQL_* inicializam o banco; a conexão do GLPI é configurada pelo instalador e salva em /etc/glpi/config_db.php:

docker run --name glpi-12 --network glpi -p 80:80 \
  -v /data/glpi-12/glpi/documents:/var/lib/glpi/files/data-documents \
  -v /data/glpi-12/glpi/imagens-custom:/usr/share/glpi/public/pics/imagens-custom \
  -v /data/glpi-12/glpi/marketplace:/usr/share/glpi/marketplace \
  -v /data/glpi-12/glpi/plugins:/usr/share/glpi/plugins \
  -v /data/glpi-12/glpi/files/_pictures:/var/lib/glpi/files/_pictures \
  -v /data/glpi-12/glpi/files/_plugins:/var/lib/glpi/files/_plugins \
  -v /data/glpi-12/glpi/etc:/etc/glpi/ \
  -v /data/glpi-12/backup:/backup/ \
  -d jmbasolucoes/glpi:12.0.0

⁠Docker Compose

Usando o Docker Compose, podemos configurar os serviços do GLPI, do MySQL e do Redis com as variáveis definidas no .env:

services:
  glpi_app:
    image: jmbasolucoes/glpi:12.0.0
    container_name: glpi-12
    depends_on:
      - glpidb
      - glpi_redis
    volumes:
      - /data/glpi-12/glpi/documents:/var/lib/glpi/files/data-documents
      - /data/glpi-12/glpi/marketplace:/usr/share/glpi/marketplace
      - /data/glpi-12/glpi/plugins:/usr/share/glpi/plugins
      - /data/glpi-12/glpi/files/_pictures:/var/lib/glpi/files/_pictures
      - /data/glpi-12/glpi/files/_plugins:/var/lib/glpi/files/_plugins
      - /data/glpi-12/glpi/etc:/etc/glpi
      - /data/glpi-12/glpi/imagens-custom:/usr/share/glpi/public/pics/imagens-custom
      - /data/glpi-12/backup:/backup
    environment:
      - GLPI_ENABLE_REDIS_SESSIONS=true
      - GLPI_CONFIGURE_REDIS_CACHE=true
      - GLPI_REDIS_HOST=glpi_redis
      - GLPI_REDIS_PORT=6379
      - GLPI_REDIS_SESSION_DB=1
      - GLPI_REDIS_CACHE_DB=0
    networks:
      - glpi
    ports:
      - 8085:80

  glpidb:
    image: percona/percona-server:8.0
    container_name: db-glpi-12
    networks:
      - glpi
    volumes:
      - /data/glpi-12/percona/lib:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
      - TZ=${TZ}

  glpi_redis:
    image: redis:7-alpine
    container_name: glpi-redis
    command: redis-server --save "" --appendonly no
    networks:
      - glpi

networks:
  glpi:
    driver: bridge
⁠Comando para subir os serviços:
docker compose up -d

⁠Instalação do GLPI

No instalador, use db-glpi-12 (ou o nome do serviço glpidb no Compose) como servidor, e os valores MYSQL_DATABASE, MYSQL_USER e MYSQL_PASSWORD do .env. O container GLPI não faz instalação nem migração automática do banco:

⁠Web

Acesse o GLPI no navegador com o IP do servidor:

  • http://IP_DNS ou http://IP_DNS:PORTA
⁠Console

Para consultar as opções de instalação pelo console, execute como o usuário da aplicação:

docker exec --user apache -it glpi-12 glpi-console database:install --help

⁠Redis (Sessões e Cache)

Ao subir com o Docker Compose acima, o start.sh gera /tmp/php.d/99-glpi-redis-session.ini com session.save_handler = redis e executa glpi-console glpi:cache:configure --context=core --dsn=redis://.... Caso o config_db.php ainda não exista (antes da instalação do GLPI), basta finalizar a instalação via web/console e reiniciar o container para que a configuração de cache seja aplicada. Para desativar a integração, ajuste as variáveis GLPI_ENABLE_REDIS_SESSIONS e GLPI_CONFIGURE_REDIS_CACHE para false.

⁠Ações automáticas

O container executa /usr/share/glpi/front/cron.php a cada minuto. A entrada pertence ao crontab do root, mas utiliza runuser para executar o PHP efetivamente como apache. O daemon crond permanece como root apenas para poder iniciar a tarefa com essa identidade; não é necessário alterar o usuário principal do container.

Para acompanhar ou disparar a rotina manualmente:

docker exec glpi-12 tail -f /var/log/glpi/cron.log
docker exec --user apache glpi-12 /usr/bin/php /usr/share/glpi/front/cron.php

⁠HTTPS com proxy reverso (GLPI 12)

A imagem configura o GLPI por variáveis de ambiente, sem editar /etc/glpi. O Nginx deve enviar X-Forwarded-Proto com o protocolo externo ($scheme). Informe os IPs ou CIDRs dos proxies que chegam ao Apache, separados por vírgulas:

environment:
  GLPI_TRUSTED_REVERSE_PROXIES: "172.28.0.1"
  GLPI_REVERSE_PROXY_HEADERS: "X-Forwarded-Proto"

Esse IP é apenas um exemplo: use a origem observada em sua implantação. Sem proxies informados, nenhum cabeçalho encaminhado é considerado confiável. Também são aceitos IPv6/CIDR e os valores GLPI REMOTE_ADDR e PRIVATE_SUBNETS; use esses valores amplos somente em redes onde o acesso ao backend é restrito aos proxies. Portas públicas do backend devem ser restritas ao proxy, especialmente quando o Docker apresenta diferentes clientes com o mesmo IP de gateway.

A configuração é regenerada em /tmp/glpi-reverse-proxy.php a cada inicialização, vale para CLI e PHP-FPM e não altera arquivos persistentes. Constantes existentes em /etc/glpi/local_define.php têm precedência; remova definições anteriores de proxy para passar a usar as variáveis. Após mudar as variáveis, recrie o container e inicie uma nova sessão no navegador.

⁠Proxy em rede Docker dedicada, sem IP fixo

Use GLPI_TRUSTED_REVERSE_PROXIES: "PRIVATE_SUBNETS" quando o backend estiver isolado dos clientes. Conecte Nginx e GLPI à mesma rede Docker dedicada, configure o upstream como o nome do serviço/container na porta 80 e remova ports do serviço GLPI. O Nginx continua publicando as portas externas. Não é necessário reconstruir a imagem quando o IP do proxy mudar.

Em redes compartilhadas com outros serviços não confiáveis, prefira uma rede mais restrita. Preserve a conexão do Nginx à rede dedicada também no Compose ou na configuração de implantação que o recria. Essa configuração não move, renomeia nem altera a estrutura de arquivos do GLPI.

Tag summary

Content type

Image

Digest

sha256:fbf1dbfa8…

Size

361.3 MB

Last updated

4 days ago

docker pull jmbasolucoes/glpi