Inventario y tickets: GLPI en Docker con agentes en Ubuntu y Windows

Servidor GLPI en contenedores, HTTPS propio e inventario automático de dos endpoints reales

Guía técnica para levantar GLPI (inventario de activos y mesa de ayuda) con Docker Compose y MariaDB, servirlo por HTTPS con un proxy inverso, y desplegar el agente oficial GLPI-Agent en un Ubuntu Server y en un Windows 11 para que ambos se inventaríen solos.

1. Introducción

GLPI es una plataforma libre de gestión de activos informáticos y mesa de ayuda: mantiene el inventario de equipos, software y licencias, y gestiona los tickets de soporte sobre esos mismos activos. Esta guía la despliega con Docker Compose, usando MariaDB como base de datos y un proxy inverso Nginx con certificado autofirmado por delante, y añade el agente oficial GLPI-Agent en dos equipos reales para que el inventario se rellene solo.

A diferencia de casi todo lo que se encuentra buscando "GLPI Docker", esta guía usa la imagen oficial del proyecto (glpi/glpi), publicada por el propio equipo de GLPI en Docker Hub y en el registro de GitHub. Durante años solo existieron imágenes mantenidas por la comunidad, y por eso la mayoría de tutoriales antiguos siguen apuntando a ellas. La imagen oficial se reconstruye periódicamente para incorporar parches de seguridad del sistema base y de PHP, sin tocar el código de la aplicación.
Dos detalles condicionan el montaje y conviene tenerlos claros desde el principio. El primero: la imagen oficial instala la base de datos sola en el primer arranque si le pasas las cinco variables de conexión; si falta alguna, desactiva esa función y muestra el asistente web clásico. El segundo: GLPI necesita que la base de datos tenga cargada la información de zonas horarias, algo que no viene activado de fábrica y que hasta resolverse deja la instalación sin poder fijar su zona horaria (sección 9).

2. Variables de esta guía

Todos los bloques usan los siguientes marcadores en MAYÚSCULAS. Sustitúyelos por los valores reales del entorno donde se aplique esta guía.

MarcadorQué esDónde se obtiene
IP_HOST_DOCKERIP del host Linux donde corre el stack con DockerLa interfaz de red de ese host (ip a)
IP_HOST_DOCKER_2Segunda IP del host, solo si dispone de más de una interfaz de red y los agentes van a alcanzarlo por una distinta a la de administraciónLa segunda interfaz de ese host (ip a). Si el servidor solo tiene una IP, este marcador se ignora
GLPI_DB_PASSWORDContraseña del usuario glpi en la base de datosSe define en /docker/glpi/.env (sección 5)
MARIADB_ROOT_PASSWORDContraseña root de MariaDB, necesaria para el paso de zonas horariasSe define en /docker/glpi/.env (sección 5)
FINGERPRINT_CERTHuella SHA256 del certificado autofirmado, que los agentes usarán para confiar en el servidorLa revela el propio agente en su primer intento (secciones 11 y 12)
Esta guía publica el servicio en el puerto 8446. Si en el mismo servidor ya tienes otros stacks ocupando puertos, compruébalo antes con ss -tlnp | grep 8446 y elige otro libre si hiciera falta, cambiándolo en las secciones 5, 6, 7, 8, 11 y 12.

3. Arquitectura y flujo

Tres contenedores en el servidor, y un agente nativo instalado en cada equipo a inventariar. El agente no vive en un contenedor: se instala directamente sobre el sistema operativo de cada máquina, tal y como se haría en un despliegue real sobre equipos físicos o virtuales.

Resumen visual
[UBUNTU SERVER]            [WINDOWS 11]
  glpi-agent                 GLPI-Agent
       |                          |
       |  inventario por HTTPS    |
       |  (el agente inicia la conexión)
       +------------+-------------+
                    |
                    v
        https://IP_HOST_DOCKER:8446   (certificado autofirmado)
                    |
                    v
            [glpi-proxy] :8446   (Nginx)
                    |
                    v
              [glpi] :80   (GLPI + cron interno)
                    |
                    v
             [glpi-db]   (MariaDB)
