Este projeto configura o GLPI com as melhores práticas de segurança recomendadas pela documentação oficial.
- Detecção automática: Verifica automaticamente as versões disponíveis do GLPI via API do GitHub
- Upgrade inteligente: Atualiza automaticamente para a penúltima versão estável (mais confiável)
- Backup automático: Cria backup da instalação atual antes do upgrade
- Atualização de banco: Executa automaticamente
php bin/console db:updateapós o upgrade - Rollback automático: Restaura backup em caso de falha no upgrade
- Configuração: Habilitado através da variável
AUTO_UPGRADE=trueno docker-compose.yml
- Configuração: O diretório raiz do servidor web é configurado como
/var/www/html/glpi/public - Benefício: Impede acesso direto a arquivos não públicos do GLPI
- Implementação: Configuração do Apache VirtualHost apontando para o diretório
public
- Configuração: Diretórios de dados movidos para fora da raiz web
- Localização dos dados:
/var/lib/glpi/files - Configurações:
/etc/glpi - Logs:
/var/log/glpi - Benefício: Dados sensíveis não ficam acessíveis via web
- Negação explícita de acesso aos diretórios:
/var/www/html/glpi/config/var/www/html/glpi/files/var/www/html/glpi/inc/var/www/html/glpi/install
session.cookie_httponly = on- Proteção contra XSS- Timezone configurado para
America/Sao_Paulo
glpi-docker/
├── Dockerfile # Imagem Docker customizada
├── docker-compose.yml # Orquestração dos serviços
├── glpi-start-secure.sh # Script de inicialização segura
├── .env # Variáveis de ambiente (criar a partir do .env.example)
├── .env.example # Template das variáveis de ambiente
├── .gitignore # Arquivos ignorados pelo Git
└── README.md # Esta documentação
- Docker e Docker Compose instalados
-
Clone ou baixe este projeto
-
Configure as variáveis de ambiente:
# Copie o arquivo de exemplo cp .env.example .env # Edite o arquivo .env com suas configurações # IMPORTANTE: Altere as senhas padrão por valores seguros!
-
Construa e inicie os containers:
docker-compose up --build -d
-
Acesse o GLPI:
- URL: http://localhost:9020
- O GLPI será configurado automaticamente com as práticas de segurança
O sistema possui upgrade automático inteligente que:
- Verifica automaticamente novas versões do GLPI
- Atualiza para a penúltima versão estável (mais confiável que a última)
- Cria backup automático antes do upgrade
- Executa rollback em caso de falha
Para habilitar o upgrade automático:
- Edite o arquivo
docker-compose.yml - Adicione a variável de ambiente:
environment: - AUTO_UPGRADE=true
- Reconstrua o container:
docker-compose down docker-compose up --build -d
Monitoramento do upgrade:
# Verificar logs do upgrade
docker logs glpi_app -f
# Verificar versão atual
docker exec glpi_app grep "version" /var/www/html/glpi/version
O projeto utiliza volumes Docker para persistir dados:
glpi_data: Código fonte do GLPIglpi_files: Arquivos de dados (fora da raiz web)glpi_config: Configurações (fora da raiz web)glpi_logs: Logs do sistema (fora da raiz web)mariadb_data: Dados do banco MariaDB
As configurações do banco de dados são definidas através das variáveis de ambiente no arquivo .env:
- Host: mariadb (container)
- Banco: Definido pela variável
MYSQL_DATABASE - Usuário: Definido pela variável
MYSQL_USER - Senha: Definida pela variável
MYSQL_PASSWORD
| Variável | Descrição | Valor Padrão |
|---|---|---|
MYSQL_ROOT_PASSWORD |
Senha do usuário root do MariaDB | glpi_root_password |
MYSQL_DATABASE |
Nome do banco de dados | glpi |
MYSQL_USER |
Usuário do banco de dados | glpi |
MYSQL_PASSWORD |
Senha do usuário do banco | glpi_password |
TIMEZONE |
Fuso horário do sistema | America/Sao_Paulo |
GLPI_PORT |
Porta de acesso ao GLPI | 9020 |
AUTO_UPGRADE |
Habilita upgrade automático inteligente | false |
Após a instalação, você pode verificar se as configurações de segurança estão corretas:
-
Verificar diretório raiz web:
docker exec glpi_app apache2ctl -SDeve mostrar
DocumentRoot /var/www/html/glpi/public -
Verificar localização dos dados:
docker exec glpi_app ls -la /var/lib/glpi/files docker exec glpi_app ls -la /etc/glpi docker exec glpi_app ls -la /var/log/glpi
-
Testar acesso negado a diretórios sensíveis:
- http://localhost:9020/config/ (deve retornar 403 Forbidden)
- http://localhost:9020/files/ (deve retornar 403 Forbidden)
- http://localhost:9020/inc/ (deve retornar 403 Forbidden)
- Logs do Apache:
/var/log/apache2/no container - Logs do GLPI:
/var/log/glpi/no container - Logs do container:
docker logs glpi_app
# Backup dos dados
docker run --rm -v glpi-docker_glpi_files:/data -v $(pwd):/backup alpine tar czf /backup/glpi_files_backup.tar.gz -C /data .
# Backup do banco
docker exec glpi_mariadb mysqldump -u glpi -pglpi_password glpi > backup.sql