// 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
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.
# 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.
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.
Open IIS Manager → select server → Handler Mappings → Add Module Mapping:
| FIELD | VALUE |
|---|---|
| Request path | *.php |
| Module | FastCgiModule |
| Executable | C:\PHP\php-cgi.exe |
| Name | PHP via FastCGI |
Then go to FastCGI Settings → Add → C:\PHP\php-cgi.exe
Copy C:\PHP\php.ini-development → rename to php.ini. Then edit it:
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
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
Create C:\inetpub\wwwroot\info.php with the following content, then open http://localhost/info.php:
<?php phpinfo(); ?>
If you see the PHP info page, PHP is working. Delete this file after testing.
Install to C:\MariaDB. Set a root password during install. Then create the GLPI database:
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;
Extract GLPI to C:\inetpub\wwwroot\glpi. For a cleaner production setup use a separate folder:
C:\GLPI\ # GLPI web files C:\GLPI\data\ # data outside webroot C:\GLPI\plugins\ # plugins
Right-click the GLPI folder → Properties → Security → Add IIS_IUSRS with Modify, Read, Write permissions. Apply to all subfolders especially:
files\ config\ marketplace\ plugins\
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.
Open http://localhost/glpi. The installer will launch. Use these database credentials:
| FIELD | VALUE |
|---|---|
| Host | localhost |
| User | glpiuser |
| Password | StrongPassword123! |
| Database | glpi |
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)
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:
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)
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
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;
# 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
<VirtualHost *:80> ServerName glpi.yourdomain.com DocumentRoot /var/www/html/glpi <Directory /var/www/html/glpi> AllowOverride All Require all granted </Directory> </VirtualHost>
a2ensite glpi.conf a2enmod rewrite systemctl restart apache2
Open http://your-server-ip/glpi and follow the installer. After setup delete the install folder:
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
| SYMPTOM | LIKELY CAUSE | FIX |
|---|---|---|
| HTTP 500 error | PHP extension missing or FastCGI wrong path | Check php.ini extensions, verify php-cgi.exe path in IIS |
| Blank white page | PHP error suppressed | Set display_errors = On temporarily in php.ini |
| GLPI write failure | IIS_IUSRS missing write perms | Grant Modify rights to files/, config/, marketplace/ |
| DB connection failed | Wrong credentials or DB not running | Test with mysql -u glpiuser -p glpi |
| Installer won't run | install/ folder already deleted | Re-extract GLPI files |
| Slow performance | OPcache disabled | Enable opcache in php.ini, restart web server |
| 404 on GLPI pages | URL Rewrite not installed | Install 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.
# 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
# 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.