El sentido de la conexión importa: es el agente quien contacta al servidor, enviando su inventario al endpoint /front/inventory.php. Ningún equipo inventariado necesita abrir puertos de entrada para que esto funcione, lo que mantiene toda la superficie expuesta concentrada en un único punto.
El agente sí abre por su cuenta un pequeño servidor web local en el puerto 62354, pensado para que el servidor GLPI pueda pedirle una ejecución bajo demanda. No es necesario para el inventario programado de esta práctica, y puede desactivarse si no se va a usar.

4. Requisitos

  • Un host Linux con Docker Engine y el plugin Docker Compose (docker compose, sin guion) ya instalados.
  • Un Ubuntu Server y un Windows 11 en la misma red, que serán los equipos inventariados.
  • Salida a Internet desde los equipos donde se instale el agente, únicamente para descargar el instalador desde GitHub.
  • Al menos 2 GB de RAM libres para el contenedor de GLPI.

5. Levantar MariaDB y GLPI con Docker

Misma organización de siempre: cada stack en su carpeta dentro de /docker, y las credenciales en un .env aparte, nunca escritas dentro del docker-compose.yml.

Crear la carpeta del stack
sudo mkdir -p /docker/glpi && cd /docker/glpi
Crear .env
sudo nano .env
.env
MARIADB_ROOT_PASSWORD=glpi_root_pwd
GLPI_DB_NAME=glpi
GLPI_DB_USER=glpi
GLPI_DB_PASSWORD=glpi_pwd
Estos valores sirven para un entorno de pruebas; en una instalación real conviene generar las contraseñas de forma aleatoria. Buena costumbre en cualquier caso: sudo chmod 600 .env para que solo root pueda leer el archivo.

Ahora el archivo del stack, en la misma carpeta:

Crear docker-compose.yml
sudo nano docker-compose.yml
docker-compose.yml
services:
  glpi-db:
    image: mariadb:11
    container_name: glpi-db
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    environment:
      MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
      MARIADB_DATABASE: ${GLPI_DB_NAME}
      MARIADB_USER: ${GLPI_DB_USER}
      MARIADB_PASSWORD: ${GLPI_DB_PASSWORD}
    volumes:
      - glpi-db-data:/var/lib/mysql
    healthcheck:
      test: ["CMD-SHELL", "healthcheck.sh --connect --innodb_initialized"]
      interval: 5s
      timeout: 5s
      retries: 20
      start_period: 30s
    restart: unless-stopped

  glpi:
    image: glpi/glpi:11.0
    container_name: glpi
    environment:
      GLPI_DB_HOST: glpi-db
      GLPI_DB_PORT: 3306
      GLPI_DB_NAME: ${GLPI_DB_NAME}
      GLPI_DB_USER: ${GLPI_DB_USER}
      GLPI_DB_PASSWORD: ${GLPI_DB_PASSWORD}
      TZ: Europe/Madrid
    volumes:
      - glpi-data:/var/glpi
    depends_on:
      glpi-db:
        condition: service_healthy
    restart: unless-stopped

  proxy:
    image: nginx:alpine
    container_name: glpi-proxy
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - ./proxy-selfsigned.crt:/etc/nginx/certs/proxy-selfsigned.crt:ro
      - ./proxy-selfsigned.key:/etc/nginx/certs/proxy-selfsigned.key:ro
    ports:
      - "8446:8446"
    depends_on:
      - glpi
    restart: unless-stopped

volumes:
  glpi-db-data:
  glpi-data:
