Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Synology / NAS 11.09.2026 · 10 min Lesezeit

GLPI 12 auf dem Synology NAS installieren: Helpdesk und IT-Asset-Management für KMU

GLPI vereint Ticketsystem und IT-Inventar kostenlos in einem Tool, ideal für KMU. Diese Anleitung zeigt den Compose-Stack mit GLPI 12 und MariaDB-Healthcheck auf dem Synology NAS: offizielles Image, automatische Erstinstallation, deutsche Oberfläche und Umstieg von GLPI 10 und 11.

Geprüft am 14.10.2026 · für GLPI 12.0.0

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Schreibtisch mit gestapelten Laptops mit farbigen Anhängern, Kopfhörern und einem schwarzen NAS im Regal im sonnigen Büro

GLPI (GPL Licensed Software Package for IT Managers) vereint ITIL-konformes Ticketing und die Inventarisierung von Hardware, Software und Netzwerk in einer Open-Source-Anwendung. Diese Anleitung richtet GLPI 12 mit dem offiziellen Image per Docker Compose auf dem Synology NAS ein; den Umstieg von GLPI 10 oder 11 beschreibt Schritt 8.

Voraussetzungen

  • Synology NAS mit Container Manager, amd64 oder arm64 (z. B. DS923+, DS1522+)
  • DSM 7.2 oder höher mit installiertem Container Manager
  • Mindestens 4 GB RAM; GLPI und MariaDB belegen zusammen etwa 1 bis 2 GB
  • Mindestens 10 GB frei auf /volume1
  • Internetzugang für rund 770 MB Images
  • Optional für HTTPS: eigene Domain oder Synology DDNS

Schritt 1: Ordnerstruktur per File Station anlegen

Erstellen Sie in der File Station unter /volume1/docker/ diese Ordner:

  • /volume1/docker/glpi/data: Konfiguration mit Schlüsseldateien, Uploads, Logs, Marktplatz-Plugins
  • /volume1/docker/glpi/plugins: manuell installierte Plugins (darf leer bleiben)
  • /volume1/docker/glpi/db: Datenbank

Das offizielle Image läuft als www-data (UID 33). Ohne Schreibrecht auf data und plugins bricht der Start mit „mkdir: cannot create directory '/var/glpi/config': Permission denied“ ab. Die UID lässt sich nur per SSH setzen:

sudo mkdir -p /volume1/docker/glpi/{data,plugins,db}
sudo chown -R 33:33 /volume1/docker/glpi/data /volume1/docker/glpi/plugins

Verifizieren: In der File Station zeigt /volume1/docker/glpi die Unterordner data, plugins und db. Per SSH zeigt ls -ln /volume1/docker/glpi bei data und plugins die Eigentümer-ID 33.

Schritt 2: Compose-Datei erstellen und Passwörter setzen

Legen Sie im Container Manager unter „Projekt“ > „Erstellen“ das Projekt glpi im Pfad /volume1/docker/glpi an, fügen Sie diese compose.yaml ein und ersetzen Sie beide Passwort-Platzhalter:

ParameterWertErläuterung
Image GLPIglpi/glpi:12.0.0Offizielles Image, aktuelle Hauptversion 12.0.x
Image DBmariadb:10.11LTS-Version, erfüllt die GLPI-12-Mindestanforderung MariaDB 10.11
Port8769:80Externer Port 8769 frei wählbar; intern immer 80
GLPI-Daten/volume1/docker/glpi/data:/var/glpiOffizieller Pfad /var/glpi mit config, files, logs und marketplace
DB-Daten/volume1/docker/glpi/db:/var/lib/mysqlMariaDB-Persistenz
Cron internGLPI_CRONTAB_ENABLED=1Automatische Aufgaben alle 1 Minute, kein Extra-Container nötig
name: glpi

