GLPI

GLPI (Gestion Libre de Parc Informatique, бесплатное управление ИТ-парком фр.) — бесплатная открытая система управления ИТ-инфраструктурой, предназначенная для учёта оборудования, управления инцидентами, запросами, лицензиями и другими аспектами ИТ-среды организации. Разработана на PHP, поддерживает базы данных MySQL/MariaDB.

Источники

Документация GLPI - FAQ

Обозначения

Установка на стенде

Провайдер Cloud.ru, VPS singularity2.lytkins.ru - 2 vCPU, 4 ГБ RAM, 30 ГБ HDD, ОС Ubuntu 24.04.4 LTS

liv_adm@singularity2:~$ hostnamectl status
 Static hostname: singularity2
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: b48c99416a3941fbac1a1632c8e7f72a
         Boot ID: 94d2548facbf45e5a336f131e5965273
  Virtualization: kvm
Operating System: Ubuntu 24.04.4 LTS
          Kernel: Linux 6.8.0-124-generic
    Architecture: x86-64
 Hardware Vendor: OpenStack Foundation
  Hardware Model: OpenStack Nova
Firmware Version: 1.15.0-1
   Firmware Date: Tue 2014-04-01
    Firmware Age: 12y 2month 2w 6d

Вариант 1. Docker compose

Источники

Running GLPI on Docker

mkdir ~/glpidocker
cd ~/glpidocker
nano docker-compose.yml

Содержимое файла docker-compose.yml

name: glpi
services:
  glpi:
    image: "glpi/glpi:latest"
    restart: "unless-stopped"
    volumes:
       # Using a named volume avoids permission issues on host (automatically managed by Docker)
       - glpi_data:/var/glpi
      # For GLPI 10.x, uncomment the following line to create a volume for plugins fetched from the marketplace.
      # - "./storage/glpi_marketplace:/var/www/glpi/marketplace/:rw"
    env_file: .env # Pass environment variables from .env file to the container
    depends_on:
      - db
    ports:
      - "8080:80"
    hostname: glpi
    networks:
      - glpi_b  network
  db:
    image: "mysql:8.0"   # Вместо "mysql" (который = latest = 9.7.1)
    restart: "unless-stopped"
    volumes:
       - db_data:/var/lib/mysql
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: "yes'"
      MYSQL_DATABASE: ${GLPI_DB_NAME}
      MYSQL_USER: ${GLPI_DB_USER}
      MYSQL_PASSWORD: ${GLPI_DB_PASSWORD}
    networks:
      - glpi_network
volumes:
   glpi_data:
   db_data:
networks:
  glpi_network:
    driver: bridge

Содержимое файла .env

GLPI_DB_HOST=db
GLPI_DB_PORT=3306
GLPI_DB_NAME=glpi_db
GLPI_DB_USER=glpi_user
GLPI_DB_PASSWORD=KPM(GLPI_DB_PASSWORD)

Запуск

liv_adm@singularity2:~/glpidocker$ sudo docker compose up -d
[+] up 3/3
 v Network glpi_glpi_network Created                                                                                                                                                            0.0s
 v Container glpi-db-1       Started                                                                                                                                                            0.6s
 v Container glpi-glpi-1     Started  

Проверка правильности запуска

liv_adm@singularity2:~/glpidocker$ sudo docker logs glpi-glpi-1 --tail 100
2026-06-21 03:27:26 [@glpi]
External #1: Launch queuedwebhook
2026-06-21 03:28:26 [@glpi]
External #1: Launch queuedwebhook
2026-06-21 03:29:27 [@glpi]
External #1: Launch pendingreason_autobump_autosolve
2026-06-21 03:29:27 [@glpi]
External #2: Launch queuedwebhook
2026-06-21 03:30:27 [@glpi]
External #1: Launch queuedwebhook
2026-06-20 22:48:14 [@glpi]
[login] 3: glpi вошел в систему с IP 45.152.86.79
[2026-06-20 22:27:04] glpi.WARNING:   *** Test logger
[2026-06-20 22:58:42] glpi.WARNING:   *** Test logger
[2026-06-20 22:59:43] glpi.WARNING:   *** Test logger
  ./vendor/symfony/http-kernel/HttpKernel.php:181    Glpi\Controller\InventoryController->index()
  ./vendor/symfony/http-kernel/HttpKernel.php:76     Symfony\Component\HttpKernel\HttpKernel->handleRaw()
  ...tener/CatchInventoryAgentRequestListener.php:77 Symfony\Component\HttpKernel\HttpKernel->handle()
  ...ymfony/event-dispatcher/EventDispatcher.php:260 Glpi\Kernel\Listener\RequestListener\CatchInventoryAgentRequestListener->onKernelRequest()
  ...ymfony/event-dispatcher/EventDispatcher.php:220 Symfony\Component\EventDispatcher\EventDispatcher::{closure:Symfony\Component\EventDispatcher\EventDispatcher::optimizeListeners():255}()
  ...symfony/event-dispatcher/EventDispatcher.php:56 Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
  ./vendor/symfony/http-kernel/HttpKernel.php:157    Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
  ./vendor/symfony/http-kernel/HttpKernel.php:76     Symfony\Component\HttpKernel\HttpKernel->handleRaw()
  ./vendor/symfony/http-kernel/Kernel.php:208        Symfony\Component\HttpKernel\HttpKernel->handle()
  ./public/index.php:71                              Symfony\Component\HttpKernel\Kernel->handle()
