// 05 — SERVICES

🎫 GLPI

Complete installation guide — Windows Server / IIS stack and Linux / Docker. IT asset management and helpdesk.

Installation Windows / IIS Linux / Docker MariaDB PHP
↗ Download GLPI ↗ GLPI Agent ↗ Official Docs

// Overview

// WHAT IS GLPI

GLPI is a free, open-source IT Asset Management and Helpdesk platform. It tracks hardware, software, licenses, contracts and manages support tickets.

// REQUIREMENTS

PHP 8.1 or 8.2
Database MariaDB 10.5+ or MySQL 8.0+
Web server Apache / Nginx / IIS
RAM 2GB minimum

// TWO INSTALL PATHS

Windows / IIS — best if your org runs Windows Server and already uses IIS.
Linux / Docker — faster setup, easier maintenance, recommended for new deployments.

// Windows / IIS Stack

💡

Stack: Windows Server 2019/2022 + IIS + PHP 8.1/8.2 (FastCGI) + MariaDB + GLPI

1
Install IIS with required features

Open Server Manager → Add Roles and Features → Web Server (IIS). Under Application Development enable CGI. Also enable: Static Content, Default Document, Request Filtering, ISAPI Extensions, ISAPI Filters.

POWERSHELL
# Or install via PowerShell
Install-WindowsFeature -Name Web-Server,Web-CGI,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Static-Content,Web-Default-Doc,Web-Http-Redirect -IncludeManagementTools

Test: open http://localhost — you should see the IIS welcome page.

2
Install PHP manually

Download the Thread Safe ZIP package for PHP 8.1 or 8.2. Extract to C:\PHP.

⚠️

Install the Visual C++ Redistributable (x64) first. Without it PHP fails silently.

3
Configure PHP in IIS (FastCGI)

Open IIS Manager → select server → Handler Mappings → Add Module Mapping:

FIELDVALUE
Request path*.php
ModuleFastCgiModule
ExecutableC:\PHP\php-cgi.exe
NamePHP via FastCGI

Then go to FastCGI Settings → Add → C:\PHP\php-cgi.exe

4
Configure php.ini

Copy C:\PHP\php.ini-development → rename to php.ini. Then edit it:

PHP.INI — Extensions (remove ; to enable)
extension_dir = "C:\PHP\ext"

extension=curl
extension=fileinfo
extension=gd
extension=intl
extension=ldap
extension=mysqli
extension=openssl
extension=pdo_mysql
extension=soap
extension=xml
extension=zip
extension=mbstring
extension=bz2
PHP.INI — Performance settings
memory_limit          = 256M
upload_max_filesize   = 64M
post_max_size         = 64M
max_execution_time    = 300
cgi.fix_pathinfo      = 1

; OPcache — big performance gain
opcache.enable               = 1
opcache.memory_consumption   = 128
opcache.max_accelerated_files= 10000
5
Test PHP

Create C:\inetpub\wwwroot\info.php with the following content, then open http://localhost/info.php:

PHP
<?php phpinfo(); ?>

If you see the PHP info page, PHP is working. Delete this file after testing.

6
Install MariaDB and create database

Install to C:\MariaDB. Set a root password during install. Then create the GLPI database:

SQL
mysql -u root -p

CREATE DATABASE glpi CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'glpiuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON glpi.* TO 'glpiuser'@'localhost';
FLUSH PRIVILEGES;
7
Download and place GLPI files

Extract GLPI to C:\inetpub\wwwroot\glpi. For a cleaner production setup use a separate folder:

RECOMMENDED FOLDER STRUCTURE
C:\GLPI\             # GLPI web files
C:\GLPI\data\        # data outside webroot
C:\GLPI\plugins\     # plugins
8
Set IIS permissions (CRITICAL)

Right-click the GLPI folder → Properties → Security → Add IIS_IUSRS with Modify, Read, Write permissions. Apply to all subfolders especially:

FOLDERS NEEDING WRITE ACCESS
files\
config\
marketplace\
plugins\
9
Create IIS site and set default document

IIS Manager → Sites → Add Website. Set physical path to your GLPI folder, port 80. Then go to Default Document → Add index.php and move it to the top.

10
Run the GLPI web installer

Open http://localhost/glpi. The installer will launch. Use these database credentials:

FIELDVALUE
Hostlocalhost
Userglpiuser
PasswordStrongPassword123!
Databaseglpi
🚨

After installation: delete C:\inetpub\wwwroot\glpi\install\ immediately. Leaving it accessible is a security risk.

// Linux / Docker Install

💡

Recommended for new deployments. Docker Compose spins up GLPI + MariaDB in minutes with no manual PHP configuration.

// Option A — Docker Compose (fastest)

1
Create docker-compose.yml
YAML — docker-compose.yml
version: '3.8'