services:
  db:
    image: mariadb:10.11
    container_name: glpi-db
    restart: unless-stopped
    volumes:
      - /volume1/docker/glpi/db:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      MARIADB_DATABASE: glpi
      MARIADB_USER: glpi
      MARIADB_PASSWORD: SICHERES_PASSWORT_AENDERN
      MARIADB_ROOT_PASSWORD: SICHERES_ROOT_PW_AENDERN
      MARIADB_AUTO_UPGRADE: "1"
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 15
      start_period: 30s
    networks:
      - glpi-net

  glpi:
    image: glpi/glpi:12.0.0
    container_name: glpi-app
    restart: unless-stopped
    ports:
      - "8769:80"
    volumes:
      - /volume1/docker/glpi/data:/var/glpi
      - /volume1/docker/glpi/plugins:/var/www/glpi/plugins
      - /etc/localtime:/etc/localtime:ro
    environment:
      GLPI_DB_HOST: db
      GLPI_DB_PORT: "3306"
      GLPI_DB_NAME: glpi
      GLPI_DB_USER: glpi
      GLPI_DB_PASSWORD: SICHERES_PASSWORT_AENDERN
      GLPI_CRONTAB_ENABLED: "1"
    depends_on:
      db:
        condition: service_healthy
    healthcheck:
      test: ["CMD-SHELL", "timeout 10s bash -c ':> /dev/tcp/127.0.0.1/80'"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 90s
    networks:
      - glpi-net

networks:
  glpi-net:
    driver: bridge

condition: service_healthy startet GLPI erst nach bestandenem Datenbank-Healthcheck.

Verifizieren: Der Container Manager zeigt das Projekt nach dem Speichern ohne Syntaxfehler als „Gestoppt“. Bei Fehlern prüfen Sie die Einrückung (zwei Leerzeichen je Ebene).

Schritt 3: Stack starten und Datenbank-Healthcheck abwarten

Starten Sie das Projekt glpi im Container Manager. Nach dem Image-Download wartet GLPI auf den Healthcheck der Datenbank (meist 30 bis 60 Sekunden) und legt dann die Tabellen an, auf einem NAS einige Minuten.

Logs zeigt der Reiter „Protokoll“, alternativ per SSH:

docker logs glpi-db --tail 20
docker logs glpi-app --tail 30

Healthcheck-Status der Datenbank:

docker inspect glpi-db --format '{{.State.Health.Status}}'
# Erwartete Ausgabe: healthy

Verifizieren: Beide Container zeigen „Läuft“. Der Healthcheck von glpi-db steht auf „healthy“, die glpi-app-Logs zeigen die Datenbankinstallation und danach den Start des Webservers.

Schritt 4: GLPI-Installer im Browser abschließen und Deutsch einrichten

Mit allen fünf GLPI_DB_*-Variablen und GLPI_SKIP_AUTOINSTALL auf dem Standard false installiert sich GLPI ohne Wizard. Fehlt eine, erscheint der Wizard (Host db, Nutzer glpi, Passwort aus der compose.yaml).

  1. Anmelden: unter http://<NAS-IP>:8769 mit Benutzer glpi, Passwort glpi (Standard-Super-Admin, siehe Schritt 5).
  2. Sprache auf Deutsch stellen: Konfiguration > Allgemein, Reiter „Standardwerte“, Sprache „Deutsch“; Ihr eigenes Profil über „Mein Profil“.
  3. Demodaten ausblenden: über die Schaltfläche im Dashboard-Hinweis.

Verifizieren: Das Dashboard erscheint auf Deutsch mit „Assets“, „Helpdesk“, „Administration“ und „Konfiguration“ in der Navigation.

Schritt 5: Standard-Passwörter sofort ändern und Sicherheit härten

GLPI legt vier Standard-Accounts mit öffentlich bekannten Zugangsdaten an:

BenutzernameStandard-PasswortRolle
glpiglpiSuper-Admin
techtechTechniker
normalnormalNormaler Nutzer
post-onlypostonlyNur Tickets erstellen

Ändern Sie unter Administration > Benutzer alle Passwörter. Legen Sie einen eigenen Admin-Account an und deaktivieren oder löschen Sie danach den glpi-Account, das erste Ziel von Brute-Force-Angriffen.

Weitere Maßnahmen:

  • Konfiguration > Sicherheit: Passwortrichtlinie und 2FA (seit GLPI 12 hier). Aktivieren Sie TOTP mindestens für Super-Admins.
  • Konfiguration > Daten und Datenschutz: Aufbewahrungsdauer für Anmeldeverlauf und Logs festlegen. Seit GLPI 12 lassen sich aktive Sitzungen beenden.
  • Konfiguration > Benachrichtigungen: SMTP für Ticket-Mails hinterlegen.
  • DSM > Systemsteuerung > Sicherheit > Firewall: Port 8769 (TCP) nur für interne IP-Adressen freigeben.
GLPI 12 Bestätigungsdialog Sensitive area: vor dem Öffnen der Konfiguration wird das Passwort erneut abgefragt
Vor sensiblen Admin-Bereichen fragt GLPI 12 das Passwort erneut ab.

Verifizieren: Eine Anmeldung mit glpi/glpi schlägt fehl, Ihr neuer Admin-Account meldet sich an.

Schritt 6: Reverse Proxy für HTTPS einrichten (optional, empfohlen)

GLPI liefert nur HTTP. Für HTTPS legen Sie unter DSM > Systemsteuerung > Anmeldeportal > Erweitert > Reverse Proxy diese Regel an:

FeldWert
NameGLPI
Protokoll (Quelle)HTTPS
Hostname (Quelle)glpi.ihre-domain.de
Port (Quelle)443
Protokoll (Ziel)HTTP
Hostname (Ziel)localhost
Port (Ziel)8769

Unter DSM > Systemsteuerung > Sicherheit > Zertifikat beantragen Sie ein Let's-Encrypt-Zertifikat und weisen es der Regel zu.

GLPI 12 wertet X-Forwarded-For nur von vertrauenswürdigen Proxys aus, sonst protokolliert es die Docker-Adresse. Legen Sie /volume1/docker/glpi/local_define.php an und binden Sie sie im glpi-Dienst ein: - /volume1/docker/glpi/local_define.php:/var/www/glpi/config/local_define.php:ro.

<?php
define('GLPI_TRUSTED_REVERSE_PROXIES', ['172.16.0.0/12']);
define('GLPI_REVERSE_PROXY_HEADERS', ['X-Forwarded-For']);

Im Test protokollierte GLPI ohne Datei glpi log in from IP 172.18.0.1, mit Datei die echte Client-IP. Port 8769 bleibt intern, sonst lässt sich der Header fälschen.

Tragen Sie unter Konfiguration > Allgemein im Feld „Webadresse der Anwendung“ die HTTPS-Adresse ein für korrekte Links.

Verifizieren: https://glpi.ihre-domain.de lädt mit gültigem Zertifikat ohne Browserwarnung.

Schritt 7: Ersten Ticket-Typ und Inventar-Grundstruktur einrichten

Helpdesk konfigurieren: ITIL-Kategorien unter Konfiguration > Rubriken, SLAs unter Konfiguration > Service-Levels. Mehrere Standorte oder Kunden bilden Sie unter Administration > Einheiten ab.

IT-Inventar starten: Erfassen Sie Geräte und Software unter Assets manuell oder verteilen Sie den GLPI-Agent (Nachfolger des FusionInventory-Agenten) auf Windows- und Linux-Clients. Mit eingetragener GLPI-URL meldet er das Inventar selbst. Download: glpi-project/glpi-agent.

Automatische Jobs laufen dank GLPI_CRONTAB_ENABLED=1 jede Minute im App-Container, ein eigener Cron-Container entfällt.

Verifizieren: Ein Test-Ticket unter Helpdesk > Tickets > Hinzufügen erscheint mit Status „Neu“, ein manuell angelegter Computer unter Assets > Computer in der Liste. Unter Konfiguration > Automatische Jobs zeigen die Einträge einen aktuellen letzten Lauf.

Schritt 8: Bestehende GLPI-10- oder 11-Installation auf GLPI 12 umstellen

Bestehende Stacks mit 10.0- oder 11.0-Tag wechseln über den Image-Tag; das Schema migriert beim Start, außer bei GLPI_SKIP_AUTOUPDATE: "true". GLPI 12 enthält alle Migrationen ab Version 0.85, ohne Zwischenschritt über 11. Zurück geht es nur per Backup.

  1. Voraussetzungen prüfen: GLPI 12 verlangt MariaDB ab 10.11 (GLPI 11: 10.6) bzw. MySQL ab 8.0 und PHP ab 8.3. mariadb:10.11 erfüllt das, PHP bringt das Image mit (im Test 8.5).
  2. Plugins prüfen: GLPI 12 verlangt angepasste Plugins; prüfen Sie im Marktplatz oder beim Anbieter.
  3. Backup anlegen: SQL-Dump (Befehl unter „Häufige Fragen“) und Kopie von /volume1/docker/glpi/data. Dessen Ordner config enthält glpicrypt.key und ab GLPI 11 oauth.pem und oauth.pub; ohne sie sind gespeicherte Passwörter (z. B. SMTP, LDAP) nicht mehr lesbar.
  4. Tag umstellen: Projekt glpi stoppen, in der compose.yaml den alten Tag durch glpi/glpi:12.0.0 ersetzen und das Projekt neu erstellen.
  5. Plugins wieder aktivieren: GLPI setzt sie beim Versionssprung aus. Unter Konfiguration > Erweiterungen kompatible Plugins einschalten, alternativ per SSH: docker exec glpi-app php /var/www/glpi/bin/console plugin:resume_execution.

Ab GLPI 11 ist die XML-RPC-API entfallen, Integrationen verwenden die REST-API. „Validierung“ heißt jetzt „Genehmigung“.

Umstieg von GLPI 11 auf GLPI 12

Drei Änderungen betreffen Bestandsdaten:

  • Wissensdatenbank: Kategorien sind jetzt Artikel unter einem neuen Wurzelartikel und laut Changelog unsichtbar, bis Sie ihnen Ziele zuweisen; diese vererben sich auf Unterartikel.
  • CSRF-Schutz: GLPI 12 prüft Sec-Fetch-Site bzw. Origin statt Formular-Tokens und lehnt Formulare fremder Adressen mit HTTP 403 ab, im Test auch einen Login mit fremdem Origin.
  • Automatische Jobs: Nach fünf Fehlschlägen in Folge steht ein Job auf ERROR und braucht manuellen Eingriff; prüfen Sie Konfiguration > Automatische Jobs.
GLPI 12 Wissensdatenbank nach dem Update: frühere Kategorie KB-Kategorie Netzwerk als Artikel unter Home, darunter KB-Artikel WLAN
Nach dem Update steht die alte Kategorie als Artikel unter „Home“.

Im Test lief das Update von 11.0.11 auf 12.0.0 beim Start automatisch durch. Ticket, Computer und Admin-Passwort blieben erhalten, die Kategorie stand als Artikel unter „Home“.

Verifizieren: Bisherige Konten melden sich an, Tickets und Assets sind vorhanden. docker exec glpi-app php bin/console --version zeigt GLPI CLI 12.0.0, docker exec glpi-app php bin/console db:check meldet Database schema is OK.

Troubleshooting / Typische Fehler

  • „GLPI_DB_HOST: Connection refused“ beim ersten Start: GLPI startete vor MariaDB. Healthcheck und condition: service_healthy wie in Schritt 2 ergänzen.
  • Weiße Seite oder „500 Internal Server Error“ nach dem Wizard: Rechteproblem, Lösung per SSH: docker exec -u root glpi-app chown -R www-data:www-data /var/glpi
  • Port 8769 nicht erreichbar trotz laufendem Container: Firewall-Regel aus Schritt 5 fehlt.
  • Ticket-Zeitstempel falsch (UTC statt lokale Zeit): Der Mount /etc/localtime:/etc/localtime:ro fehlt in einem der Services.
  • Cron-Tasks werden nicht ausgeführt: GLPI_CRONTAB_ENABLED fehlt oder steht auf 0. Setzen Sie GLPI_CRONTAB_ENABLED: "1" und starten Sie den Container neu.
  • Wissensdatenbank-Kategorien nach dem Update auf 12 unsichtbar: Weisen Sie ihnen Ziele zu (Profile, Gruppen oder Benutzer).
  • Nach Image-Update startet GLPI nicht mehr: Migration gescheitert. Spielen Sie das Backup in eine leere Datenbank ein (nie in eine teilweise migrierte), setzen Sie GLPI_SKIP_AUTOUPDATE: "true" und starten Sie das Update per docker exec glpi-app php /var/www/glpi/bin/console database:update; die Ausgabe zeigt die Ursache.
  • Login liefert „Der angeforderte Vorgang ist nicht erlaubt“ (HTTP 403): GLPI 12 lehnt Formulare ab, deren Origin nicht zum Host passt. Reverse Proxy muss den Hostnamen weitergeben, „Webadresse der Anwendung“ muss stimmen.
  • Plugin fehlt nach dem Update auf GLPI 11 oder 12: Die Plugin-Ausführung ist ausgesetzt oder das Plugin ist inkompatibel. Unter Konfiguration > Erweiterungen eine kompatible Version installieren und aktivieren.
  • Falscher Volume-Pfad, Daten nach Neustart verschwunden: Das offizielle Image verwendet /var/glpi, nicht /var/www/html/glpi wie diouxx/glpi. Der Eintrag muss /volume1/docker/glpi/data:/var/glpi lauten.

Häufige Fragen

Welche GLPI-Version soll ich verwenden: 10, 11 oder 12?

Für neue Installationen GLPI 12 (stabil seit 7. Oktober 2026). 10.0 und 11.0 erhalten nur noch Wartungsreleases (zuletzt 10.0.28 bzw. 11.0.11). Der Tag glpi/glpi:12.0 folgt dem neuesten 12.0-Patch; ein fester Tag wie 12.0.0 legt den Update-Zeitpunkt fest. Fehlen Plugins für 12, bleiben Sie vorerst bei 11.0.11.

Muss ich FusionInventory als Plugin installieren?

Nein. Seit GLPI 10 ist das Inventar eingebaut, die Clients nutzen den GLPI-Agent (Schritt 7).

Wie richte ich die Sprache für alle Benutzer auf Deutsch ein?

Über den Reiter „Standardwerte“ (Schritt 4); Benutzer können im Profil abweichen.

Wie sichere ich GLPI korrekt?

Sichern Sie /volume1/docker/glpi/data und /volume1/docker/glpi/db per Hyper Backup und erstellen Sie zusätzlich regelmäßig einen SQL-Dump:

docker exec glpi-db mysqldump -u root -pROOT_PASSWORT glpi > /volume1/docker/glpi/backup_$(date +%Y%m%d).sql

Nur beide Teile zusammen erlauben eine vollständige Wiederherstellung.

Kann ich GLPI mit Snipe-IT oder NetBox kombinieren?

Ja: GLPI übernimmt Ticketing und Lizenzen. Snipe-IT auf dem Synology NAS verwaltet Ausgabe und Rücknahme von Geräten. NetBox auf dem Synology NAS dokumentiert IP-Adressen und Netz.

Was ist der Unterschied zwischen dem offiziellen und dem inoffiziellen GLPI-Image?

Das offizielle Image glpi/glpi pflegt das GLPI-Projekt selbst für 10.0, 11.0 und 12.0. Das Community-Image diouxx/glpi wurde zuletzt im Dezember 2024 aktualisiert und verwendet andere Volume-Pfade (/var/www/html/glpi statt /var/glpi).

Fazit

Healthcheck, automatische Erstinstallation und interner Cron machen GLPI 12 auf dem Synology NAS wartungsarm. Wer GLPI mit einem strukturierten IP-Adressplan und Netzwerkdokumentation kombiniert, hat Tickets, Inventar und Netz ohne Lizenzkosten und Cloud-Abhängigkeit dokumentiert.

Weiterführende Anleitungen und Quellen

Offizielle Quellen: GLPI Docker-Images auf GitHub (glpi-project/docker-images) · GLPI Installations-Dokumentation (Systemvoraussetzungen) · GLPI-Dokumentation: Update · GLPI-Release 12.0.0 · GLPI-Changelog 12.0.0 · GLPI auf Docker Hub · GLPI-Projektblog: Run GLPI with Docker