Las cinco variables GLPI_DB_* del servicio glpi son las que activan la instalación automática. La documentación oficial es explícita: si falta cualquiera de ellas, GLPI desactiva tanto la instalación como la actualización automáticas y presenta en su lugar el asistente web. No es un fallo, pero conviene saberlo para no confundirse si aparece esa pantalla.
El volumen glpi-data monta /var/glpi completo, que es donde la imagen coloca la configuración, los archivos subidos, los registros y el marketplace de plugins. Persistir esa ruta es lo que marca la diferencia entre poder recrear el contenedor sin consecuencias y perder la configuración al hacerlo.

6. Configurar el proxy inverso con HTTPS propio

Genera un certificado autofirmado con clave EC, válido para la IP del host:

Generar el certificado autofirmado
cd /docker/glpi
sudo openssl ecparam -name prime256v1 -genkey -noout -out proxy-selfsigned.key
sudo openssl req -new -x509 -key proxy-selfsigned.key -out proxy-selfsigned.crt -days 825 \
  -subj "/CN=IP_HOST_DOCKER" \
  -addext "subjectAltName=IP:IP_HOST_DOCKER"

Servidor con varias interfaces de red

Es habitual que el servidor tenga más de una interfaz: una en la red de administración, desde la que se accede a la interfaz web, y otra en una red interna donde viven los equipos a inventariar. En ese escenario, los agentes alcanzarán el servidor por una IP distinta a la que se usa desde el navegador.

La publicación del puerto no supone ningún problema: Docker lo expone en todas las interfaces del host a la vez, sin configuración adicional. El punto delicado es el certificado, que solo es válido para las direcciones que se le indiquen al generarlo. Si se emite únicamente para la IP de administración, los clientes que lleguen por la otra red estarán validando contra un certificado que no incluye la dirección que están usando.

La solución es emitir un único certificado válido para ambas direcciones, añadiendo las dos al campo subjectAltName separadas por comas:

Certificado válido para dos interfaces
cd /docker/glpi
sudo openssl ecparam -name prime256v1 -genkey -noout -out proxy-selfsigned.key
sudo openssl req -new -x509 -key proxy-selfsigned.key -out proxy-selfsigned.crt -days 825 \
  -subj "/CN=IP_HOST_DOCKER" \
  -addext "subjectAltName=IP:IP_HOST_DOCKER,IP:IP_HOST_DOCKER_2"
El mismo patrón vale para más de dos direcciones, o para combinar IPs y nombres de host: basta con seguir añadiendo entradas separadas por comas, usando IP: para direcciones y DNS: para nombres. El valor de CN es indiferente mientras las direcciones reales estén todas en subjectAltName, que es lo que los clientes modernos comprueban en realidad.
Decide esto antes de continuar. Regenerar el certificado más adelante cambia su huella, y los agentes configurados con la huella anterior (secciones 11 y 12) dejarían de conectar hasta actualizarlos uno por uno. Conviene emitir el certificado definitivo ahora, con todas las direcciones necesarias, y capturar la huella una sola vez.

Ahora la configuración de Nginx:

Crear nginx.conf
sudo nano nginx.conf
nginx.conf
resolver 127.0.0.11 valid=10s;

