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:

  1. License acceptance – Accept the GPL license
  2. System check – Verify all PHP extensions are installed
  3. Database configuration – Enter database details:
    • Database: glpidb
    • User: glpiuser
    • Password: StrongPassword123! (or your chosen password)
    • Host: localhost
  4. Data initialization – GLPI will create the database schema
  5. Admin account creation – Create your first administrator account

Configuration

Basic Setup

After installation, log in to GLPI and configure these essential settings:

  1. 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)
  2. Entities (Administration ? Entities):
    • Create entities for different departments or locations
    • Set up parent-child relationships for hierarchical organizations
  3. 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:

  1. 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
  2. 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
  3. 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:

  1. Import your existing assets: Use CSV import or FusionInventory agents for automatic discovery
  2. Set up helpdesk workflows: Configure ticket categories, SLAs, and escalation rules
  3. Integrate with other tools: GLPI has plugins for Slack, Mattermost, Zabbix, and more
  4. 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.