The Problem: IT Assets Scattered Across Spreadsheets, Emails, and Sticky Notes
If you manage more than a handful of computers, software licenses, or network devices, you’ve probably experienced this: Excel spreadsheets that nobody updates, license keys in email threads from 2018, and that one server nobody remembers buying. As your business grows, tracking IT assets becomes a full-time job of chasing down information.
GLPI (Gestionnaire Libre de Parc Informatique) is a free, open-source IT asset management platform that gives you a single source of truth for your entire technology stack. We help businesses manage their IT infrastructure every day, and here’s our complete guide to setting up GLPI for your team.
What You’ll Need
For this guide, we recommend a Cloud VPS with:
- CPU: 2+ cores (GLPI runs on PHP/MySQL)
- RAM: 4GB minimum (8GB recommended for larger inventories)
- Storage: 20GB+ (depends on asset count and document storage)
- OS: Ubuntu 22.04 LTS or Rocky Linux 9
- Software: Apache/Nginx, PHP 8.1+, MySQL 8.0+ or MariaDB 10.5+
Canadian Web Hosting offers Cloud VPS with Canadian data centres and 24/7 support. Not comfortable managing this yourself? CWH offers Managed Support — our team will handle setup, security patches, and ongoing maintenance.
Installation Steps
Step 1: Update System and Install Prerequisites
First, update your package lists and install the required software:
sudo apt update
sudo apt upgrade -y
sudo apt install -y apache2 mariadb-server php php-{mysql,gd,curl,xml,mbstring,zip,ldap,apcu,intl,bcmath,imagick} libapache2-mod-php unzip wget curl
This installs Apache, MariaDB, PHP with all required extensions, and other utilities.
Step 2: Configure MariaDB Database
Create a database and user for GLPI:
sudo mysql -e "CREATE DATABASE glpidb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'glpiuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';"
sudo mysql -e "GRANT ALL PRIVILEGES ON glpidb.* TO 'glpiuser'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
Replace StrongPassword123! with a secure password of your choice.
Step 3: Download and Extract GLPI
Download the latest GLPI release and extract it to the web directory:
cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.13/glpi-10.0.13.tgz
sudo tar -xzf glpi-10.0.13.tgz -C /var/www/html/
sudo chown -R www-data:www-data /var/www/html/glpi/
sudo chmod -R 755 /var/www/html/glpi/
Check the GLPI releases page for the latest version number.
Step 4: Configure Apache Virtual Host
Create an Apache configuration file for GLPI:
sudo nano /etc/apache2/sites-available/glpi.conf
Add the following configuration:
<VirtualHost *:80>
ServerName glpi.yourdomain.com
DocumentRoot /var/www/html/glpi/public
<Directory /var/www/html/glpi/public>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/glpi_error.log
CustomLog ${APACHE_LOG_DIR}/glpi_access.log combined
</VirtualHost>
Enable the site and required Apache modules:
sudo a2ensite glpi.conf
sudo a2enmod rewrite headers
sudo systemctl restart apache2
Step 5: Complete Web Installation
Open your browser and navigate to http://your-server-ip/glpi. The GLPI installer will guide you through:
- License acceptance – Accept the GPL license
- System check – Verify all PHP extensions are installed
- Database configuration – Enter database details:
- Database:
glpidb - User:
glpiuser - Password:
StrongPassword123!(or your chosen password) - Host:
localhost
- Database:
- Data initialization – GLPI will create the database schema
- Admin account creation – Create your first administrator account
Configuration
Basic Setup
After installation, log in to GLPI and configure these essential settings:
- General setup (Setup ? General):
- Set your organization name and contact information
- Configure date format and timezone (America/Toronto or America/Vancouver)
- Set default language to English (Canada)
- Entities (Administration ? Entities):
- Create entities for different departments or locations
- Set up parent-child relationships for hierarchical organizations
- Asset Types (Management ? Dropdowns):
- Configure computer types (Desktop, Laptop, Server, Virtual Machine)
- Set up network equipment categories (Switch, Router, Firewall, Access Point)
- Define software categories (Operating System, Productivity, Security, Development)
Email Configuration
For ticket notifications and alerts, configure email settings:
# In GLPI: Setup ? Notifications ? Email Configuration
Notification method: SMTP
SMTP host: smtp.yourdomain.com
SMTP port: 587
SMTP encryption: STARTTLS
SMTP username: your-email@yourdomain.com
SMTP password: your-email-password
Test the configuration by sending a test email to verify delivery.
Verify It Works
Test your GLPI installation by:
- Adding your first computer:
- Go to Assets ? Computers ? Add
- Fill in: Name, Serial Number, Manufacturer, Model, Location, Owner
- Add specifications: CPU, RAM, Storage, Operating System
- Creating a software license:
- Go to Assets ? Software ? Add
- Enter: Software name, Version, License type, Number of licenses
- Assign to the computer you just added
- Testing the helpdesk:
- Go to Helpdesk ? Create Ticket
- Submit a test ticket with category “Hardware” and urgency “Medium”
- Verify you receive an email notification (if configured)
If all three tests pass, your GLPI installation is working correctly.
Production Hardening
HTTPS/TLS Setup
Secure your GLPI instance with Let’s Encrypt:
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d glpi.yourdomain.com
Certbot will automatically configure HTTPS and set up automatic renewal.
Firewall Rules
Configure UFW to allow only necessary ports:
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP (for Let's Encrypt renewal)
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
Monitoring Setup
Monitor your GLPI server’s performance to catch issues before they affect users. Set up monitoring for:
- CPU usage: GLPI can be CPU-intensive during large imports or reports
- Memory usage: PHP and MySQL memory consumption
- Disk space: Database growth and file uploads
- Response time: GLPI web interface performance
For a complete guide to server monitoring and diagnosing performance issues, see our guide to diagnosing high server load (coming soon).
Backup Strategy
Create a backup script for GLPI data:
#!/bin/bash
# /usr/local/bin/backup-glpi.sh
BACKUP_DIR="/backup/glpi"
DATE=$(date +%Y%m%d_%H%M%S)
# Backup database
mysqldump -u glpiuser -p'StrongPassword123!' glpidb | gzip > $BACKUP_DIR/glpi_db_$DATE.sql.gz
# Backup files
tar -czf $BACKUP_DIR/glpi_files_$DATE.tar.gz /var/www/html/glpi/
# Keep only last 30 days of backups
find $BACKUP_DIR -name "*.gz" -mtime +30 -delete
Add to crontab for daily backups:
0 2 * * * /usr/local/bin/backup-glpi.sh
Log Rotation
Configure log rotation for GLPI logs:
# /etc/logrotate.d/glpi
/var/log/apache2/glpi_*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 640 www-data adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null 2>&1 || true
endscript
}
Troubleshooting
Issue 1: “Internal Server Error” After Installation
Symptom: GLPI shows “500 Internal Server Error” after completing installation.
Cause: File permissions or missing PHP extensions.
Fix:
# Check Apache error log
sudo tail -f /var/log/apache2/error.log
# Fix permissions
sudo chown -R www-data:www-data /var/www/html/glpi/
sudo chmod -R 755 /var/www/html/glpi/
sudo find /var/www/html/glpi/ -type f -exec chmod 644 {} \;
# Verify PHP extensions
php -m | grep -E "(mysql|gd|curl|xml|mbstring|zip|ldap|apcu|intl|bcmath|imagick)"
If this doesn’t work: Check SELinux/AppArmor policies if enabled.
Issue 2: Database Connection Failed
Symptom: GLPI installer cannot connect to database.
Cause: Incorrect credentials or MariaDB not running.
Fix:
# Test database connection
mysql -u glpiuser -p'StrongPassword123!' -e "SHOW DATABASES;"
# Check MariaDB status
sudo systemctl status mariadb
# Verify user privileges
sudo mysql -e "SHOW GRANTS FOR 'glpiuser'@'localhost';"
If this doesn’t work: Reset MariaDB root password if forgotten.
Issue 3: Slow Performance with Large Inventory
Symptom: GLPI becomes slow when managing 1000+ assets.
Cause: Default MySQL configuration not optimized for large datasets.
Fix: Add to /etc/mysql/mariadb.conf.d/50-server.cnf:
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
query_cache_size = 128M
query_cache_type = 1
max_connections = 100
Then restart MariaDB:
sudo systemctl restart mariadb
Issue 4: Email Notifications Not Sending
Symptom: Tickets created but no email notifications sent.
Cause: Incorrect SMTP configuration or firewall blocking port 587.
Fix:
# Test SMTP connection from server
telnet smtp.yourdomain.com 587
# Check GLPI email logs
sudo tail -f /var/www/html/glpi/files/_log/notification.log
# Verify cron is running for notifications
sudo crontab -u www-data -l
If this doesn’t work: Use a local mail server like Postfix for testing.
Conclusion / Next Steps
GLPI gives you enterprise-grade IT asset management without the enterprise price tag. With your instance now running and secured, here’s what to do next:
- Import your existing assets: Use CSV import or FusionInventory agents for automatic discovery
- Set up helpdesk workflows: Configure ticket categories, SLAs, and escalation rules
- Integrate with other tools: GLPI has plugins for Slack, Mattermost, Zabbix, and more
- Train your team: Schedule a training session to get everyone using the system
Need help with setup or ongoing management? Canadian Web Hosting offers Managed Support where our team handles everything from initial configuration to daily maintenance and security updates.
For more self-hosted productivity tools, check out our comparison of OpenProject vs Redmine for project management and our roundup of 8 Self-Hosted Productivity Apps for Small Teams.
Be First to Comment