Запуск GLPI через Traefik с Docker Compose

GLPI — ITSM и учёт активов: заявки, инвентарь, контракты, база знаний. Ниже — GLPI 11 и MySQL 8.4 за Traefik на HTTPS, без публикации порта 80 наружу.

Нужны рабочий Traefik и сеть traefik_network.

1. Каталог и .env

mkdir -p glpi/data/{glpi,mysql}
cd glpi
chown -R 33:33 data/glpi
cat > .env <<'EOF'
GLPI_DB_PASSWORD=(youpassword)
MYSQL_ROOT_PASSWORD=(youpassword)
EOF

UID 33 — www-data в образе glpi/glpi; иначе каталог данных будет недоступен веб-процессу.

2. docker-compose.yml

services:
  db:
    container_name: glpi-db
    image: mysql:8.4
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: glpi
      MYSQL_USER: glpi
      MYSQL_PASSWORD: ${GLPI_DB_PASSWORD}
    volumes:
      - ./data/mysql:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 5s
      retries: 30
      start_period: 30s
    networks:
      - internal

  glpi:
    container_name: glpi-web
    image: glpi/glpi:11.0.7
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      GLPI_DB_HOST: db
      GLPI_DB_PORT: "3306"
      GLPI_DB_NAME: glpi
      GLPI_DB_USER: glpi
      GLPI_DB_PASSWORD: ${GLPI_DB_PASSWORD}
    volumes:
      - ./data/glpi:/var/glpi:z
    # ports:   # не публикуем — только Traefik
    #   - "80:80"
    labels:
      - traefik.enable=true
      - traefik.http.middlewares.glpi_https.redirectscheme.scheme=https
      - traefik.http.routers.glpi.entrypoints=web
      - traefik.http.routers.glpi.middlewares=glpi_https@docker
      - traefik.http.routers.glpi.rule=Host(`glpi.(yourdomain)`)
      - traefik.http.routers.glpi_https.entrypoints=websecure
      - traefik.http.routers.glpi_https.rule=Host(`glpi.(yourdomain)`)
      - traefik.http.routers.glpi_https.tls=true
      - traefik.http.routers.glpi_https.tls.certresolver=le
      - traefik.http.services.glpi.loadbalancer.server.port=80
    networks:
      - traefik_network
      - internal

networks:
  traefik_network:
    external: true
  internal:
    driver: bridge

⚠️ Замените (yourdomain) и пароли. Флаг :z на томе GLPI — для SELinux (Alma/Rocky); на системах без SELinux можно опустить.

MySQL остаётся во внутренней сети: снаружи виден только веб через Traefik.

3. Запуск

docker compose up -d
docker compose ps

Откройте https://glpi.(yourdomain) и пройдите мастер установки: хост БД db, база/пользователь glpi, пароль из .env.

4. Замечания

  • Бэкапьте ./data/mysql и ./data/glpi (конфиг, файлы, плагины).
  • После установки ограничьте доступ к мастеру/install по документации GLPI.
  • Для агентов инвентаризации и почты настройте URL инстанса на https://glpi.(yourdomain).
  • Не открывайте 80/3306 в NAT роутера — достаточно 80/443 на Traefik.

Итог: GLPI 11 + MySQL за HTTPS на том же стеке Docker + Traefik, что и остальные сервисы стенда.