Docker Compose lab for running a self-hosted GLPI helpdesk with the official GLPI image, MariaDB, persistent storage, and an internal-only database network.
Status: IT support / systems administration portfolio lab. The repo contains the repeatable Docker setup; the companion write-up documents the manual GLPI implementation, troubleshooting, sample tickets, roles, locations, assets, and reporting workflow.
Small IT teams need a reliable way to track support requests, assign ownership, manage assets, and measure response times. This project shows how I set up GLPI as a practical ITSM/helpdesk environment and packaged the core runtime with Docker Compose for repeatable local testing.
Full implementation story:
From Zero to Helpdesk Hero: Building an Enterprise IT Support System with GLPI
The article covers the manual setup path, including web server troubleshooting, PHP-FPM socket issues, GLPI security warnings, FakeCorp sample organization design, ticket examples, user roles, asset tracking, location-based routing, SLA tracking, and reporting.
Browser
|
v
GLPI container
| port 8080 -> container port 80
|
v
MariaDB container
|
v
Docker named volume: glpi_db
GLPI uploaded files and application data:
Docker named volume: glpi_data
MariaDB is not exposed on a host port. Only the GLPI container can reach it over the Docker network.
- Official
glpi/glpiDocker image - MariaDB 10.11
- Docker
- Docker Compose
- Named Docker volumes
- Self-hosted ITSM/helpdesk runtime using Docker Compose.
- Persistent database and GLPI application data storage.
- Environment-based database credentials through
.env. - Internal service networking with only GLPI exposed to the host.
- Database health check before GLPI startup.
- Practical IT support workflow design: users, roles, tickets, categories, assets, locations, SLA examples, and reporting notes.
Prerequisites:
- Docker
- Docker Compose
git clone https://github.com/darestack/glpi-ticketing-system.git
cd glpi-ticketing-system
cp .env.example .env
docker compose up -dOpen GLPI:
http://localhost:8080
Default GLPI credentials are created by the upstream image. Change them immediately after first login.
Database credentials are read from .env; do not commit real secrets.
docker-compose.yml GLPI and MariaDB service definitions
.env.example Local environment variable template
docs/evidence-checklist.md Screenshots and proof checklist
docs/operations-runbook.md Backup, restore, and smoke-test notes
scripts/backup-db.sh MariaDB logical backup helper
scripts/restore-db.sh MariaDB restore helper
scripts/smoke-test.sh Container and HTTP smoke test
README.md Project scope, setup, and evidence notes
- Docker Compose runtime definition in this repo.
- Companion article documenting the manual implementation and troubleshooting path.
- Article examples include sample tickets, role setup, asset tracking, locations, SLA/reporting exploration, and GLPI security hardening notes.
- Operations runbook with smoke-test, backup, and restore commands.
docs/screenshots/with GLPI dashboard, sample ticket, asset inventory, and SLA/reporting screenshots.- Redacted
.envsetup notes. - Short smoke-test command output showing containers running.
- Backup and restore command output for MariaDB.
- Upgrade notes for GLPI image/version changes.
Use docs/evidence-checklist.md and docs/operations-runbook.md before presenting the project in interviews.
- This is a local lab, not a hardened production deployment.
- The Compose file uses the official
glpi/glpi:latestimage for easy lab setup; pin a version or digest before using this outside a lab. - TLS, email ingestion, SSO/LDAP, backups, monitoring, and off-host storage are not configured yet.
- GLPI business configuration is documented in the article, but not exported as reproducible configuration in this repo.
- Pin the GLPI image version.
- Add screenshots and a short evidence checklist under
docs/. - Add a production-hardening section covering TLS, mail collectors, scheduled backups, and access control.