diff --git a/.context/agents/README.md b/.context/agents/README.md index 1b6642c..e50c7ac 100644 --- a/.context/agents/README.md +++ b/.context/agents/README.md @@ -28,5 +28,6 @@ This directory contains ready-to-customize playbooks for AI agents collaborating - [Documentation Index](../docs/README.md) - [Agent Knowledge Base](../../AGENTS.md) - [Contributor Guidelines](../../CONTRIBUTING.md) +- [Release Blog Post (GLPI 12.0.0)](../../content/en/blog/glpi-12-0-0/index.md) - [Release Blog Post (GLPI 11.0.11)](../../content/en/blog/glpi-11-0-11/index.md) - [Release Blog Post (GLPI 12.0.0-rc1)](../../content/en/blog/glpi-12-0-0-rc1.md) diff --git a/.context/docs/README.md b/.context/docs/README.md index 9ac25b9..14e5138 100644 --- a/.context/docs/README.md +++ b/.context/docs/README.md @@ -5,6 +5,8 @@ Welcome to the repository knowledge base. Start with the project overview, then **Blog Posts Reference** The following blog posts have been added to the documentation index: +- [GLPI 12.0.0: Official Major Release and EF-TECH Cloud-Native Distribution](../../content/en/blog/glpi-12-0-0/index.md) (en) — Official release of GLPI 12.0.0, EF-TECH Helm chart 2.12.0 and unprivileged Docker images, rewritten Knowledge Base, Session Manager, and Sudo Mode +- [GLPI 12.0.0: Lançamento Oficial da Nova Versão Major e Distribuição Cloud-Native da EF-TECH](../../content/pt-br/blog/glpi-12-0-0/index.md) (pt-br) — Lançamento oficial do GLPI 12.0.0, Helm chart 2.12.0 e imagens Docker unprivileged da EF-TECH, nova Base de Conhecimento, Gerenciador de Sessões e Modo Sudo - [GLPI 11.0.11: Security Release, Plugin Fixes, and New Features in eftechcombr/glpi](../../content/en/blog/glpi-11-0-11/index.md) (en) — EF-TECH release of GLPI 11.0.11 security release superseding 11.0.10, fixing 6 high vulnerabilities, custom Nginx config templates, and MySQL SSL support - [GLPI 11.0.11: Release de Segurança, Correção de Plugins e Novos Recursos no eftechcombr/glpi](../../content/pt-br/blog/glpi-11-0-11/index.md) (pt-br) — Lançamento da EF-TECH do GLPI 11.0.11 corrigindo 6 vulnerabilidades de alta severidade, substituindo 11.0.10, templates customizados de Nginx e suporte a SSL no MySQL - [GLPI 12.0.0-rc1 and Helm Chart 2.12.0: Subchart Modernization, Security Hardening, and High Availability](../../content/en/blog/glpi-12-0-0-rc1.md) (en) — EF-TECH release of GLPI 12.0.0-rc1 and Helm Chart 2.12.0 with Valkey subchart, PDB, HPA, S3 backup, and readOnlyRootFilesystem hardening diff --git a/.context/plans/README.md b/.context/plans/README.md index 9f391ea..dac8d30 100644 --- a/.context/plans/README.md +++ b/.context/plans/README.md @@ -7,9 +7,10 @@ This directory contains plans for coordinating work across documentation and pla 2. [Blog Hermes K8s Install](./blog-hermes-k8s-install.md) 3. [Blog Image Support](./blog-image-support.md) 4. [GLPI 11.0.11 Announcement](./glpi-11-0-11-announcement.md) -5. [Glpi 12 0 0 Rc1 Announcement](./glpi-12-0-0-rc1-announcement.md) -6. [Oracle Always Free Post](./oracle-always-free-post.md) -7. [Rfc 10008 Blog Post](./rfc-10008-blog-post.md) +5. [GLPI 12.0.0 Announcement](./glpi-12-0-0-announcement.md) +6. [Glpi 12 0 0 Rc1 Announcement](./glpi-12-0-0-rc1-announcement.md) +7. [Oracle Always Free Post](./oracle-always-free-post.md) +8. [Rfc 10008 Blog Post](./rfc-10008-blog-post.md) ## How To Create Or Update Plans - Run "ai-context plan " to scaffold a new plan template. diff --git a/.context/plans/glpi-12-0-0-announcement.md b/.context/plans/glpi-12-0-0-announcement.md new file mode 100644 index 0000000..c04db74 --- /dev/null +++ b/.context/plans/glpi-12-0-0-announcement.md @@ -0,0 +1,103 @@ +--- +status: active +generated: 2026-10-09 +agents: + - type: "documentation-writer" + role: "Draft comprehensive GLPI 12.0.0 official release announcement posts in PT-BR and EN" + - type: "frontend-specialist" + role: "Generate cover PNG image and integrate media into Hugo posts" + - type: "devops-specialist" + role: "Validate Hugo build, link checks, and manage git branch and PR" +docs: + - "project-overview.md" + - "architecture.md" + - "development-workflow.md" +phases: + - id: "phase-1" + name: "Discovery & Alignment" + prevc: "P" + agent: "documentation-writer" + - id: "phase-2" + name: "Implementation & Iteration" + prevc: "E" + agent: "documentation-writer" + - id: "phase-3" + name: "Validation & Handoff" + prevc: "V" + agent: "devops-specialist" +--- + +# GLPI 12.0.0 Official Release and EF-TECH Distribution Post Plan + +> Write blog posts in Portuguese and English announcing the official release of GLPI 12.0.0 and EF-TECH Helm chart 2.12.0 / Docker containers, generate cover image, validate build, and create PR. + +## Task Snapshot +- **Primary goal:** Publish announcement blog posts in Portuguese (`content/pt-br/blog/glpi-12-0-0/index.md`) and English (`content/en/blog/glpi-12-0-0/index.md`) announcing the official release of GLPI 12.0.0 by `glpi-project/glpi` and EF-TECH distribution `v12.0.0` (PR #214), Helm chart `glpi-2.12.0` (appVersion: "12.0.0"), Docker images `eftechcombr/glpi:php-fpm-12.0.0` and `eftechcombr/glpi:nginx-12.0.0`, with cover PNG image and validated links. +- **Success signal:** Clean Hugo production build (`hugo --gc --minify`), 0 broken links with lychee, both language versions published, and a clean Git commit / PR created and merged. +- **Key references:** + - [Documentation Index](../docs/README.md) + - [Agent Handbook](../agents/README.md) + - [Plans Index](./README.md) + - [GitHub Repository eftechcombr/glpi](https://github.com/eftechcombr/glpi) + - [Upstream GLPI Releases](https://github.com/glpi-project/glpi/releases) + - [GLPI User Documentation](https://help.glpi-project.org) + +## Codebase Context +- **Hugo Site:** Multilingual setup with `pt-br` as default and `en` language section. +- **Blog Post Locations:** `content/pt-br/blog/glpi-12-0-0/index.md` and `content/en/blog/glpi-12-0-0/index.md`. +- **Assets:** `static/img/blog/glpi-12-0-0/cover.png`, `content/pt-br/blog/glpi-12-0-0/cover.png`, and `content/en/blog/glpi-12-0-0/cover.png` generated via Python PIL script. + +## Agent Lineup +| Agent | Role in this plan | Playbook | First responsibility focus | +| --- | --- | --- | --- | +| Documentation Writer | Technical content creation | [Documentation Writer](../agents/documentation-writer.md) | Draft accurate, engaging release posts in PT-BR and EN | +| Frontend Specialist | Media & Image generation | [Frontend Specialist](../agents/frontend-specialist.md) | Design and generate cover PNG image matching site theme | +| DevOps Specialist | Build & verification | [Devops Specialist](../agents/devops-specialist.md) | Validate Hugo build, verify links, manage git branch and PR | + +## Documentation Touchpoints +| Guide | File | Primary Inputs | +| --- | --- | --- | +| Project Overview | [project-overview.md](../docs/project-overview.md) | Multilingual content structure, blog layout | +| Development Workflow | [development-workflow.md](../docs/development-workflow.md) | Hugo commands, link trailing slash requirements, PR process | + +## Working Phases + +### Phase 1 — Discovery & Alignment +> **Primary Agent:** `documentation-writer` - [Playbook](../agents/documentation-writer.md) + +**Objective:** Inspect release details from `glpi-project/glpi` (released October 7, 2026 after 3 RCs) and `eftechcombr/glpi` (release `v12.0.0`, PR #214 merged October 9, 2026, chart `glpi-2.12.0`), structure post content and image generation script. + +**Tasks** +| # | Task | Agent | Status | Deliverable | +|---|------|-------|--------|-------------| +| 1.1 | Analyze GLPI 12.0.0 features: Knowledge Base rewrite, Session Manager, Step-Up/Sudo mode, Group OLAs, Accessibility, Security, EOL of GLPI 10 | `documentation-writer` | completed | Content outline | +| 1.2 | Design cover image concept and specifications | `frontend-specialist` | completed | Python PIL generation script | + +--- + +### Phase 2 — Implementation & Iteration +> **Primary Agent:** `documentation-writer` - [Playbook](../agents/documentation-writer.md) + +**Objective:** Generate PNG cover image, author comprehensive blog posts in PT-BR and EN with proper frontmatter, upgrade guide, deployment examples, and internal links. + +**Tasks** +| # | Task | Agent | Status | Deliverable | +|---|------|-------|--------|-------------| +| 2.1 | Generate 1200x630 cover PNG at `static/img/blog/glpi-12-0-0/cover.png` and content bundles | `frontend-specialist` | completed | Cover image PNG | +| 2.2 | Author `content/pt-br/blog/glpi-12-0-0/index.md` | `documentation-writer` | completed | Portuguese blog post | +| 2.3 | Author `content/en/blog/glpi-12-0-0/index.md` | `documentation-writer` | completed | English blog post | +| 2.4 | Update documentation indices in `.context/docs/README.md`, `.context/agents/README.md`, and `.context/plans/README.md` | `documentation-writer` | completed | Documentation updates | + +--- + +### Phase 3 — Validation & Handoff +> **Primary Agent:** `devops-specialist` - [Playbook](../agents/devops-specialist.md) + +**Objective:** Validate Hugo build, verify all links and image paths, commit changes, create PR and monitor checks. + +**Tasks** +| # | Task | Agent | Status | Deliverable | +|---|------|-------|--------|-------------| +| 3.1 | Test build with `hugo --gc --minify` | `devops-specialist` | completed | Build verification | +| 3.2 | Check image rendering and link integrity with lychee | `devops-specialist` | completed | Verified assets | +| 3.3 | Create git branch, commit, push, create PR and verify CI | `devops-specialist` | completed | Pull Request | diff --git a/content/en/blog/glpi-12-0-0/cover.png b/content/en/blog/glpi-12-0-0/cover.png new file mode 100644 index 0000000..ab387a8 Binary files /dev/null and b/content/en/blog/glpi-12-0-0/cover.png differ diff --git a/content/en/blog/glpi-12-0-0/index.md b/content/en/blog/glpi-12-0-0/index.md new file mode 100644 index 0000000..225c430 --- /dev/null +++ b/content/en/blog/glpi-12-0-0/index.md @@ -0,0 +1,284 @@ +--- +title: "GLPI 12.0.0: Official Major Release and EF-TECH Cloud-Native Distribution" +description: "GLPI 12.0.0 is officially released. EF-TECH delivers unprivileged Docker images and Helm chart 2.12.0 with Valkey and MariaDB subcharts, rewritten Knowledge Base, Session Manager, Sudo Mode, and high availability." +summary: "GLPI 12.0.0 was officially launched on October 7, 2026, marking the next stable major milestone for open-source ITSM. EF-TECH's cloud-native distribution (eftechcombr/glpi) is now available with Helm chart glpi-2.12.0 and unprivileged Alpine container images. Discover the rewritten Knowledge Base, active Session Manager, Step-Up Auth / Sudo Mode, Group-managed OLAs, GLPI 10 End-of-Life (EOL), and the practical migration guide." +date: 2026-10-09 +draft: false +tags: ["glpi", "docker", "kubernetes", "helm", "cloud-native", "itsm"] +categories: ["infrastructure"] +featureimage: "cover.png" +featureimagecaption: "GLPI 12.0.0 — Official major release and cloud-native Docker & Kubernetes distribution by EF-TECH" +--- + +Today, October 9, 2026, **EF-TECH** is proud to announce the official release of version **v12.0.0** of its cloud-native GLPI distribution in the [eftechcombr/glpi](https://github.com/eftechcombr/glpi) repository (PR #214). This release follows the upstream General Availability (GA) publication of **GLPI 12.0.0** by the [glpi-project/glpi](https://github.com/glpi-project/glpi) team on October 7, 2026 — reaching full production stability after three rigorous Release Candidate test cycles (rc1, rc2, and rc3). + +Alongside this milestone, we are releasing the new **Helm chart `glpi-2.12.0`** (with `appVersion: "12.0.0"`) on the official EF-TECH charts repository, along with production-grade container images **`eftechcombr/glpi:php-fpm-12.0.0`** and **`eftechcombr/glpi:nginx-12.0.0`**. + +![GLPI 12.0.0](cover.png) + +--- + +## What's New in Upstream GLPI 12.0.0 + +GLPI 12.0.0 represents a major leap forward for open-source IT Service Management (ITSM) and IT Asset Management (ITAM), pairing a modernized user experience with strengthened enterprise security and governance controls. + +### 1. Complete Knowledge Base Rework + +The Knowledge Base frontend has been redesigned from the ground up: +- Intuitive tree navigation and streamlined article categorization, drastically reducing ticket resolution time via user self-service portals. +- Fast, intelligent live search with enhanced keyword highlighting and relevant suggestions. +- Clean and responsive layout for standard operating procedures (SOP), technical guides, and FAQs. +- Revamped media, attachment, and code snippet rendering engine. + +### 2. Active Session Management + +To support stringent enterprise security standards and regulatory compliance (such as ISO 27001, SOC 2, and GDPR), GLPI 12 introduces centralized session monitoring: +- Complete visibility into active user sessions: originating IP address, user-agent / browser info, session start time, and last observed activity timestamp. +- Remote session revocation: administrators can immediately invalidate specific or all active sessions for a compromised account. +- Self-service inspection for technicians and end users to audit and terminate forgotten sessions across external workstations or mobile devices. + +### 3. Step-Up Authentication and Sudo Mode + +Sensitive administrative actions — such as altering profile permissions, performing bulk asset deletions, or updating external identity providers (LDAP, SAML, OAuth) — are now protected by **Sudo Mode / Step-Up Authentication**: +- Operators are prompted to re-authenticate (via password or secondary MFA factor) before executing sensitive administrative operations. +- This defense-in-depth mechanism ensures that active unattended browser tabs on administrative workstations cannot be hijacked or misused. + +### 4. Group-Managed OLAs (Operational Level Agreements) + +In advanced ITSM workflows, Operational Level Agreements (OLAs) define internal service-level targets between internal support teams: +- GLPI 12 introduces native support for multiple OLAs directly assigned to technician groups (e.g., networking, sysadmin, database, application support). +- Supports cascading deadlines and SLA escalation as tickets pass between different tiers and teams. + +### 5. In-Depth Accessibility (RGAA & RAWeb) + +This release marks the first comprehensive development cycle aligned with international accessibility guidelines (WCAG) as well as the French **RGAA** (Référentiel Général d'Amélioration de l'Accessibilité) and **RAWeb** standards: +- Full keyboard-only navigability across core ticket workflows, inventory management, and reporting dashboards. +- Balanced visual contrast ratios and native screen reader compatibility. + +### 6. Core Security Hardening + +The upstream codebase underwent a deep hardening cycle: +- Strengthened defenses against SQL injection (SQLi) and cross-site request forgery (CSRF). +- Strict typing and strict input validation across all internal service APIs and form processing endpoints. + +### 7. Brand New User Documentation Portal + +End-user and administrator guides have been rewritten and published at the official portal [help.glpi-project.org](https://help.glpi-project.org), featuring modern tutorials, visual workflows, and ITSM best practices. + +### 8. End of Life (EOL) for GLPI 10.x + +An essential lifecycle advisory for system administrators: **the GLPI 10.x release cycle has officially reached End-of-Life (EOL)**. +- **GLPI 10.0.28** serves as the final maintenance release of the 10.x series. +- Going forward, **no further bug fixes will be provided for GLPI 10**. +- Organizations running GLPI 10 should immediately plan their migration to supported versions (GLPI 11.x or GLPI 12.x). + +--- + +## Key Features in EF-TECH's Cloud-Native Distribution + +The [eftechcombr/glpi](https://github.com/eftechcombr/glpi) project packages GLPI specifically for Kubernetes and containerized production environments. + +In release **12.0.0** and Helm chart **`glpi-2.12.0`**, highlights include: + +| Feature | Technical Highlights | +|---|---| +| **Unprivileged (Non-Root) Images** | Lightweight Alpine-based containers running PHP-FPM and Nginx under unprivileged UID 10001 / GID 10001. | +| **Valkey Subchart (`helmforge/valkey`)** | Modern Valkey subchart replacing inline Redis, with full support for `externalCache` connecting to managed enterprise cache clusters. | +| **MariaDB Subchart (`helmforge/mariadb`)** | Decoupled database subchart with dynamic secret generation and support for `externalDatabase` with `existingSecret`. | +| **Custom Nginx Configuration Templates** | Support for mounting custom `nginx.conf.template` files via ConfigMap (PR #209), allowing operators to disable the IPv6 listener in IPv4-only clusters. | +| **Database SSL/TLS Connections** | Native encrypted database connections (`GLPI_DB_SSL`, `GLPI_DB_SSL_CA`, `GLPI_DB_SSL_VERIFY`) compatible with AWS Aurora MySQL, Google Cloud SQL, and Azure Database for MySQL (PR #207). | +| **Enterprise High Availability (HA)** | Built-in PodDisruptionBudget (PDB) and HorizontalPodAutoscaler (HPA) to seamlessly handle service desk traffic spikes. | +| **Container Hardening** | Support for `readOnlyRootFilesystem`, `priorityClassName`, strict `securityContext`, and Bitnami-style resource presets (`resourcesPreset`). | +| **Operational Automation** | Automated maintenance CronJob (`bin/console glpi:cron`) conditioned on database readiness, and optional automated file backup CronJob targeting S3-compatible object storage. | + +--- + +## How to Install or Upgrade + +### 1. Kubernetes Deployment via Helm Chart + +The EF-TECH Helm chart provides the recommended method for deploying GLPI on Kubernetes clusters. + +#### Step 1: Add the EF-TECH Helm Repository + +```bash +# Add or update the official EF-TECH Helm repository +helm repo add eftech https://eftechcombr.github.io/glpi/charts +helm repo update +``` + +#### Step 2: Configure `values.yaml` + +Create a production-ready `values.yaml` configuration file: + +```yaml +# values.yaml for GLPI 12.0.0 production deployment +replicaCount: 2 + +image: + repository: eftechcombr/glpi + tag: "php-fpm-12.0.0" + pullPolicy: IfNotPresent + +nginx: + enabled: true + image: + repository: eftechcombr/glpi + tag: "nginx-12.0.0" + resourcesPreset: "small" + +autoscaling: + enabled: true + minReplicas: 2 + maxReplicas: 8 + targetCPUUtilizationPercentage: 75 + targetMemoryUtilizationPercentage: 80 + +podDisruptionBudget: + enabled: true + minAvailable: 1 + +securityContext: + readOnlyRootFilesystem: true + runAsNonRoot: true + runAsUser: 10001 + +# Enable Valkey subchart for fast session handling and cache +valkey: + enabled: true + +# Enable MariaDB subchart for internal persistence +mariadb: + enabled: true + auth: + database: glpi + username: glpi + +cron: + enabled: true + schedule: "*/5 * * * *" +``` + +#### Step 3: Run the Helm Upgrade/Install Command + +```bash +helm upgrade --install glpi eftech/glpi \ + --namespace glpi \ + --create-namespace \ + --version 2.12.0 \ + -f values.yaml +``` + +--- + +### 2. Standalone Deployment with Docker Compose + +For organizations operating standalone container environments on Docker engines or virtual machines: + +```yaml +# docker-compose.yml +services: + glpi-db: + image: mariadb:11.4 + restart: unless-stopped + environment: + - MARIADB_ROOT_PASSWORD=your_secure_root_password + - MARIADB_DATABASE=glpi + - MARIADB_USER=glpi + - MARIADB_PASSWORD=your_secure_glpi_password + volumes: + - db_data:/var/lib/mysql + networks: + - glpi-net + + glpi-cache: + image: valkey/valkey:8.0-alpine + restart: unless-stopped + networks: + - glpi-net + + glpi-fpm: + image: eftechcombr/glpi:php-fpm-12.0.0 + restart: unless-stopped + environment: + - GLPI_DB_HOST=glpi-db + - GLPI_DB_NAME=glpi + - GLPI_DB_USER=glpi + - GLPI_DB_PASSWORD=your_secure_glpi_password + - GLPI_DB_SSL=false + volumes: + - glpi_files:/var/www/glpi/files + - glpi_plugins:/var/www/glpi/marketplace + depends_on: + - glpi-db + - glpi-cache + networks: + - glpi-net + + glpi-nginx: + image: eftechcombr/glpi:nginx-12.0.0 + restart: unless-stopped + ports: + - "8080:80" + environment: + - GLPI_PHPFPM_HOST=glpi-fpm + - GLPI_PHPFPM_PORT=9000 + depends_on: + - glpi-fpm + networks: + - glpi-net + +volumes: + db_data: + glpi_files: + glpi_plugins: + +networks: + glpi-net: + driver: bridge +``` + +Start the stack with: + +```bash +docker compose up -d +``` + +--- + +## Migration Guide: Moving from GLPI 10.x / 11.x to GLPI 12.0.0 + +Upgrading to a major release requires deliberate planning to ensure business continuity: + +1. **Mandatory Full Backups:** + - Create a consistent snapshot of your MariaDB/MySQL database (`mysqldump --single-transaction --quick glpi > backup_glpi_pre12.sql`). + - Back up the entire GLPI persistent files directory (`/var/www/glpi/files/`). +2. **Review Plugin Compatibility:** + - Because GLPI 12 features overhauled UI components and rewritten Knowledge Base internals, check that any installed plugins are officially certified for GLPI 12 on the GLPI Marketplace. +3. **Execute Database Schema Migration:** + - When deploying via container, the entrypoint validates and triggers the update automatically. Alternatively, run the CLI tool: + ```bash + php bin/console db:update + ``` +4. **Cache Invalidation:** + - Flush and regenerate the application cache after schema updates: + ```bash + php bin/console cache:clear + ``` + +--- + +## Official Links and References + +- [eftechcombr/glpi GitHub Repository](https://github.com/eftechcombr/glpi) +- [eftechcombr/glpi Releases and Changelog](https://github.com/eftechcombr/glpi/releases) +- [Official EF-TECH Helm Charts Repository](https://eftechcombr.github.io/glpi/) +- [GLPI on Artifact Hub](https://artifacthub.io/packages/helm/eftech/glpi) +- [Upstream GLPI 12.0.0 Release Notes](https://github.com/glpi-project/glpi/releases/tag/12.0.0) +- [GLPI User Help Documentation](https://help.glpi-project.org) + +--- + +**EF-TECH** specializes in enterprise cloud architecture, Kubernetes, and Site Reliability Engineering (SRE). We design, migrate, and support mission-critical GLPI deployments with enterprise-grade high availability, security hardening, and GitOps automation. + +Looking to upgrade your GLPI environment or deploy on enterprise Kubernetes? [Contact us](/en/contato/) to speak with our cloud engineers. Learn more about our [GLPI enterprise solution](/en/produtos/glpi/) and explore additional technical articles on our [blog](/en/blog/). diff --git a/content/pt-br/blog/glpi-12-0-0/cover.png b/content/pt-br/blog/glpi-12-0-0/cover.png new file mode 100644 index 0000000..ab387a8 Binary files /dev/null and b/content/pt-br/blog/glpi-12-0-0/cover.png differ diff --git a/content/pt-br/blog/glpi-12-0-0/index.md b/content/pt-br/blog/glpi-12-0-0/index.md new file mode 100644 index 0000000..a2ddd15 --- /dev/null +++ b/content/pt-br/blog/glpi-12-0-0/index.md @@ -0,0 +1,284 @@ +--- +title: "GLPI 12.0.0: Lançamento Oficial da Nova Versão Major e Distribuição Cloud-Native da EF-TECH" +description: "O GLPI 12.0.0 foi lançado oficialmente. A EF-TECH disponibiliza as imagens Docker unprivileged e o Helm chart 2.12.0 com subcharts Valkey e MariaDB, nova Base de Conhecimento, Gerenciador de Sessões, Modo Sudo e alta disponibilidade." +summary: "O GLPI 12.0.0 chegou em 7 de outubro de 2026 como a nova versão major estável do principal ITSM open source do mercado. A distribuição cloud-native da EF-TECH (eftechcombr/glpi) já está disponível com o Helm chart glpi-2.12.0 e imagens Docker em Alpine unprivileged. Conheça a nova Base de Conhecimento reescrita do zero, o Gerenciador de Sessões ativas, a autenticação Step-Up (Modo Sudo), OLAs por grupo, o ciclo de vida com o EOL do GLPI 10 e o guia prático de migração e deploy." +date: 2026-10-09 +draft: false +tags: ["glpi", "docker", "kubernetes", "helm", "cloud-native", "itsm"] +categories: ["infraestrutura"] +featureimage: "cover.png" +featureimagecaption: "GLPI 12.0.0 — Lançamento oficial da versão major e distribuição cloud-native com Docker e Kubernetes pela EF-TECH" +--- + +A **EF-TECH** anuncia hoje, 9 de outubro de 2026, a disponibilização oficial da versão **v12.0.0** da sua distribuição cloud-native para o GLPI no repositório [eftechcombr/glpi](https://github.com/eftechcombr/glpi) (PR #214). O lançamento acompanha a publicação oficial do **GLPI 12.0.0** pelo time upstream do [glpi-project/glpi](https://github.com/glpi-project/glpi) em 7 de outubro de 2026 — que atinge o status de General Availability (GA) estável após três rodadas de testes rigorosos nos Release Candidates (rc1, rc2 e rc3). + +Com esta nova versão, fornecemos o novo **Helm chart `glpi-2.12.0`** (com `appVersion: "12.0.0"`) no repositório oficial de charts da EF-TECH, além das imagens de contêiner **`eftechcombr/glpi:php-fpm-12.0.0`** e **`eftechcombr/glpi:nginx-12.0.0`**. + +![GLPI 12.0.0](cover.png) + +--- + +## O que há de novo no GLPI 12.0.0 Upstream + +O GLPI 12.0.0 representa um salto arquitetural no gerenciamento de serviços de TI (ITSM) e gestão de ativos de TI (ITAM), combinando uma experiência de usuário renovada com controles corporativos aprofundados de governança e segurança. + +### 1. Base de Conhecimento Totalmente Reescrita (Knowledge Base Rework) + +A Base de Conhecimento recebeu uma reconstrução completa do zero em seu frontend. A nova interface oferece: +- Navegação em árvore e categorização visual intuitiva, reduzindo o tempo de resolução de chamados pelo próprio usuário no catálogo de autoatendimento. +- Busca instantânea inteligente com filtros aprimorados e destaque de termos. +- Visualização limpa e responsiva para artigos técnicos, procedimentos operacionais padrão (SOP) e perguntas frequentes (FAQ). +- Mecanismo modernizado para inserção e renderização de mídias, anexos e códigos técnicos. + +### 2. Gerenciador de Sessões Ativas (Session Management) + +Para atender a exigências de auditoria de segurança e conformidade (como ISO 27001 e LGPD), o GLPI 12 introduz um controle centralizado de sessões ativas: +- Visibilidade completa de conexões por usuário: endereço IP de origem, dispositivo/navegador (*User-Agent*), data de início e última atividade registrada. +- Capacidade de encerramento remoto de sessões específicas ou em massa por administradores de sistema caso um token ou credencial seja comprometido. +- Autoinspeção para os próprios operadores, permitindo desconectar dispositivos esquecidos conectados em outros pontos de acesso. + +### 3. Step-Up Authentication e Modo Sudo + +Ações administrativas altamente sensíveis — como alteração de privilégios de perfis, exclusão massiva de ativos de infraestrutura ou configuração de autenticação externa (LDAP/SAML/OAuth) — agora contam com o **Modo Sudo / Step-Up Authentication**: +- O operador é desafiado a revalidar suas credenciais (ou segundo fator de autenticação) antes de prosseguir com alterações críticas. +- Essa camada de defesa em profundidade impede que sessões administrativas deixadas abertas em estações de trabalho sejam exploradas indevidamente por terceiros. + +### 4. Acordos de Nível Operacional por Grupo (Group-managed OLAs) + +No gerenciamento avançado de tickets e SLAs, os Acordos de Nível Operacional (OLA - *Operational Level Agreements*) definem os prazos de resposta e resolução entre equipes internas de suporte: +- O GLPI 12 adiciona suporte nativo a múltiplos OLAs diretamente atrelados a grupos técnicos de atendimento (e.g., redes, infraestrutura, desenvolvimento). +- Permite escalonamento e transição de prazos em cascata conforme o chamado transita entre diferentes squads e níveis de atendimento. + +### 5. Acessibilidade Aprofundada (RGAA & RAWeb) + +Este é o primeiro ciclo completo do GLPI projetado em estrita conformidade com os padrões de acessibilidade web internacionais (WCAG) e normas de referência como o **RGAA** (Référentiel Général d'Amélioration de l'Accessibilité) e **RAWeb**: +- Navegação fluida via teclado em todas as telas principais de tickets, inventário e relatórios. +- Contraste visual balanceado e compatibilidade total com leitores de tela assistivos. + +### 6. Hardening de Segurança no Core + +O núcleo do GLPI recebeu um ciclo intensivo de endurecimento de segurança: +- Prevenção reforçada contra injeções SQL (*SQL Injection*) e ataques de falsificação de requisições entre sites (*CSRF*). +- Validação estrita de tipos e sanitização aprofundada de inputs em todas as APIs internas e endpoints de processamento de formulários. + +### 7. Nova Documentação Oficial de Usuários + +A documentação para operadores e usuários finais foi totalmente reestruturada e republicada no portal [help.glpi-project.org](https://help.glpi-project.org), trazendo tutoriais passo a passo, boas práticas de ITSM e guias visuais atualizados. + +### 8. Fim de Vida da Linha GLPI 10 (End-of-Life) + +Um comunicado crucial para equipes de operações e infraestrutura: **o ciclo de vida do GLPI 10.x foi oficialmente encerrado**. +- O **GLPI 10.0.28** é a versão final desta linha. +- A partir de agora, a linha 10.x **não receberá mais correções de bugs**. +- As organizações que ainda operam no GLPI 10 devem planejar com urgência a homologação e migração para as versões mantidas (linhas 11.x e 12.x). + +--- + +## Destaques da Distribuição Cloud-Native da EF-TECH + +O projeto open source [eftechcombr/glpi](https://github.com/eftechcombr/glpi) empacota o GLPI com foco em arquiteturas em nuvem resilientes, seguras e prontas para produção no Kubernetes e Docker. + +Na versão **12.0.0** e no Helm chart **`glpi-2.12.0`**, destacam-se os seguintes recursos: + +| Recurso | Detalhes Técnicos | +|---|---| +| **Imagens Unprivileged (Non-Root)** | Contêineres baseados em Alpine Linux executando PHP-FPM e Nginx como usuário sem privilégios (UID 10001 / GID 10001). | +| **Subchart Valkey (`helmforge/valkey`)** | Substituição moderna do Redis inline pelo subchart dedicado Valkey, com suporte à configuração `externalCache` para clusters gerenciados externos. | +| **Subchart MariaDB (`helmforge/mariadb`)** | Banco de dados desacoplado via subchart dedicado com leitura de senhas via Secrets dinâmicas e suporte a `externalDatabase` com `existingSecret`. | +| **Templates Nginx Customizáveis** | Suporte à injeção de `nginx.conf.template` customizado via ConfigMap (PR #209), permitindo desativar facilmente o listener IPv6 em clusters que não possuem suporte de rede. | +| **Conexões de Banco com SSL/TLS** | Suporte nativo a conexões seguras criptografadas via SSL (`GLPI_DB_SSL`, `GLPI_DB_SSL_CA`, `GLPI_DB_SSL_VERIFY`) compatível com AWS Aurora, Cloud SQL e Azure MySQL (PR #207). | +| **Alta Disponibilidade (HA)** | Suporte completo a PodDisruptionBudget (PDB) e HorizontalPodAutoscaler (HPA) para absorver picos de tráfego de service desks corporativos. | +| **Hardening de Pods** | Suporte a `readOnlyRootFilesystem`, `priorityClassName`, *securityContext* estrito e perfis padronizados de recursos (`resourcesPreset`). | +| **Confiabilidade Operacional** | CronJob de manutenção (`bin/console glpi:cron`) com verificação prévia de prontidão do banco e CronJob automatizado para backup de arquivos em buckets S3 compatíveis. | + +--- + +## Como Instalar ou Atualizar + +### 1. Implantação no Kubernetes com Helm Chart + +O Helm chart da EF-TECH é a forma recomendada de executar o GLPI em ambientes Kubernetes corporativos. + +#### Passo 1: Adicionar o Repositório de Charts + +```bash +# Adicionar o repositório oficial de charts da EF-TECH +helm repo add eftech https://eftechcombr.github.io/glpi/charts +helm repo update +``` + +#### Passo 2: Criar o Arquivo de Configuração (`values.yaml`) + +Crie um arquivo `values.yaml` com a configuração recomendada para o GLPI 12.0.0: + +```yaml +# values.yaml para GLPI 12.0.0 em produção +replicaCount: 2 + +image: + repository: eftechcombr/glpi + tag: "php-fpm-12.0.0" + pullPolicy: IfNotPresent + +nginx: + enabled: true + image: + repository: eftechcombr/glpi + tag: "nginx-12.0.0" + resourcesPreset: "small" + +autoscaling: + enabled: true + minReplicas: 2 + maxReplicas: 8 + targetCPUUtilizationPercentage: 75 + targetMemoryUtilizationPercentage: 80 + +podDisruptionBudget: + enabled: true + minAvailable: 1 + +securityContext: + readOnlyRootFilesystem: true + runAsNonRoot: true + runAsUser: 10001 + +# Subchart Valkey ativado para sessões e cache de alta performance +valkey: + enabled: true + +# Subchart MariaDB ativado para persistência interna +mariadb: + enabled: true + auth: + database: glpi + username: glpi + +cron: + enabled: true + schedule: "*/5 * * * *" +``` + +#### Passo 3: Executar a Instalação ou Atualização + +```bash +helm upgrade --install glpi eftech/glpi \ + --namespace glpi \ + --create-namespace \ + --version 2.12.0 \ + -f values.yaml +``` + +--- + +### 2. Implantação com Docker Compose + +Para equipes que utilizam Docker standalone em servidores dedicados ou máquinas virtuais, segue o manifesto completo com PHP-FPM, Nginx, MariaDB e Valkey: + +```yaml +# docker-compose.yml +services: + glpi-db: + image: mariadb:11.4 + restart: unless-stopped + environment: + - MARIADB_ROOT_PASSWORD=sua_senha_root_segura + - MARIADB_DATABASE=glpi + - MARIADB_USER=glpi + - MARIADB_PASSWORD=sua_senha_glpi_segura + volumes: + - db_data:/var/lib/mysql + networks: + - glpi-net + + glpi-cache: + image: valkey/valkey:8.0-alpine + restart: unless-stopped + networks: + - glpi-net + + glpi-fpm: + image: eftechcombr/glpi:php-fpm-12.0.0 + restart: unless-stopped + environment: + - GLPI_DB_HOST=glpi-db + - GLPI_DB_NAME=glpi + - GLPI_DB_USER=glpi + - GLPI_DB_PASSWORD=sua_senha_glpi_segura + - GLPI_DB_SSL=false + volumes: + - glpi_files:/var/www/glpi/files + - glpi_plugins:/var/www/glpi/marketplace + depends_on: + - glpi-db + - glpi-cache + networks: + - glpi-net + + glpi-nginx: + image: eftechcombr/glpi:nginx-12.0.0 + restart: unless-stopped + ports: + - "8080:80" + environment: + - GLPI_PHPFPM_HOST=glpi-fpm + - GLPI_PHPFPM_PORT=9000 + depends_on: + - glpi-fpm + networks: + - glpi-net + +volumes: + db_data: + glpi_files: + glpi_plugins: + +networks: + glpi-net: + driver: bridge +``` + +Para subir o ambiente: + +```bash +docker compose up -d +``` + +--- + +## Guia de Migração: Do GLPI 10.x / 11.x para o GLPI 12.0.0 + +A transição para uma nova versão major exige planejamento para garantir integridade dos dados e continuidade operacional: + +1. **Backup Completo de Segurança (Mandatório):** + - Realize o dump consistente da base de dados MariaDB/MySQL (`mysqldump --single-transaction --quick glpi > backup_glpi_pre12.sql`). + - Efetue o backup integral do diretório de arquivos (`/var/www/glpi/files/`). +2. **Homologação Prévia de Plugins:** + - Como o GLPI 12 reformulou subsistemas e a interface da Base de Conhecimento, certifique-se de que os plugins utilizados pela sua equipe já possuem versões compatíveis lançadas pelos desenvolvedores no Marketplace. +3. **Execução da Atualização do Schema:** + - Em contêineres, o script de entrypoint realiza a verificação de compatibilidade. Se preferir rodar manualmente via CLI: + ```bash + php bin/console db:update + ``` +4. **Otimização e Cache:** + - Limpe e reconstrua o cache de aplicação com o comando: + ```bash + php bin/console cache:clear + ``` + +--- + +## Links e Referências Oficiais + +- [Repositório eftechcombr/glpi no GitHub](https://github.com/eftechcombr/glpi) +- [Releases e Changelog do eftechcombr/glpi](https://github.com/eftechcombr/glpi/releases) +- [Repositório Oficial de Helm Charts da EF-TECH](https://eftechcombr.github.io/glpi/) +- [GLPI no Artifact Hub](https://artifacthub.io/packages/helm/eftech/glpi) +- [Notas da Release Upstream GLPI 12.0.0](https://github.com/glpi-project/glpi/releases/tag/12.0.0) +- [Nova Documentação de Ajuda do GLPI](https://help.glpi-project.org) + +--- + +A **EF-TECH** é especializada em arquitetura de nuvem, Kubernetes e engenharia de confiabilidade de plataformas (SRE). Implementamos, migramos e sustentamos infraestruturas GLPI com alta disponibilidade, conformidade de segurança e automação GitOps. + +Para suporte na migração do seu ambiente ou implantação em cluster Kubernetes corporativo, [entre em contato conosco](/pt-br/contato/). Conheça também nossa [solução corporativa GLPI](/pt-br/produtos/glpi/) e acompanhe outros artigos técnicos em nosso [blog](/pt-br/blog/). diff --git a/static/img/blog/glpi-12-0-0/cover.png b/static/img/blog/glpi-12-0-0/cover.png new file mode 100644 index 0000000..ab387a8 Binary files /dev/null and b/static/img/blog/glpi-12-0-0/cover.png differ diff --git a/static/img/blog/glpi-12-0-0/generate_cover.py b/static/img/blog/glpi-12-0-0/generate_cover.py new file mode 100644 index 0000000..dc73057 --- /dev/null +++ b/static/img/blog/glpi-12-0-0/generate_cover.py @@ -0,0 +1,208 @@ +#!/usr/bin/env python3 +""" +Generate the featured image (1200x630px PNG) for the GLPI 12.0.0 blog post. + +Design: + - Dark navy gradient background (#0c101d -> #18223c) with decorative grid dots + - A terminal window showcasing the pull command, Helm upgrade, and key release features: + * GLPI 12.0.0 official GA release by glpi-project/glpi + * Complete Knowledge Base rewrite, Session Manager, and Sudo / Step-Up Auth + * EF-TECH Helm chart 2.12.0 with Valkey and MariaDB subcharts, PDB, and HPA + * Hardened unprivileged containers, custom Nginx templates, and database SSL + * Maintenance CronJob and S3 backup integration + * Migration path from 11.x and End-of-Life (EOL) notice for GLPI 10.x + - Big title "GLPI 12.0.0 Official Release", subtitle, and EF-TECH branding + +Requires: pip install pillow +""" + +import os +import sys +import shutil + +try: + from PIL import Image, ImageDraw, ImageFont +except ImportError: + print("Pillow is required. Install it with: pip install pillow") + sys.exit(1) + +WIDTH, HEIGHT = 1200, 630 + + +def find_font(size: int, bold: bool = False, mono: bool = False) -> ImageFont.FreeTypeFont | ImageFont.ImageFont: + """Try to find a suitable font on the system.""" + candidates = [] + if mono: + if bold: + candidates = [ + "/System/Library/Fonts/Supplemental/Courier New Bold.ttf", + "/System/Library/Fonts/Supplemental/PTMono.ttc", + "/System/Library/Fonts/Supplemental/SFNSMono-Bold.otf", + "/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf", + "/usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf", + ] + else: + candidates = [ + "/System/Library/Fonts/Supplemental/Courier New.ttf", + "/System/Library/Fonts/Supplemental/PTMono.ttc", + "/System/Library/Fonts/Supplemental/Andale Mono.ttf", + "/System/Library/Fonts/Supplemental/SFNSMono-Regular.otf", + "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf", + "/usr/share/fonts/truetype/liberation/LiberationMono.ttf", + ] + else: + if bold: + candidates = [ + "/System/Library/Fonts/Supplemental/Arial Bold.ttf", + "/Library/Fonts/Arial Bold.ttf", + "/System/Library/Fonts/Helvetica.ttc", + "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", + ] + else: + candidates = [ + "/System/Library/Fonts/Supplemental/Arial.ttf", + "/Library/Fonts/Arial.ttf", + "/System/Library/Fonts/Helvetica.ttc", + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", + ] + + for path in candidates: + if os.path.exists(path): + try: + return ImageFont.truetype(path, size) + except Exception: + continue + return ImageFont.load_default() + + +def draw_checkmark(draw: ImageDraw.ImageDraw, x: int, y: int, size: int = 12, color: tuple = (52, 211, 153)) -> None: + """Draw a vector checkmark.""" + p1 = (x, y + int(size * 0.5)) + p2 = (x + int(size * 0.38), y + int(size * 0.88)) + p3 = (x + size, y + int(size * 0.15)) + draw.line([p1, p2], fill=color, width=2) + draw.line([p2, p3], fill=color, width=2) + + +def draw_terminal_window(draw: ImageDraw.ImageDraw, x: int, y: int, w: int, h: int) -> None: + """Draw a terminal window with a title bar.""" + shadow_offset = 6 + draw.rounded_rectangle( + [x + shadow_offset, y + shadow_offset, x + w + shadow_offset, y + h + shadow_offset], + radius=14, fill=(0, 0, 0, 90) + ) + # Window body + draw.rounded_rectangle( + [x, y, x + w, y + h], radius=12, fill=(18, 23, 38) + ) + # Title bar + draw.rounded_rectangle( + [x, y, x + w, y + 42], radius=12, fill=(28, 35, 58) + ) + draw.rectangle([x, y + 30, x + w, y + 42], fill=(28, 35, 58)) + + # Traffic light buttons + for cx, color in [(x + 22, (255, 95, 87)), (x + 48, (255, 189, 46)), (x + 74, (39, 201, 63))]: + draw.ellipse([cx, y + 14, cx + 14, y + 28], fill=color) + + font_title = find_font(14, bold=True, mono=True) + draw.text((x + w // 2, y + 21), "eftechcombr/glpi — v12.0.0 (Official Major Release)", + fill=(180, 195, 225), font=font_title, anchor="mm") + + +def create_featured_image(output_path: str) -> None: + """Create the 1200x630 OG image for the GLPI 12.0.0 post.""" + img = Image.new("RGBA", (WIDTH, HEIGHT), (12, 16, 29, 255)) + draw = ImageDraw.Draw(img) + + # Background gradient #0c101d -> #18223c + top = (12, 16, 29) + bottom = (24, 34, 60) + for i in range(HEIGHT): + t = i / HEIGHT + r = int(top[0] + (bottom[0] - top[0]) * t) + g = int(top[1] + (bottom[1] - top[1]) * t) + b = int(top[2] + (bottom[2] - top[2]) * t) + draw.line([(0, i), (WIDTH, i)], fill=(r, g, b, 255)) + + # Decorative grid dots + for x in range(0, WIDTH, 32): + for y in range(0, HEIGHT, 32): + draw.point((x, y), fill=(70, 90, 140, 50)) + + # Terminal window + tw, th = 980, 360 + tx, ty = (WIDTH - tw) // 2, 28 + draw_terminal_window(draw, tx, ty, tw, th) + + # Terminal text + font_cmd = find_font(15, bold=True, mono=True) + font_out = find_font(14, mono=True) + font_highlight = find_font(14, bold=True, mono=True) + + prompt_x = tx + 32 + line_y = ty + 56 + + draw.text((prompt_x, line_y), "$", fill=(52, 211, 153), font=font_cmd) + draw.text((prompt_x + 18, line_y), " docker pull eftechcombr/glpi:php-fpm-12.0.0", + fill=(240, 245, 255), font=font_cmd) + line_y += 24 + + draw.text((prompt_x, line_y), "$", fill=(52, 211, 153), font=font_cmd) + draw.text((prompt_x + 18, line_y), " helm upgrade --install glpi eftech/glpi --version 2.12.0", + fill=(240, 245, 255), font=font_cmd) + line_y += 26 + + terminal_lines = [ + ("MAJOR GA: GLPI 12.0.0 official stable release (glpi-project/glpi)", (52, 211, 153), True), + ("NEW FEATURES: Knowledge Base rewrite, Session Manager & Step-Up Auth", (251, 191, 36), True), + ("HELM CHART: v2.12.0 with Valkey & MariaDB subcharts, PDB & HPA", (56, 189, 248), False), + ("HARDENING: Alpine unprivileged non-root, readOnlyRootFilesystem & DB SSL", (56, 189, 248), False), + ("CLOUD-NATIVE: Automated DB-ready CronJob & S3 backup integration", (148, 163, 184), False), + ("LIFECYCLE: Upgrade path from 11.x · GLPI 10.x reaches End-of-Life (EOL)", (248, 113, 113), True), + ] + + for text, color, bold in terminal_lines: + f = font_highlight if bold else font_out + draw_checkmark(draw, prompt_x, line_y + 3, size=11, color=color) + draw.text((prompt_x + 18, line_y), text, fill=color, font=f) + line_y += 23 + + # Title section below terminal + title_font = find_font(42, bold=True, mono=False) + draw.text((WIDTH // 2, ty + th + 66), "GLPI 12.0.0 Official Release", + fill=(255, 255, 255), font=title_font, anchor="mm") + + subtitle_font = find_font(21, bold=True, mono=False) + draw.text((WIDTH // 2, ty + th + 118), + "Major Version GA · Cloud-Native Containers & Helm Chart 2.12.0", + fill=(56, 189, 248), font=subtitle_font, anchor="mm") + + info_font = find_font(15, mono=False) + draw.text((WIDTH // 2, ty + th + 158), + "Knowledge Base Rewrite · Session Manager · Step-Up Auth · Valkey Cache", + fill=(156, 163, 175), font=info_font, anchor="mm") + + # EF-TECH branding + brand_font = find_font(15, bold=True, mono=False) + draw.text((WIDTH - 36, HEIGHT - 22), "EF-TECH", fill=(96, 165, 250), font=brand_font, anchor="rs") + + final = Image.new("RGB", (WIDTH, HEIGHT), (12, 16, 29)) + final.paste(img, mask=img.split()[3]) + final.save(output_path, "PNG") + print(f"Image saved to {output_path} ({WIDTH}x{HEIGHT})") + + +if __name__ == "__main__": + output = os.path.join(os.path.dirname(os.path.abspath(__file__)), "cover.png") + create_featured_image(output) + + # Automatically copy to content bundle folders + repo_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..", "..")) + pt_dir = os.path.join(repo_root, "content", "pt-br", "blog", "glpi-12-0-0") + en_dir = os.path.join(repo_root, "content", "en", "blog", "glpi-12-0-0") + os.makedirs(pt_dir, exist_ok=True) + os.makedirs(en_dir, exist_ok=True) + shutil.copyfile(output, os.path.join(pt_dir, "cover.png")) + shutil.copyfile(output, os.path.join(en_dir, "cover.png")) + print("Copied cover.png to pt-br and en content bundles.")