services:
  mariadb:
    image: mariadb:10.11
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE:      glpi
      MYSQL_USER:          glpiuser
      MYSQL_PASSWORD:      glpipass
    volumes:
      - mariadb_data:/var/lib/mysql

  glpi:
    image: diouxx/glpi
    restart: always
    ports:
      - "80:80"
    environment:
      MARIADB_HOST:     mariadb
      MARIADB_DATABASE: glpi
      MARIADB_USER:     glpiuser
      MARIADB_PASSWORD: glpipass
      VERSION:          10.0.15
    volumes:
      - glpi_data:/var/www/html/glpi
    depends_on:
      - mariadb

volumes:
  mariadb_data:
  glpi_data:
2
Start the stack
BASH
docker compose up -d
docker compose logs -f glpi       # watch startup progress

Open http://localhost once the container is ready. The web installer will appear. Use the DB credentials from the compose file.

// Option B — Bare metal (Ubuntu/Debian)

1
Install dependencies
BASH
apt update && apt upgrade -y

# Install Apache + PHP 8.2 + extensions
apt install -y apache2 \
  php8.2 php8.2-mysql php8.2-curl php8.2-gd \
  php8.2-intl php8.2-xml php8.2-zip php8.2-mbstring \
  php8.2-bz2 php8.2-ldap php8.2-soap php8.2-opcache \
  libapache2-mod-php8.2

# Install MariaDB
apt install -y mariadb-server mariadb-client
mysql_secure_installation          # run this after install
2
Create database
SQL
mysql -u root -p

CREATE DATABASE glpi CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'glpiuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON glpi.* TO 'glpiuser'@'localhost';
FLUSH PRIVILEGES;
3
Download and install GLPI
BASH
# Download latest release
cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.15/glpi-10.0.15.tgz
tar -xzf glpi-10.0.15.tgz -C /var/www/html/

# Set correct permissions
chown -R www-data:www-data /var/www/html/glpi
chmod -R 755 /var/www/html/glpi
4
Configure Apache virtualhost
APACHE — /etc/apache2/sites-available/glpi.conf
<VirtualHost *:80>
  ServerName    glpi.yourdomain.com
  DocumentRoot  /var/www/html/glpi

  <Directory /var/www/html/glpi>
    AllowOverride All
    Require       all granted
  </Directory>
</VirtualHost>
BASH
a2ensite glpi.conf
a2enmod  rewrite
systemctl restart apache2
5
Run the web installer

Open http://your-server-ip/glpi and follow the installer. After setup delete the install folder:

BASH
rm -rf /var/www/html/glpi/install

// Post Install — Security & Config

// DEFAULT CREDENTIALS

Change these immediately after first login:
glpi / glpi — admin account
tech / tech — technician
normal / normal — normal user
post-only / postonly — post only

// WHAT TO DO FIRST

1. Change all default passwords
2. Delete the install folder
3. Set up email notifications
4. Configure your entity/organisation
5. Install GLPI Agent on endpoints

// OPTIONAL FEATURES

LDAP/AD auth — Setup → Authentication
Mail collector — auto-create tickets from email
OCS Inventory sync — hardware inventory
Ticket automation — rules and escalations

// Troubleshooting

SYMPTOMLIKELY CAUSEFIX
HTTP 500 errorPHP extension missing or FastCGI wrong pathCheck php.ini extensions, verify php-cgi.exe path in IIS
Blank white pagePHP error suppressedSet display_errors = On temporarily in php.ini
GLPI write failureIIS_IUSRS missing write permsGrant Modify rights to files/, config/, marketplace/
DB connection failedWrong credentials or DB not runningTest with mysql -u glpiuser -p glpi
Installer won't runinstall/ folder already deletedRe-extract GLPI files
Slow performanceOPcache disabledEnable opcache in php.ini, restart web server
404 on GLPI pagesURL Rewrite not installedInstall IIS URL Rewrite Module or enable Apache mod_rewrite

// GLPI Agent

// WHAT IT DOES

The GLPI Agent runs on endpoints and automatically reports hardware inventory, software, network info and more back to your GLPI server.

// SUPPORTED OS

Windows, Linux (Debian, Ubuntu, RHEL, etc.), macOS. Can be deployed via GPO on Windows domains.

BASH — Linux install
# Debian / Ubuntu
wget https://github.com/glpi-project/glpi-agent/releases/download/1.7.2/glpi-agent_1.7.2_all.deb
dpkg -i glpi-agent_1.7.2_all.deb
apt -f install                      # fix deps if needed

# Configure server URL
nano /etc/glpi-agent/agent.cfg
# Set: server = http://your-glpi-server/glpi

# Start and enable
systemctl enable --now glpi-agent

# Run inventory now
glpi-agent --force
POWERSHELL — Windows install (silent)
# Download MSI from https://github.com/glpi-project/glpi-agent/releases
# Silent install with server URL
msiexec /i glpi-agent-1.7.2-x64.msi /quiet SERVER="http://your-glpi-server/glpi"

# Run inventory immediately
glpi-agent --force

# Check service status
Get-Service glpi-agent
💡

GPO deployment: For mass deployment on a Windows domain, use Group Policy Software Installation to push the MSI to all machines with the SERVER= property preset. Inventory data will appear in GLPI automatically.