server {
    listen 8446 ssl;
    server_name IP_HOST_DOCKER;

    ssl_certificate     /etc/nginx/certs/proxy-selfsigned.crt;
    ssl_certificate_key /etc/nginx/certs/proxy-selfsigned.key;

    # Los inventarios y los documentos adjuntos pueden superar el limite por defecto
    client_max_body_size 64M;

    location / {
        set $upstream_glpi http://glpi:80;
        proxy_pass $upstream_glpi;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
El resolver 127.0.0.11 (el DNS interno de Docker) junto con set $upstream_glpi; proxy_pass $upstream_glpi; no es cosmético: sin la variable, Nginx intenta resolver el nombre glpi una sola vez al arrancar, y si en ese instante el contenedor todavía no está listo, se niega a arrancar con un error de host not found in upstream. Con la variable, la resolución se hace en cada petición.
client_max_body_size 64M evita un problema que aparece más tarde y cuesta relacionar con el proxy: los inventarios de equipos con mucho software instalado, y los documentos que se adjuntan a los tickets, pueden superar el límite por defecto de Nginx (1 MB) y ser rechazados antes de llegar a GLPI.

7. Arrancar el stack y verificar

Arrancar los contenedores
cd /docker/glpi
docker compose up -d
docker compose ps

El primer arranque tarda más de lo normal porque GLPI crea el esquema completo de la base de datos. Sigue el registro para verlo:

Log de GLPI
docker logs -f glpi

Cuando termine la instalación automática y no aparezcan errores de conexión a la base de datos, sal con Ctrl+C y comprueba que el proxy responde:

Probar el proxy desde el propio host
curl -kI https://IP_HOST_DOCKER:8446
Una respuesta HTTP/1.1 200 OK o una redirección confirma que el TLS funciona y que Nginx está alcanzando el contenedor de GLPI.
Si el servidor tiene varias interfaces, conviene repetir la comprobación contra cada una de sus direcciones antes de pasar a los agentes. Deben responder todas: el puerto está publicado en todas las interfaces, así que un fallo en una de ellas apunta a un problema de red o de enrutado, no al despliegue.

8. Primer acceso y cuentas por defecto

Abre en el navegador:

URL de acceso
https://IP_HOST_DOCKER:8446
El navegador mostrará un aviso de conexión no privada. Es esperado: el certificado es autofirmado, no lo ha emitido una autoridad pública reconocida. Pulsa "Avanzado" y continúa. Es la misma situación de cualquier servicio interno antes de tener un certificado firmado por una entidad pública.

GLPI se instala con cuatro cuentas de demostración, una por cada perfil, y todas con la contraseña igual al nombre de usuario:

UsuarioContraseñaPerfil
glpiglpiSuper-administrador
techtechTécnico
normalnormalUsuario normal
post-onlypostonlyAutoservicio, solo abrir tickets
Estas cuatro cuentas son de dominio público y hay que tratarlas como el primer paso de la instalación, no como un detalle posterior. Cualquiera que alcance la dirección del servicio y pruebe glpi/glpi entra como super-administrador. El propio GLPI muestra un aviso de seguridad en el panel mientras alguna siga con su contraseña original. Nada más entrar por primera vez: cambia la contraseña de glpi, y elimina o desactiva tech, normal y post-only si no las vas a usar, desde Administración → Usuarios.
Con la contraseña cambiada y las cuentas sobrantes desactivadas, el aviso de seguridad del panel debería desaparecer. Ese aviso funciona como una lista de comprobación: mientras siga visible, indica exactamente qué queda pendiente de asegurar.

9. Activar el soporte de zonas horarias

GLPI necesita que MariaDB tenga cargada su tabla de zonas horarias y que el usuario de la aplicación pueda consultarla. Sin esto, la instalación no puede fijar su zona horaria y las fechas quedan atadas a la configuración por defecto del servidor.

Primero, dale permiso de lectura al usuario de GLPI sobre esa tabla (te pedirá la contraseña root que definiste en el .env):

Permiso sobre la tabla de zonas horarias
docker exec -it glpi-db mariadb -u root -p \
  -e "GRANT SELECT ON mysql.time_zone_name TO 'glpi'@'%'; FLUSH PRIVILEGES;"

Después, dile a GLPI que active el soporte:

Habilitar zonas horarias en GLPI
docker exec -it glpi /var/www/glpi/bin/console database:enable_timezones
La confirmación fiable es la propia salida del comando anterior, que indica si el soporte se ha activado correctamente. Hecho esto, el selector de zona horaria queda disponible en Setup → General → General setup.
Conviene no buscar un mensaje de error antes de dar este paso, porque no lo hay: mientras el soporte no esté activado, GLPI sencillamente no ofrece el selector de zona horaria, sin mostrar ninguna advertencia visible en la interfaz. La ausencia de la opción es el único síntoma. Por eso el orden correcto es ejecutar primero los dos comandos y comprobar después, en lugar de intentar localizar un aviso que no va a aparecer.
Conviene no confundir dos cosas distintas que suenan igual: la zona horaria del contenedor (la variable TZ del docker-compose.yml, que afecta a los registros y al reloj del sistema) no es lo mismo que el soporte de zonas horarias de la base de datos, que es lo que permite a GLPI almacenar y convertir fechas correctamente entre distintas ubicaciones. Configurar solo la primera no elimina el aviso.

10. Activar el inventario nativo

Desde GLPI 10, el inventario viene integrado en el producto y ya no hace falta el antiguo complemento FusionInventory. Pero llega desactivado de fábrica: si instalas los agentes sin dar este paso, enviarán su inventario y el servidor lo descartará sin decir gran cosa.

  • Entra como administrador y ve a Administración → Inventario.
  • Abre la pestaña de configuración general del inventario.
  • Activa la opción para habilitar el inventario.
  • Revisa las opciones de importación (equipos, monitores, impresoras, componentes) y déjalas según lo que quieras que entre en el inventario.
  • Guarda.
Este es el paso que más veces se olvida y el que peor se diagnostica, porque no produce un error visible: los agentes parecen funcionar, el servidor responde, y sin embargo no aparece ningún equipo. Si al llegar a la sección 13 no ves nada inventariado, vuelve aquí antes de tocar los agentes.
El endpoint al que los agentes envían su inventario es /front/inventory.php. No hace falta escribirlo en la configuración del agente: basta con darle la URL base del servidor y él resuelve la ruta por su cuenta.

11. Instalar el agente en Ubuntu Server

El proyecto GLPI publica un instalador en Perl que detecta la distribución y coloca el paquete adecuado. Descárgalo desde las publicaciones oficiales del agente, sustituyendo el número de versión por el actual que veas en la página de releases:

Descargar e instalar el agente
cd /tmp
wget https://github.com/glpi-project/glpi-agent/releases/download/1.19/glpi-agent-1.19-linux-installer.pl
sudo perl glpi-agent-1.19-linux-installer.pl

Ahora configura a qué servidor debe reportar. En lugar de editar el archivo principal, se añade un fichero propio en la carpeta de configuración adicional, que es la forma recomendada porque sobrevive a las actualizaciones del paquete:

Crear la configuración del agente
sudo nano /etc/glpi-agent/conf.d/00-clockwork.cfg
00-clockwork.cfg (primer intento, solo para obtener la huella)
server = https://IP_HOST_DOCKER:8446
no-ssl-check = 1
tag = laboratorio
Si el servidor tiene varias interfaces, aquí debe ir la dirección por la que el agente alcanza realmente al servidor desde su propia red, que no tiene por qué ser la misma que se usa para administrarlo desde el navegador. Esa dirección debe estar incluida en el certificado emitido en la sección 6.

Fuerza una ejecución inmediata para comprobar que llega:

Forzar un inventario y ver el resultado
sudo systemctl restart glpi-agent
sudo glpi-agent --force --debug

Del atajo a la configuración correcta

La opción no-ssl-check desactiva por completo la validación del certificado del servidor. La documentación oficial de GLPI es tajante en que no debe quedarse así en producción: sin validación, el agente enviaría su inventario a cualquiera que suplantara la dirección del servidor. Su uso correcto es puntual, exactamente como aquí: activarla una sola vez para que el agente muestre en su registro la huella del certificado.

En la salida del comando anterior, con no-ssl-check activo, el agente indica la huella SHA256 del certificado del servidor. Cópiala, y sustituye el contenido del archivo de configuración por esta versión definitiva:

00-clockwork.cfg (versión definitiva)
server = https://IP_HOST_DOCKER:8446
ssl-fingerprint = FINGERPRINT_CERT
tag = laboratorio
Aplicar y volver a probar
sudo systemctl restart glpi-agent
sudo glpi-agent --force --debug
Con ssl-fingerprint, el agente sigue validando el certificado, pero contra la huella concreta que le has indicado en lugar de contra una autoridad pública. Se conserva la autenticación del servidor sin necesidad de un certificado firmado por una entidad reconocida: es la solución recomendada por el propio proyecto para certificados privados.
El campo tag es opcional pero muy útil en cuanto crece el parque: es una etiqueta libre que viaja con el inventario y permite después clasificar automáticamente los equipos por sede, departamento o entidad mediante las reglas de importación de GLPI.

12. Instalar el agente en Windows 11

Descarga el instalador MSI de 64 bits desde la misma página de releases y ejecútalo en modo silencioso desde PowerShell como administrador. Igual que en Linux, el primer intento sirve para obtener la huella del certificado:

Instalación silenciosa (primer intento)
msiexec /i "C:\Users\$env:USERNAME\Downloads\GLPI-Agent-1.19-x64.msi" /quiet SERVER="https://IP_HOST_DOCKER:8446" NO_SSL_CHECK=1 TAG="laboratorio" RUNNOW=1 EXECMODE=1 /l*v "C:\Users\$env:USERNAME\Downloads\glpi-agent-install.log"

Comprueba que el servicio quedó instalado y en marcha:

Estado del servicio
Get-Service -Name "glpi-agent"

Y revisa el registro del agente, donde aparecerá la huella del certificado:

Log del agente en Windows
Get-Content "C:\Program Files\GLPI-Agent\logs\glpi-agent.log" -Tail 40

Con la huella ya conocida, reinstala pasando la configuración correcta en lugar de desactivar la validación:

Instalación definitiva con validación por huella
msiexec /i "C:\Users\$env:USERNAME\Downloads\GLPI-Agent-1.19-x64.msi" /quiet SERVER="https://IP_HOST_DOCKER:8446" SSL_FINGERPRINT="FINGERPRINT_CERT" TAG="laboratorio" RUNNOW=1 EXECMODE=1
Si prefieres no reinstalar, la configuración del agente en Windows vive en el registro, bajo HKEY_LOCAL_MACHINE\SOFTWARE\GLPI-Agent. Se puede editar ahí directamente y reiniciar el servicio para aplicar el cambio; el resultado es el mismo.
Parámetros del MSI que conviene conocer: EXECMODE=1 lo instala como servicio (la alternativa es tarea programada, útil en servidores donde no interesa un servicio permanente), RUNNOW=1 lanza un inventario nada más terminar la instalación, y ADD_FIREWALL_EXCEPTION=1 abriría el puerto 62354 si se quisiera permitir ejecuciones bajo demanda desde el servidor.

13. Verificar el inventario en GLPI

En la interfaz web, ve a Activos → Equipos. Deberían aparecer los dos equipos con su nombre, y al abrir cualquiera de ellos verás la información recogida automáticamente: procesador, memoria, discos, tarjetas de red, sistema operativo y el listado completo de software instalado.

Para revisar los agentes en sí y cuándo contactaron por última vez:

  • Administración → Inventario → Agentes muestra cada agente registrado, su versión y la fecha del último contacto.
  • En la ficha de cada equipo, el historial permite ver qué cambió entre un inventario y el siguiente.
Si los dos equipos aparecen con datos reales y fecha reciente, el montaje está completo de extremo a extremo: GLPI sirviendo por HTTPS desde Docker, y dos agentes nativos reportando su inventario desde sistemas operativos distintos, validando además el certificado del servidor por huella.

Una última comprobación confirma que el inventario se mantiene vivo y no es una foto fija: instalar o desinstalar cualquier programa en uno de los equipos, forzar un inventario nuevo y verificar que GLPI refleja el cambio en el listado de software y lo registra en el historial del activo.

14. Tabla de puertos y componentes

PuertoComponenteSentido de la conexiónPara qué sirve
8446/tcpglpi-proxy (Nginx)Navegador y agentes → contenedorÚnico punto de entrada: interfaz web y recepción de inventarios, por HTTPS
glpi (Docker, interno)proxy → glpiAplicación GLPI y su cron interno; no publica ningún puerto al host
glpi-db (Docker, interno)glpi → glpi-dbMariaDB; no necesita exponerse al host
62354/tcpGLPI-Agent en cada endpointServidor → agenteNo se usa en esta guía. Solo hace falta para pedir al agente una ejecución bajo demanda

15. Errores comunes y cómo resolverlos

ProblemaCausa probableSolución
Al entrar aparece el asistente de instalación web en vez de la pantalla de login Falta alguna de las cinco variables GLPI_DB_*, así que la instalación automática se desactivó Revisar el servicio glpi del compose y confirmar con docker compose config que las cinco se resolvieron (sección 5)
El contenedor glpi-proxy se reinicia en bucle con host not found in upstream "glpi" Nginx intentó resolver el nombre una sola vez al arrancar y GLPI aún no estaba listo Confirmar que nginx.conf usa resolver 127.0.0.11 con la variable $upstream_glpi (sección 6)
No aparece el selector de zona horaria en Setup → General → General setup La tabla de zonas horarias de MariaDB no está cargada o no es accesible para el usuario de GLPI. No se muestra ningún aviso: la opción simplemente no está Ejecutar los dos comandos de la sección 9, en ese orden, y volver a comprobar la pestaña
Los agentes parecen funcionar pero no aparece ningún equipo El inventario nativo sigue desactivado en el servidor Activarlo en Administración → Inventario (sección 10) y forzar un nuevo inventario en los agentes
El agente registra certificate verify failed Comportamiento esperado con un certificado autofirmado: el agente no reconoce la autoridad que lo emitió Obtener la huella con no-ssl-check una sola vez y configurar ssl-fingerprint de forma permanente (secciones 11 y 12)
El navegador o los agentes funcionan por una interfaz del servidor pero no por otra El certificado se emitió solo para una de las direcciones del host, y no incluye aquella por la que se está accediendo Regenerar el certificado incluyendo todas las direcciones en subjectAltName (sección 6). Al cambiar la huella, hay que actualizarla también en los agentes ya configurados
El inventario de un equipo concreto falla mientras otros funcionan El envío supera el tamaño máximo admitido por el proxy Confirmar client_max_body_size en nginx.conf y subirlo si hace falta (sección 6)
Tras recrear el contenedor se pierde la configuración de GLPI No se persistió /var/glpi, que es donde vive la configuración Comprobar que el volumen glpi-data está declarado y montado (sección 5)

16. Notas de ampliación

El montaje de esta guía cubre lo necesario para tener el inventario automático funcionando y la mesa de ayuda operativa. Para un uso continuado conviene ampliar con:

  • Reglas de importación de activos, para que los equipos entren clasificados solos en la entidad, ubicación o grupo que corresponda, apoyándose en la etiqueta tag que ya envían los agentes.
  • Notificaciones por correo, para que la apertura y actualización de tickets avise automáticamente a quien corresponda.
  • Descubrimiento de red por SNMP, que permite inventariar switches, impresoras y otros equipos donde no se puede instalar un agente.
  • Dominio propio y certificado válido en lugar del autofirmado, lo que además simplifica los agentes: con un certificado reconocido dejan de necesitar la huella y basta con indicarles la URL.
  • Copias de seguridad del volumen de MariaDB y del volumen glpi-data, que contiene la configuración y todos los documentos adjuntos a los tickets.
  • Integración con la monitorización, para que una alerta de un sistema como Zabbix abra automáticamente un ticket sobre el activo correspondiente ya inventariado en GLPI.