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

Snipe-IT auf dem Synology NAS installieren: IT-Inventarisierung mit System

Snipe-IT v8.8.0 per Container Manager auf dem Synology NAS installieren: mit korrektem APP_KEY, MariaDB-Healthcheck, Reverse-Proxy-Konfiguration und erstem Asset mit QR-Code-Etikett.

Geprüft am 11.10.2026 · für snipe-it 8.8.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

Kompaktes NAS mit vier Laufwerksschächten neben gestapelten Laptops und einem Barcodescanner auf einem Büroregal

Snipe-IT ist eine webbasierte Open-Source-Software für das IT-Asset-Management (aktuell v8.8.0, Laravel 12 / PHP 8.3). Sie verwaltet Hardware, Lizenzen und Zubehör mit Checkout/Checkin-Workflow, Wartungsprotokollen, benutzerdefinierten Feldern und QR-Code-Etiketten. Cyber-Versicherer und Compliance-Audits verlangen zunehmend ein solches Inventar. Auf einem Synology NAS mit DSM 7.2 und Container Manager läuft Snipe-IT ohne separaten Server und ohne Portainer; die Daten liegen in Ordnern, die Sie in der File Station sehen.

Voraussetzungen

  1. Synology NAS mit DSM 7.2 oder neuer und installiertem Container Manager
  2. Mindestens 2 GB RAM frei (4 GB empfohlen); Snipe-IT mit MariaDB belegt im Betrieb etwa 400 bis 600 MB, Architektur x86-64 oder ARM64
  3. Mindestens 5 GB freier Speicher auf /volume1 für Docker-Images und Datenbankdateien
  4. SSH-Zugang zum NAS (für APP_KEY-Generierung und ggf. Rechte-Korrekturen)
  5. Feste lokale IP oder DDNS-Hostname (z. B. meinname.synology.me) für die APP_URL
  6. SSL-Zertifikat im DSM (Let's Encrypt oder eigenes) für den Reverse Proxy
  7. SMTP-Zugangsdaten (optional) für Passwort-Reset und Benachrichtigungen

Schritt 1: Ordnerstruktur anlegen

Öffnen Sie die File Station im DSM und navigieren Sie zu /volume1/docker. Legen Sie dort den Ordner snipeit an, darin die Unterordner storage, db und optional logs. Alternativ per SSH:

mkdir -p /volume1/docker/snipeit/storage
mkdir -p /volume1/docker/snipeit/db
mkdir -p /volume1/docker/snipeit/logs

PUID und PGID tragen Sie später in die compose.yaml ein (Beispiel: PUID=1026, PGID=100). Ihre eigene UID ermitteln Sie per SSH mit id ihrbenutzername.

Verifizieren: In der File Station sind die Ordner storage, db und logs unter /volume1/docker/snipeit sichtbar.

Schritt 2: compose.yaml erstellen

Öffnen Sie den Container Manager, wechseln Sie zu „Projekt“ und klicken Sie auf „Erstellen“. Vergeben Sie den Projektnamen snipeit und wählen Sie als Pfad /volume1/docker/snipeit. Fügen Sie folgende compose.yaml ein und passen Sie Passwörter, APP_URL und PUID/PGID an Ihre Umgebung an:

services:
  snipeit-db:
    image: mariadb:11.4.7
    container_name: snipeit-db
    restart: unless-stopped
    volumes:
      - /volume1/docker/snipeit/db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "sicheres_root_passwort"
      MYSQL_DATABASE: "snipe"
      MYSQL_USER: "snipe"
      MYSQL_PASSWORD: "sicheres_passwort"
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 5s
      timeout: 1s
      retries: 5

  snipeit:
    image: snipe/snipe-it:v8.8.0
    container_name: snipeit
    restart: unless-stopped
    depends_on:
      snipeit-db:
        condition: service_healthy
    ports:
      - "8000:80"
    volumes:
      - /volume1/docker/snipeit/storage:/var/lib/snipeit
      - /volume1/docker/snipeit/logs:/var/www/html/storage/logs
    environment:
      APP_ENV: "production"
      APP_DEBUG: "false"
      APP_KEY: "base64:HIER_GENERIERTEN_KEY_EINTRAGEN"
      APP_URL: "https://snipeit.meinname.synology.me"
      APP_TIMEZONE: "Europe/Berlin"
      APP_FORCE_TLS: "true"
      APP_TRUSTED_PROXIES: "REMOTE_ADDR"
      APP_TRUSTED_HEADERS: "HEADER_X_FORWARDED_FOR,HEADER_X_FORWARDED_HOST,HEADER_X_FORWARDED_PORT,HEADER_X_FORWARDED_PROTO"
      SECURE_COOKIES: "true"
      DB_CONNECTION: "mysql"
      MYSQL_PORT_3306_TCP_ADDR: "snipeit-db"
      MYSQL_PORT_3306_TCP_PORT: "3306"
      MYSQL_DATABASE: "snipe"
      MYSQL_USER: "snipe"
      MYSQL_PASSWORD: "sicheres_passwort"
      TZ: "Europe/Berlin"
      PUID: "1026"
      PGID: "100"

Wichtige Hinweise zu den Umgebungsvariablen:

  1. APP_KEY: Platzhalter, wird in Schritt 3 generiert und hier eingetragen.
  2. APP_URL: Exakt die Adresse, unter der Snipe-IT erreichbar ist, ohne abschließenden Schrägstrich, sonst stimmen QR-Codes und E-Mail-Links nicht.
  3. MYSQL_PASSWORD ist in beiden Services identisch.
  4. APP_TRUSTED_HEADERS: Seit v8.8.0 vertraut Snipe-IT weitergeleiteten Headern nur noch, wenn sie hier ausdrücklich aufgeführt sind. Ohne diese Zeile erkennt Snipe-IT hinter dem Reverse Proxy weder HTTPS noch die echte Client-IP.
  5. Image-Tags: Verwenden Sie feste Tags statt :latest, weil unerwartete Major-Updates Breaking Changes und erzwungene Datenbank-Migrationen auslösen können. mariadb:11.4.7 entspricht dem Compose-File von Snipe-IT v8.8.0.

Verifizieren: Speichern Sie die compose.yaml, ohne den Stack zu starten. Prüfen Sie im Container Manager unter „Projekt“, ob das Projekt aufgelistet wird.

Schritt 3: APP_KEY generieren

Der APP_KEY ist der Laravel-Verschlüsselungsschlüssel der Anwendung. Ohne gültigen Key meldet Snipe-IT „No application encryption key has been specified“. Erzeugen Sie ihn einmalig und lassen Sie ihn dauerhaft in der compose.yaml stehen.

Melden Sie sich per SSH am NAS an. DSM verlangt für docker-Befehle sudo. Führen Sie aus:

sudo docker run --rm snipe/snipe-it:v8.8.0 php artisan key:generate --show

Der Befehl lädt das Image bei Bedarf (im Test etwa 25 Sekunden) und gibt einen Schlüssel aus:

base64:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890AbCdEfGhIjK=

Kopieren Sie die gesamte Ausgabe inklusive base64:. Öffnen Sie die compose.yaml (Container Manager > Projekt > snipeit > Bearbeiten) und ersetzen Sie base64:HIER_GENERIERTEN_KEY_EINTRAGEN mit dem kopierten Wert.

Verifizieren: Der Wert hat das Muster base64:<44 Zeichen> (der Schlüssel endet auf =) und steht ohne Leerzeichen in Anführungszeichen.

Schritt 4: Synology Reverse Proxy einrichten

Für den HTTPS-Zugang über eine saubere Domain konfigurieren Sie den Synology Reverse Proxy unter DSM > Systemsteuerung > Anmeldungsportal > Erweitert > Reverse Proxy. Erstellen Sie eine neue Regel:

EinstellungWert
QuellprotokollHTTPS
Quell-Hostnamesnipeit.meinname.synology.me
Quellport443
ZielprotokollHTTP
Ziel-Hostnamelocalhost
Zielport8000

Hinterlegen Sie für die Quell-Domain ein gültiges Zertifikat unter DSM > Systemsteuerung > Sicherheit > Zertifikat; Let's-Encrypt-Zertifikate erneuert DSM automatisch.

Die Variablen APP_TRUSTED_PROXIES=REMOTE_ADDR, APP_TRUSTED_HEADERS und SECURE_COOKIES=true in der compose.yaml sind hinter diesem Reverse Proxy zwingend. Fehlen sie, entsteht eine endlose HTTPS-Redirect-Schleife.

Verifizieren: Rufen Sie nach dem Stack-Start https://snipeit.meinname.synology.me im Browser auf. Der Browser zeigt keine Zertifikatswarnung und leitet auf den Setup-Wizard (später die Anmeldeseite) weiter, nicht auf eine Fehlerseite oder Endlosschleife.

Schritt 5: Stack starten und Migrationen prüfen

Starten Sie das Projekt im Container Manager. Der Container Manager lädt zunächst die Images. Der Healthcheck sorgt dafür, dass Snipe-IT erst startet, wenn MariaDB bereit ist.

Prüfen Sie nach dem Start per SSH das Migrations-Log (im Test nach etwa 90 Sekunden vollständig):

sudo docker logs snipeit 2>&1 | grep -i migrat

Eine erfolgreiche Migration zeigt nach der Meldung Running migrations eine lange Liste von Einträgen im Format:

  2018_05_14_223646_add_indexes_to_assets ...................... 867.66ms DONE
  2018_06_21_134622_add_version_footer ......................... 120.55ms DONE
  ...

Erscheinen keine Einträge, warten Sie 30 bis 60 Sekunden und wiederholen Sie den Befehl.

Verifizieren: Die Liste endet mit DONE-Einträgen ohne SQLSTATE oder Connection refused, und beide Container stehen im Container Manager auf „Läuft“.

Schritt 6: Setup-Wizard und erste Einrichtung

Nach erfolgreichen Migrationen rufen Sie im Browser folgende Adresse auf:

https://snipeit.meinname.synology.me/setup

Der Setup-Wizard hat vier Stationen:

  1. Konfigurationsprüfung: Snipe-IT prüft PHP-Version, APP_URL, Datenbankverbindung, Konfigurationsdatei und Schreibrechte. Meldet die Prüfung „Snipe-IT thinks your URL is …“, weicht die aufgerufene Adresse von APP_URL ab.
  2. Datenbanktabellen: Die Migrationen aus Schritt 5 sind beim Start des Containers bereits gelaufen.
  3. Admin-Konto anlegen: Sie vergeben Seitenname, Vor- und Nachname, E-Mail-Adresse, Benutzername und Passwort, optional Präfix und Länge der Asset-Tags, Sprache (Deutsch) und Währung (EUR).
  4. Abschluss: Danach melden Sie sich an der Anmeldeseite an.

Verifizieren: Nach dem Wizard können Sie sich mit den Admin-Zugangsdaten anmelden und sehen das Dashboard. Bis der Wizard abgeschlossen ist, leitet Snipe-IT jeden Aufruf von / auf /setup um; das ist kein Fehler.

Schritt 7: Erstes Asset mit Etikett anlegen

Legen Sie vor dem ersten Asset diese Stammdaten an:

  1. Einstellungen > Barcodes: Wählen Sie den Barcode-Typ (QR-Code empfohlen, alternativ Code128); hier lässt sich auch ein Logo für die Etiketten hochladen.
  2. Einstellungen > Kategorien: Legen Sie Kategorien an, z. B. „Laptop“, „Monitor“, „Server“, „Software-Lizenz“.
  3. Einstellungen > Hersteller: Fügen Sie Hersteller hinzu (Dell, HP, Lenovo …).
  4. Einstellungen > Standorte: Definieren Sie mindestens einen Standort, z. B. „Hauptbüro“ oder „Lager“.

Danach erfassen Sie unter Assets > Erstellen das erste Gerät: Asset-Tag (automatisch oder manuell, z. B. „PC-0001“), Modell, Hersteller, Kategorie, Seriennummer (wichtig für Versicherungsnachweise), Standort und optional einen Benutzer (Checkout). Über „Etikett drucken“ erhalten Sie ein PDF mit QR-Code, Asset-Tag und Seriennummer für den Etikettendrucker.

Verifizieren: Das neue Asset erscheint in der Asset-Liste unter Assets > Alle Assets. Der QR-Code auf dem generierten Etikett muss beim Scannen exakt auf die Asset-Detailseite unter Ihrer konfigurierten APP_URL zeigen. Stimmt die URL nicht (etwa wegen eines Slashs am Ende von APP_URL), führt der Scan ins Leere.

Eckdaten auf einen Blick

EigenschaftWert
Image (App)snipe/snipe-it:v8.8.0
Image (Alpine)snipe/snipe-it:v8.8.0-alpine (kleinere Variante)
Image (Datenbank)mariadb:11.4.7
Architekturenlinux/amd64, linux/arm64
Interner Port80 (Container), 8000 (Host)
Volume App-Daten/volume1/docker/snipeit/storage:/var/lib/snipeit
Volume Datenbank/volume1/docker/snipeit/db:/var/lib/mysql
Volume Logs (optional)/volume1/docker/snipeit/logs:/var/www/html/storage/logs
RAM-Bedarf (Betrieb)etwa 400 bis 600 MB (App + DB)
FrameworkLaravel 12 / PHP 8.3 (Mindestanforderung PHP 8.2, im Image enthalten)

Troubleshooting / Typische Fehler

  1. „No application encryption key has been specified“: Der APP_KEY fehlt oder ist ungültig. Prüfen Sie, ob der vollständige String inklusive base64:-Präfix eingetragen ist und keine Leerzeichen enthält. Generieren Sie gegebenenfalls einen neuen Key wie in Schritt 3 beschrieben, tragen Sie ihn ein und starten Sie den Container neu.
  2. „SQLSTATE[HY000] [2002] Connection refused“: Snipe-IT startete, bevor MariaDB bereit war. Prüfen Sie Healthcheck und depends_on mit condition: service_healthy in der compose.yaml und starten Sie den Stack neu.
  3. Endlose Redirect-Schleife (HTTPS): APP_TRUSTED_PROXIES=REMOTE_ADDR, APP_TRUSTED_HEADERS oder SECURE_COOKIES=true fehlen in der compose.yaml. Tragen Sie sie ein und starten Sie den Container neu.
  4. Nach dem Update auf v8.8 plötzlich Redirect-Schleife oder falsche Client-IPs im Log: Seit v8.8.0 gibt es keinen eingebauten Standard für vertrauenswürdige Header mehr. Ergänzen Sie APP_TRUSTED_HEADERS wie in Schritt 2. Ungültige Einträge meldet das Log mit Error parsing APP_TRUSTED_HEADERS.
  5. Uploads oder Logs nicht schreibbar: Die Volume-Ordner gehören einem anderen Benutzer als dem Container-Prozess. Ermitteln Sie Ihre ID per id ihrbenutzername und passen Sie PUID und PGID in der compose.yaml an.
  6. QR-Code-Links führen auf falsche URL: APP_URL weicht von der aufgerufenen Adresse ab (Slash am Ende, falsche Domain oder falsches Protokoll). Der Wert muss genau der Browser-Adresse entsprechen.
  7. Setup-Wizard nicht erreichbar nach Start: Die Datenbank-Migrationen laufen noch (im Test war die Oberfläche nach rund 90 Sekunden erreichbar). Warten Sie einige Minuten und prüfen Sie mit sudo docker logs snipeit 2>&1 | grep -i migrat.
  8. Container startet, aber App zeigt 500-Fehler: Prüfen Sie mit sudo docker logs snipeit 2>&1 | tail -50 die letzten Zeilen. Häufige Ursachen: unterschiedliches MYSQL_PASSWORD in App und DB oder fehlende Schreibrechte auf dem Storage-Volume.

Häufige Fragen

Muss ich Portainer installieren, oder reicht der Container Manager?

Portainer ist nicht erforderlich. Der Container Manager ab DSM 7.2 unterstützt Compose-Projekte nativ (Projekt > Erstellen). Nutzen Sie bereits Portainer, funktioniert dieselbe compose.yaml dort ebenfalls.

Welche Synology-Modelle werden unterstützt?

Das Image unterstützt linux/amd64 (Synology-Modelle mit Intel/AMD-CPU, etwa DS224+, DS923+) und linux/arm64. 32-Bit-ARM-Modelle werden nicht unterstützt. Auf Modellen mit wenig Speicher bietet sich die kleinere Variante snipe/snipe-it:v8.8.0-alpine an.

Was ist der Unterschied zwischen Snipe-IT und GLPI?

Snipe-IT ist reines Asset-Management mit Hardware-Inventar, Lizenzen, Zubehör, Verbrauchsmaterial, Checkout/Checkin und QR-Etiketten, aber ohne Ticketsystem. GLPI bietet zusätzlich Ticketsystem, CMDB, Projektmodul und Wissensbank, ist aber aufwendiger einzurichten. Wenn Sie beides brauchen, lesen Sie GLPI auf dem Synology NAS an.

Warum ist Snipe-IT für Cyber-Versicherungen relevant?

Versicherer fragen häufig nach einem vollständigen Überblick über Endgeräte, Seriennummern, Lizenzen und Verantwortlichkeiten. Snipe-IT liefert dafür ein Inventar mit Änderungsprotokoll. Siehe die Cyber-Versicherungs-Checkliste für KMU.

Wie führe ich ein Update auf eine neue Snipe-IT-Version durch?

Sichern Sie zuerst Datenbank und Storage-Volume. Ändern Sie dann den Image-Tag in der compose.yaml (z. B. von v8.6.1 auf v8.8.0), laden Sie das Image mit sudo docker pull snipe/snipe-it:v8.8.0 und starten Sie den Stack neu. Snipe-IT führt ausstehende Migrationen beim Start aus; prüfen Sie das Log wie in Schritt 5. Beim Sprung auf v8.8.0 oder neuer ergänzen Sie zusätzlich APP_TRUSTED_HEADERS (Schritt 2). PHP 8.2 als Mindestversion bringt das Image mit PHP 8.3 bereits mit.

Wie richte ich E-Mail-Benachrichtigungen ein?

Tragen Sie die SMTP-Parameter in die compose.yaml ein: MAIL_PORT_587_TCP_ADDR (SMTP-Host), MAIL_PORT_587_TCP_PORT (587), MAIL_ENV_USERNAME, MAIL_ENV_PASSWORD (bei Gmail ein 16-stelliges App-Passwort), MAIL_ENV_FROM_ADDR und MAIL_ENV_ENCRYPTION=TLS, und starten Sie den Container neu. Anpassen und testen können Sie die Konfiguration auch unter Einstellungen > E-Mail.

Fazit

Der Container Manager übernimmt den Betrieb der Container; ein korrekt gesetzter APP_KEY und die Reverse-Proxy-Variablen (seit v8.8.0 inklusive APP_TRUSTED_HEADERS) vermeiden die häufigsten Startprobleme. Nach etwa 45 Minuten steht ein Inventar mit QR-Code-Etiketten, Lizenzverwaltung und Änderungsprotokoll bereit, das Sie bei Compliance-Dokumentation und Versicherungsanfragen vorlegen können.

Zur Absicherung der Container lesen Sie Docker Compose absichern: Secrets, Healthchecks und Non-Root.

Weiterführende Anleitungen und Quellen

  1. GLPI auf dem Synology NAS: Helpdesk und IT-Asset-Management für KMU
  2. Cyber-Versicherung für KMU: Anforderungen und Checkliste 2026
  3. Docker Compose absichern: Secrets, Healthchecks und Non-Root
  4. Nginx Proxy Manager auf der Synology mit Container Manager einrichten

Offizielle Quellen: Snipe-IT Docker-Dokumentation (snipe-it.readme.io) | Snipe-IT GitHub Repository mit docker-compose.yml | snipe/snipe-it auf Docker Hub (Tags und Architekturen) | Release Notes Snipe-IT v8.8.0.