Ele faz a função de abertura e acompanhamento de chamados. Recentemente um amigo me pediu ajuda para instalar o GLPI no Ubuntu 20.04 LTS, com suporte a envio de e-mails a partir das clouds mais polulares, como Azure, GCP e AWS.
Ele teve alguma dificuldade no processo, pois o material que encontrou na internet pendia de algus detalhes essenciais. Então resolvi escrever este artigo em formato de tutorial, na esperança que seja útil para mais alguém que se encontre na mesma situação.
Esta instalação funcionará em qualquer Cloud, Hypervisor ou servidor que tenha um mínimo de 2GB RAM e 20Gb de HD.
A configuração mínima para um bom funcionamento do GLPI é:
-
2 GB RAM
-
2 vCPU
-
20 GB HD
Dica para aumentar o tamanho do HD caso não esteja utilizando LVM
No meu caso, eu utilizei uma cloud image do Ubuntu. A pesar de ser uma abordagem prática, o HD deste tipo de imagem pode ser muito pequeno, conforme podemos ver na imagem a seguir.
Para expandir o disco, desligue a VM, aumete o tamanho do disco através do console de gerenciamento de seu hypervisor, e ligue a VM novamente. Com isso o disco da VM estará maior, porém o filesystem permanecerá do mesmo tamanho.
Para expandir o filesystem, execute estes comandos:
sudo growpart /dev/sda 1
sudo resize2fs /dev/sda1
Após fazer a instalação do Ubuntu, começar a preparar a VM:
Atualizar os pacotes:
sudo apt-get update
sudo apt-get -y upgrade
Instalar e ativar o VM Guest Agent, para que as Clouds e Hypervisors possam obter informações da instância ou VM:
sudo apt-get -y install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent.service
Instalar os softwares necessários:
sudo apt-get -y install bash-completion chrony xz-utils libarchive-tools bzip2 unzip curl sendmail
sudo apt-get -y install apache2 libapache2-mod-php php-soap php-cas
sudo apt-get -y install php-{apcu,curl,gd,imap,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,bz2}
sudo apt-get -y install php-mail libphp-phpmailer
Banco de Dados:
sudo apt-get -y install mariadb-server
A instalação do banco de dados pode demorar alguns minutos, pois o pacote mariadb-server do Ubuntu executa alguns scripts pós instalação. Para acompanhar o processo, abra outro terminal e rode este comando:
while true; do ps faxuwww | grep mysql; sleep 5; clear; done
sudo timedatectl set-timezone America/Sao_Paulo
sudo systemctl enable --now chrony
chronyc sources
É obrigatório que o servidor tenha a hora correta:
É importante que a VM tenha um hostname bem definido, bem como nome de domínio e timezone configurados corretamente. Estes ajustes são importantes para que o GLIP consiga fazer envio de e-mails, bem como operar corretamente na abertura dos chamados. Também precisamos ajustar o comportamento de rotação padrão de logs, bem como ativar o serviço de disparo de e-mails.
sudo hostnamectl set-hostname glpi-lab.linuxelite.com.br
sudo sed -i s/weekly/daily/g /etc/logrotate.conf
sudo systemctl enable --now sendmail
Por padrão o GLPI utiliza Apache como servidor web. Iremos agora criar um diretório para o GLPI, e autorizar o acesso ao mesmo:
$ sudo mkdir -p /var/www/html/glpi
$ sudo -i
# echo -e "<Directory \"/var/www/html/glpi\">\nAllowOverride All\n</Directory>" > /etc/apache2/conf-available/glpi.conf
Ativar a configuração criada:
a2enconf glpi.conf
systemctl reload apache2
Fazer o download do GLPI:
wget -O- https://github.com/glpi-project/glpi/releases/download/9.5.4/glpi-9.5.4.tgz | tar -zxv -C /var/www/html/
exit
Alterar o dono dos arquivos para o usuário que executa o Apache (pode ter implicações de segurança, mas devido a forma de operar do GLPI, isso é necessário):
sudo chown -vRf www-data:www-data /var/www/html/glpi
Alterar as permissões dos arquivos:
sudo find /var/www/html/glpi -type d -exec chmod 755 {} \;
sudo find /var/www/html/glpi -type f -exec chmod 644 {} \;
Criando Usuário e Base de Dados no MariaDB (tome nota da senha, pois será utilizada mais adiante):
sudo mysql -e "create database glpidb character set utf8"
sudo mysql -e "create user 'glpi_admin'@'localhost' identified by '**k21f7f82a493f01X**'"
sudo mysql -e "grant all privileges on glpidb.* to 'glpi_admin'@'localhost' with grant option";
Definir uma senha forte para o root do MariaDB (exemplo: labx32g8g93b514g12M):
$ sudo mysql_secure_installation
responder Y para todas as perguntas
Ajustando o timezone do banco de dados, para que o GLPI exiba corretamente dados de tempo e possa trabalhar de forma adequada com os agendamentos:
mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql mysql
sudo mysql -e "GRANT SELECT ON mysql.time_zone_name TO 'glpi_admin'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
Instalando o GLPI via shell:
sudo php /var/www/html/glpi/bin/console glpi:database:install \
--db-host='localhost' \
--db-name='glpidb' \
--db-user='glpi_admin' \
--db-password='k21f7f82a493f01X'
Acertar mais uma vez o dono dos arquivos:
sudo chown -vRf www-data:www-data /var/www/html/glpi/files
Configuração do CRON para o GLPI poder disparar tarefas automaticamente:
$ sudo -i
# echo -e "* * * * *\troot\tphp\t/var/www/html/glpi/front/cron.php" >> /etc/crontab
# exit
$ sudo systemctl restart cron.service
Remover o diretório de instalação do GLPI, para liberar espaço em disco.
$ sudo rm -vRf /var/www/html/glpi/install
Caso já tenha configurado seu FQDN, utilize o mesmo para acessar o GLPI via Web Browser. Caso contrário, utilize o IP da VM ou Instância.
http://glpi-lab.linuxelite.com.br/glpi/
Para autenticar no GLPI, deve ser utilizado um profile. Existem 4 diferentes profiles, com as respectivas senhas default, que devem ser alteradas tão logo seja realizado o primeiro acesso.
Usuários e senhas default dos profiles do GLPI:
- glpi/glpi (super-admin)
- tech/tech
- postonly/postonly (only for helpdesk)
- normal/normal
Iremos agora criar um Apache URL Rewrite, para que os acessos a raiz do web server sejam redirecionados para o “/glpi”.
Exemplo: “http://glpi-lab.linuxelite.com.br” para “http://glpi-lab.linuxelite.com.br/glpi/"
Primeiro ative o módulo:
$ sudo a2enmod rewrite\
$ sudo systemctl restart apache2
Edite o virtual host padrão para que faça uso do mod_rewrite. Mas antes, crie um backup do arquivo original:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.bkp
Substituir o conteúdo do arquivo “/etc/apache2/sites-available/000-default.conf” por este:
Verifique se fez tudo certo:
$ apachectl -t\
Syntax OK
Criar a política de rewrite:
$ sudo vi /var/www/html/.htaccess
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) /glpi/ [R=301]
Reiniciar o serviço para validar as alterações:
$ sudo systemctl restart apache2
Existem 2 formas de ativar a criptografia (HTTPS) no Apache:
1. Com certificados digitais comprados (ou gerados e assinados localmente),
2. Usando Let’s Encrypt.
Eu recomendo que seja utilizado o Let’s Encrypt, para poupar dinheiro. Basta seguir este link para fazer a configuração.
OBS: O Let’s Encrypt precisa que sejam utilizados IPs válidos (públicos). Porém, existe uma forma de utilizar o Let’s Encrypt em um ambiente que só possua IPs privados (onde o acesso apenas funcione em uma rede local ou através de VPN).
Neste artigo iremos apresentar a abordagem que utiliza um certificado gerado e assinado localmente. Ela não difere muito de um certificado comprado de uma CA oficial.
$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apacheself.key -out /etc/ssl/certs/apacheself.crt
Preencher as resposta de forna que fique similar ao apresentado a seguir:
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Rio de Janeiro
Locality Name (eg, city) []:Rio de Janeiro
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linux Elite
Organizational Unit Name (eg, section) []:TI
Common Name (e.g. server FQDN or YOUR name) []:glpi-lab.linuxelite.com.br
Email Address []:[email protected]
Configurar o Apache para uso de SSL:
$ sudo vi /etc/apache2/conf-available/ssl.conf
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
SSLSessionTickets Off
Definir um site SSL:
$ sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bkp
Deixar o arquivo /etc/apache2/sites-available/default-ssl.conf
com o seguinte conteúdo:
$ sudo vi /etc/apache2/sites-available/default-ssl.conf
Ativar todas as alterações:
$ sudo a2enmod ssl
$ sudo a2enmod headers
$ sudo a2ensite default-ssl
$ sudo a2enconf ssl
Verificar se as configurações estão corretas:
$ sudo apachectl -t
Syntax OK
Reiniciar o Apache para que os ajustes entrem em vigor:
$ sudo systemctl restart apache2
Observe que agora existe um serviço HTTPS executando:
$ ss -ta | grep http
LISTEN 0 511 *:https *:*
LISTEN 0 511 *:http *:*
Se quiser redirecionar automaticamente os acessos HTTP para HTTPS, faça esta alteração no arquivo “.htaccess”:
$ sudo vi /var/www/html/.htaccess
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) /glpi/ [R=301]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://glpi-lab.linuxelite.com.br/$1 [R,L]
Faça um refresh no web browser. Ocorrerá o redirecionameto para HTTPS.
Exiba os detlhes do certificado digital.
O GLPI não consegue fazer autenticação via usuário e senha nos provedores de correio eletrônico de algumas clouds públicas, e por isso não é possível fazer a configuração de envio de e-mails desta forma. Para contornar o problema, precisamos fazer a distribuição dos e-mails via relay.
Ative as notificações do GLPI:
Configure o GLPI para utilizar o serviço SMTP que instalamos:
Verifique nos logs do Postfix que o e-mail foi enviado:
$ tail /var/log/mail.log
Esta é a parte mais complicada. No office 365, é necessário descobrir qual o pool SMTP que atende a seu domínio, para poder utilizar esta informação na configuração de relay do Postfix. Use o MX Toolbox para descobrir qual o seu MX SMTP Pool.
De posse da informação, é hora de configurar o Postfix para fazer o envido dos e-mails através do relay.
Utilize este post como referência na configuração do Postfix.
Observe apenas o item “3. Office 365 SMTP relay” do post. A parte de configuração de usuário e senha não é necessária, pois iremos autorizar o Mail Flow por IP.
No painel administrativo do Office 365, crie um conector:
Exchange Admin Center > Mail Flow > Connectors > + Add a connector
Configure desta forma:
- Mail flow scenario: From
: Your organization’s email server To
: Office 365
- Name: GLPI
- Description: Allow GLPI Mail Relay
Selecione o Radio Button “By verifying the IP address of the sending server matches one of the followig IP addresses, which belong exclusively to your organization”.
No campo disponível, insira o IP público que está associado ao GLPI. Também pode ser utilizado o IP do Nat Gateway, caso o ambiente não utilize IPs válidos.
O sistema de relay é o mesmo para GCP. Basta autorizar os IPs que farão os disparos através da estrutura SMTP do Google.
A configuração de e-mail relay do Postfix pode ser feita de acordo com a documentação do Google.
As informações de SMTP do GSuite podem ser consultadas aqui.
No caso da AWS, a configuração deve ser feita via SNS. Basta seguir o setup do relayhost do Postfix, utilizando-se das informações contidas na documentação do SNS.
É isso pessoal. Espero que este material seja útil para quem está com dificuldades para instalar e configurar o GLPI em estruturas mais modernas, como as atuais clouds públicas.
Um abraço.
Gostou do que encontrou aqui? A cada clique em um banner, você ajuda a manter este site vivo e gratuito. Seu apoio faz toda a diferença para que possamos continuar trazendo conteúdos que você adora. Muito obrigado! 😊
Conhece o OCS Inventory? Que tal dar uma olhada e aprender um pouco mais?