[entrypoint] Waiting for database to be ready...
[entrypoint] Still waiting for database to be ready... 119 attempts left.
[entrypoint] Still waiting for database to be ready... 118 attempts left.
[entrypoint] The database is now ready and reachable.
[2026-06-21 03:42:40] glpi.WARNING:   *** Test logger
GLPI is installed, and auto-update is enabled. Starting update...
[2026-06-21 03:42:42] glpi.WARNING:   *** Test logger


================================================================
Welcome to

 ██████╗ ██╗     ██████╗ ██╗
██╔════╝ ██║     ██╔══██╗██║
██║  ███╗██║     ██████╔╝██║
██║   ██║██║     ██╔═══╝ ██║
╚██████╔╝███████╗██║     ██║
 ╚═════╝ ╚══════╝╚═╝     ╚═╝

https://glpi-project.org
2026-06-21 03:42:42,930 WARN No file matches via include "/etc/supervisor/conf.d/*.conf"
2026-06-21 03:42:42,930 WARN No file matches via include "/etc/supervisor/conf.d/*.conf"
2026-06-21 03:42:42,931 INFO Set uid to user 33 succeeded
2026-06-21 03:42:42,931 INFO Set uid to user 33 succeeded
2026-06-21 03:42:42,959 INFO supervisord started with pid 1
2026-06-21 03:42:42,959 INFO supervisord started with pid 1
2026-06-21 03:42:43,962 INFO spawned: 'apache2' with pid 29
2026-06-21 03:42:43,962 INFO spawned: 'apache2' with pid 29
2026-06-21 03:42:43,964 INFO spawned: 'glpi-cron' with pid 30
2026-06-21 03:42:43,964 INFO spawned: 'glpi-cron' with pid 30
[INFO] GLPI cron is enabled. Starting worker tasks...
[scheduler] Waiting for database to be ready...
[scheduler] The database is now ready and reachable.
[GLPI Cron] [INFO] Scheduler started (mode=interval, command=php /var/www/glpi/front/cron.php)
[Sun Jun 21 03:42:44.123767 2026] [mpm_prefork:notice] [pid 29:tid 29] AH00163: Apache/2.4.67 (Debian) configured -- resuming normal operations
[Sun Jun 21 03:42:44.123846 2026] [core:notice] [pid 29:tid 29] AH00094: Command line: 'apache2 -D FOREGROUND'
2026-06-21 03:42:44 [@glpi]
External #1: Launch queuedwebhook
[GLPI Cron] [INFO] Next run in 60s (2026-06-21 03:43:44)
2026-06-21 03:42:45,294 INFO success: apache2 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2026-06-21 03:42:45,294 INFO success: apache2 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2026-06-21 03:42:45,294 INFO success: glpi-cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2026-06-21 03:42:45,294 INFO success: glpi-cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Проверить в консоли Portainer журнал контейнера СУБД MySQL

2026-06-21 03:42:38+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.46-1.el9 started.
2026-06-21 03:42:38+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-06-21 03:42:38+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.46-1.el9 started.
'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
2026-06-21T03:42:39.048350Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2026-06-21T03:42:39.050965Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.46) starting as process 1
2026-06-21T03:42:39.060952Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-06-21T03:42:39.903789Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-06-21T03:42:40.415799Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2026-06-21T03:42:40.415863Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2026-06-21T03:42:40.432268Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2026-06-21T03:42:40.479725Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2026-06-21T03:42:40.479773Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.46'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

Nota bene! Особенность VPS в Cloud.ru - для доступа к порту tcp/8080 необходимо добавить правило в группу безопасности, соответствующую VPS.

Вход в консоль GLPI

пароль по умолчанию glpi/glpi

Установка паролей встроенных учётных записей

  • glpi = KPM(glpi)
  • post-only=KPM(post-only)
  • tech=KPM(tech)
  • normal=KPM(normal)

Welcome to GLPI! 

Вишенки на тортик :)

1. Для промышленного использования создать CNAME-запись в разделах DNS в CloudFlare, BeGet. Сертификат для https выдать на этот CNAME.

glpi CNAME singularity2.lytkins.ru

2. Настроить nginx таким образом, что при переходе по URL https://glpi.lytkins.ru открывалась бы консоль GLPI.

 

Добавить комментарий