# 11. Admin-Bereich

**URL:** `http(s)://url/admin`

![Admin-Panel](../images/admin-panel.png)

> ⚠️ **Hinweis:** Der Admin-Bereich ist nur für Benutzer mit **Administrator-Rolle** sichtbar und zugänglich.

Das Admin-Panel ist die zentrale Anlaufstelle für die **Systemadministration**. Es bietet Zugriff auf folgende Bereiche:

| Kachel | Beschreibung |
|--------|--------------|
| **Users** | Benutzerverwaltung |
| **Roles & Permissions** | Rollen und Berechtigungen |
| **Devices** | Geräte-Token-Verwaltung |
| **System Extra Fields** | Systemweite Zusatzfelder für Spulen und Filamente |
| **System** | Plugins und Systemverwaltung |
| **Database Backup** | Datenbank-Backups exportieren und wiederherstellen |
| **OIDC / SSO** | OpenID Connect Single Sign-On Konfiguration |

---

## 11.1 Benutzerverwaltung (Users)

**URL:** `http(s)://url/admin/users`

![Benutzerverwaltung](../images/admin-users.png)

Hier können Administratoren alle Benutzer des Systems verwalten. Die Tabelle zeigt:

| Spalte | Beschreibung |
|--------|-------------|
| **EMAIL** | E-Mail-Adresse des Benutzers (dient als Login) |
| **DISPLAY NAME** | Anzeigename in der Anwendung |
| **STATUS** | Aktiv / Inaktiv |
| **ROLES** | Zugewiesene Rollen (z. B. Superadmin, User) |
| **ACTIONS** | Edit / Reset PW |

Verfügbare Aktionen:
- **Add User** (oben rechts) – Neuen Benutzer mit E-Mail, Passwort und Rolle erstellen
- **Edit** – E-Mail, Name oder Rolle eines Users ändern
- **Reset PW** – Passwort eines Benutzers zurücksetzen

---

## 11.2 Rollen & Berechtigungen (Roles & Permissions)

**URL:** `http(s)://url/admin/roles`

![Rollen & Berechtigungen](../images/admin-roles.png)

FilaMan enthält drei **Standard-Systemrollen**, die nicht gelöscht werden können:

| Rolle | Kennung | Beschreibung |
|-------|---------|--------------|
| **Administrator** | `admin` | Vollzugriff auf alle Funktionen und den Admin-Bereich |
| **User** | `user` | Standard-Benutzer mit Lese- und Schreibzugriff |
| **Viewer** | `viewer` | Nur-Lese-Zugriff |

Über **„Create Role"** (oben rechts) können eigene Rollen mit benutzerdefinierten Berechtigungen angelegt werden. Mit **„Edit Permissions"** lassen sich die Berechtigungen jeder Rolle granular anpassen.

Klicken Sie auf eine Rolle, um die zugeordneten Berechtigungen im rechten Bereich (**Permissions**) einzusehen und zu bearbeiten.

---

## 11.3 Geräte (Devices)

**URL:** `http(s)://url/admin/devices`

![Geräte-Verwaltung](../images/admin-devices.png)

Hier werden **externe Geräte** verwaltet, die über die FilaMan-API kommunizieren (z. B. ESP32-Waagen mit RFID-Scanner). Jedes Gerät erhält einen eigenen API-Token für die Authentifizierung.

### Geräte-Aktionen

- **Gerät hinzufügen** – Neues Gerät mit Name und optionalem Gerätecode erstellen
- **Token erstellen** – Neuen API-Token für ein Gerät generieren
- **Token widerrufen** – Zugang eines Geräts deaktivieren
- **Bearbeiten** – Gerätename und Einstellungen ändern

### Auto-Assign Konfiguration

Für jedes Gerät können folgende Einstellungen für die **automatische Spulenzuordnung** konfiguriert werden:

| Einstellung | Beschreibung |
|-------------|-------------|
| **Auto-Assign aktiviert** | Wenn aktiviert, wird nach dem Wiegen einer Spule auf diesem Gerät automatisch ein Pending-Auftrag an alle verbundenen Drucker gesendet. Sobald die Spule in einen AMS-Slot eingelegt wird, werden die Filament-Einstellungen automatisch übertragen. |
| **Auto-Assign Timeout** | Zeit in Sekunden, nach der ein ausstehender Zuordnungsauftrag automatisch verworfen wird (Standard: 60 Sekunden). Wenn innerhalb dieser Zeit keine Spule eingelegt wird, verfällt der Auftrag. |

> **Hinweis:** Auto-Assign wird pro Gerät konfiguriert, nicht pro Drucker. Wenn Auto-Assign für ein Gerät aktiviert ist, werden ALLE verbundenen Drucker benachrichtigt. Die Zuordnung erfolgt dann automatisch bei dem Drucker, in den die Spule tatsächlich eingelegt wird.

Weitere Informationen zum Ablauf: → [Drucker: Automatische Spulenzuordnung](/Docs/De/09-Drucker#automatische-spulenzuordnung-auto-assignment)

---

## 11.4 Zusatzfelder (Extra Fields)

**URL:** `http(s)://url/admin/extra-fields`

![Zusatzfelder](../images/admin-extra-fields.png)

Mit **System Extra Fields** können Administratoren zusätzliche Datenfelder für Spulen und Filamente definieren, die über die Standardfelder hinausgehen. Diese Felder werden automatisch zu allen Filamenten oder Spulen hinzugefügt.

| Spalte | Beschreibung |
|--------|-------------|
| **TARGET TYPE** | Ob das Feld für Filamente oder Spulen gilt |
| **KEY (JSON)** | Interner JSON-Schlüssel für das Feld |
| **DISPLAY LABEL** | Anzeigetext in der Benutzeroberfläche |
| **DEFAULT VALUE (OPTIONAL)** | Optionaler Standardwert |

Klicken Sie auf **„Add Field"** (oben rechts), um ein neues Zusatzfeld zu erstellen.

Beispiele für Zusatzfelder:
- „Trocknungszeit" für Spulen
- „Drucktemperatur" für Filamente
- „Lieferant" als ergänzendes Herstellerfeld

Wenn Zusatzfelder erstellt wurden, erscheinen diese als neue Eingabefelder in den entsprechenden Formularen (Spule hinzufügen, Filament hinzufügen).

---

## 11.5 System (Plugin-Verwaltung)

**URL:** `http(s)://url/admin/system`

![System-Einstellungen](../images/admin-system.png)

Der System-Bereich ist die zentrale Stelle für die **Plugin-Verwaltung**. Hier werden alle installierten Plugins angezeigt und verwaltet.

### Plugin-Übersicht

Die Plugin-Tabelle zeigt alle installierten Plugins mit folgenden Spalten:

| Spalte | Beschreibung |
|--------|-------------|
| **NAME** | Name und kurze Beschreibung des Plugins |
| **VERSION** | Installierte Version (z. B. 2.1.10) |
| **TYPE** | Art des Plugins: **Driver** (Druckertreiber), **Import** (Datenimport) oder **Integration** (Drittanbieter-Anbindung) |
| **AUTHOR** | Autor des Plugins |
| **STATUS** | Aktiviert/Deaktiviert — per Toggle-Schalter umschaltbar |
|| **ACTIONS** | Details / Aktualisieren (wenn Update verfügbar) / Öffnen / Deinstallieren |

### Plugin installieren

Klicken Sie auf **„Install Plugin"** oben rechts. Es öffnet sich ein Dialog mit zwei Installationsmöglichkeiten:

#### Option 1: Aus der Plugin-Registry installieren (empfohlen)

1. Im Dropdown **„Install from Registry"** werden alle verfügbaren Plugins angezeigt
2. Die Liste wird automatisch aus dem offiziellen Plugin-Repository ([Fire-Devils/filaman-plugins](https://github.com/Fire-Devils/filaman-plugins)) auf GitHub geladen
3. Wählen Sie das gewünschte Plugin aus dem Dropdown — Name, Version und Beschreibung werden angezeigt
4. Klicken Sie auf **„Install Plugin"** um die Installation zu starten
5. FilaMan lädt das Plugin automatisch herunter, validiert es und installiert es

#### Option 2: ZIP-Datei manuell hochladen

1. Unterhalb des Registry-Dropdowns befindet sich der Bereich **„Plugin ZIP File"**
2. Ziehen Sie eine `.zip`-Datei per **Drag & Drop** in den markierten Bereich — oder klicken Sie darauf, um eine Datei auszuwählen
3. Die Datei wird automatisch validiert (Struktur, Manifest, Sicherheit)
4. Bei erfolgreicher Validierung erscheint eine Bestätigung mit Plugin-Details
5. Klicken Sie auf **„Install Plugin"** um die Installation abzuschließen

> **Hinweis:** Manuelle ZIP-Uploads sind für Entwickler oder für Plugins gedacht, die noch nicht in der offiziellen Registry verfügbar sind.

### Updates prüfen

Klicken Sie auf **„Check for Updates"** oben rechts neben dem Install-Button.

- FilaMan vergleicht die installierten Plugin-Versionen mit den neuesten Versionen in der Registry
- Wenn Updates verfügbar sind, wird eine Benachrichtigung mit der Anzahl der verfügbaren Updates angezeigt
- Jedes Plugin mit verfügbarem Update erhält in der Plugin-Tabelle einen **Update-Button** mit der neuen Versionsnummer
- Klicken Sie auf diesen Button, um das jeweilige Plugin direkt auf die neueste Version zu aktualisieren

### Plugin aktivieren / deaktivieren

Jedes Plugin kann über den **Toggle-Schalter** in der Status-Spalte aktiviert oder deaktiviert werden:

- **Aktiviert** — Das Plugin ist aktiv und seine Funktionen stehen zur Verfügung (z. B. Druckertreiber werden geladen)
- **Deaktiviert** — Das Plugin bleibt installiert, ist aber inaktiv. Bereits verbundene Drucker werden getrennt

### Plugin deinstallieren

1. Klicken Sie auf **„Uninstall"** in der Actions-Spalte des Plugins
2. Bestätigen Sie die Deinstallation im Bestätigungsdialog
3. Es erscheint eine zusätzliche Abfrage, ob auch die **Plugin-Daten** (z. B. Zusatzfelder, Drucker-Parameter) gelöscht werden sollen:
   - **Ja** — Entfernt das Plugin und alle zugehörigen Daten (Zusatzfelder, gespeicherte Parameter)
   - **Nein** — Entfernt nur das Plugin, die Daten bleiben erhalten (nützlich bei Neuinstallation)

### Plugin-Details

Klicken Sie auf **„Details"** um ausführliche Informationen zu einem Plugin anzuzeigen:

- Plugin-Name, Version und Beschreibung
- Plugin-Typ (Driver / Import / Integration)
- Autor und Homepage
- Unterstützte Fähigkeiten (z. B. AMS-Unterstützung, RFID, Auto-Match)
- Liste der vom Plugin erstellten Drucker-Parameter

---

## 11.6 Datenbank-Backup & Wiederherstellung

**URL:** `http(s)://url/admin/backup`

> ⚠️ **Hinweis:** Alle Backup- und Wiederherstellungsfunktionen sind ausschließlich für **Superadmins** verfügbar.

Der Backup-Bereich bietet umfassende Möglichkeiten, die FilaMan-Datenbank zu sichern und wiederherzustellen. Es stehen zwei Backup-Modi zur Verfügung: **Vollständiges Backup** (alle Daten) und **Inventar-Backup** (nur Bestandsdaten).

### Vollständiges Backup exportieren

Exportiert **alle Daten** der Datenbank als JSON-Datei, einschließlich:
- Benutzer, Passwörter, API-Keys und Sessions
- Rollen und Berechtigungen
- Geräte und Plugins
- Alle Bestandsdaten (Hersteller, Filamente, Spulen, Drucker, Farben, Lagerorte etc.)

Klicken Sie auf **„Export Backup"**, um die Datei herunterzuladen. Der Dateiname enthält automatisch einen Zeitstempel (z. B. `filaman_backup_20260313_120000.json`).

> ⚠️ **Sicherheitshinweis:** Die exportierte Datei enthält **sensible Daten** (Passwort-Hashes, API-Schlüssel). Bewahren Sie diese Datei sicher auf und teilen Sie sie nicht mit Dritten!

### Vollständiges Backup importieren

Stellt ein zuvor exportiertes vollständiges Backup wieder her.

1. Wählen Sie eine `.json`-Backup-Datei über den Datei-Upload aus
2. Klicken Sie auf **„Import Backup"**
3. Bestätigen Sie den Vorgang im Bestätigungsdialog
4. Ein Fortschrittsbalken zeigt den Status des Imports an
5. Nach erfolgreichem Import wird die Seite automatisch neu geladen

> 🚨 **Achtung:** Beim Import werden **ALLE bestehenden Daten gelöscht** und durch die Daten aus dem Backup ersetzt! Vor dem Import wird automatisch ein Sicherungs-Backup der aktuellen Daten erstellt.

### Inventar exportieren

Exportiert **nur Bestandsdaten** als JSON-Datei:
- Hersteller, Farben, Lagerorte
- Filamente und Spulen
- Drucker und Drucker-Slots
- Bewertungen, Ereignisse und Zusatzfelder

**Nicht enthalten** sind: Benutzer, Passwörter, API-Keys, Sessions, Rollen, Berechtigungen, Geräte, Plugins und OIDC-Einstellungen.

Klicken Sie auf **„Export Inventory"**, um die Datei herunterzuladen (z. B. `filaman_inventory_20260313_120000.json`).

> ✅ **Sicher zum Teilen:** Der Inventar-Export enthält keine sensiblen Authentifizierungsdaten und kann bedenkenlos zwischen FilaMan-Instanzen ausgetauscht werden.

### Inventar importieren

Importiert Bestandsdaten von einer anderen FilaMan-Instanz. Benutzer, Rollen, Geräte und Plugins bleiben dabei **unverändert**.

1. Wählen Sie eine `.json`-Inventar-Datei über den Datei-Upload aus
2. Klicken Sie auf **„Import Inventory"**
3. Bestätigen Sie den Vorgang im Bestätigungsdialog
4. Der Import wird mit einem Fortschrittsbalken angezeigt

> ⚠️ **Achtung:** Beim Import werden die **bestehenden Bestandsdaten gelöscht** und durch die importierten Daten ersetzt! Benutzer und Einstellungen bleiben erhalten. Vor dem Import wird automatisch ein Sicherungs-Backup erstellt.

### SQLite-Backups

> **Hinweis:** Dieser Bereich ist nur sichtbar, wenn FilaMan mit einer **SQLite-Datenbank** betrieben wird. Bei MySQL oder PostgreSQL müssen Backups extern durch den Administrator verwaltet werden.

FilaMan erstellt automatisch SQLite-Backups der Datenbank (täglich und vor Updates). Diese werden im Backup-Verzeichnis gespeichert (Standard: `/app/data/backups`).

Die Tabelle zeigt alle vorhandenen Backups mit folgenden Informationen:

| Spalte | Beschreibung |
|--------|-------------|
| **File** | Dateiname des Backups |
| **Date** | Erstellungsdatum |
| **Size** | Dateigröße |

Für jedes Backup stehen zwei Aktionen zur Verfügung:
- **Restore** — Stellt die Datenbank aus diesem Backup wieder her. Vor der Wiederherstellung wird automatisch ein Backup der aktuellen Datenbank erstellt. Nach der Wiederherstellung muss die Anwendung neu geladen werden.
- **Delete** — Löscht die ausgewählte Backup-Datei dauerhaft.

---

## 11.7 OIDC / SSO

**URL:** `http(s)://url/admin/oidc`

> ⚠️ **Hinweis:** Die OIDC-Kachel im Admin-Panel ist nur klickbar, wenn FilaMan über **HTTPS** aufgerufen wird. Bei HTTP-Verbindungen zeigt die Kachel einen Hinweis, dass OIDC nur über HTTPS funktioniert, und ist nicht klickbar.

In diesem Bereich können Administratoren **OpenID Connect (OIDC)** für Single Sign-On (SSO) konfigurieren. Benutzer können sich dann über einen externen Identity Provider anmelden (z. B. Authentik, Keycloak, Azure AD).

### Konfigurationsfelder

| Einstellung | Beschreibung |
|-------------|-------------|
| **Aktiviert** | Toggle zum Aktivieren/Deaktivieren des OIDC-Logins |
| **Issuer URL** | Die Issuer-URL des OIDC-Providers (muss `https://` sein) |
| **Client ID** | Die beim OIDC-Provider registrierte Client-ID |
| **Client Secret** | Das Client-Secret (wird verschlüsselt in der Datenbank gespeichert) |
| **Scopes** | Angeforderte OIDC-Scopes (Standard: `openid email profile`) |
| **Button-Text** | Benutzerdefinierter Text für den SSO-Button auf der Login-Seite (z. B. „Login mit Authentik") |

### Voraussetzungen

- **HTTPS erforderlich** — OIDC funktioniert nur, wenn FilaMan über HTTPS aufgerufen wird
- **Umgebungsvariable `OIDC_ENC_KEY`** — Muss gesetzt sein, um das Client-Secret zu verschlüsseln. Generieren mit:
  ```bash
  openssl rand -hex 32
  ```
- **Nur bestehende Benutzer** — Nur Benutzer, die bereits in FilaMan existieren, können sich per OIDC anmelden. Die E-Mail-Adresse des Providers muss mit einem bestehenden Benutzerkonto übereinstimmen. Die E-Mail muss vom Provider als verifiziert markiert sein.
- **Keine automatische Erstellung** — OIDC-Login erstellt keine neuen Benutzerkonten

---

## 11.8 Gefahrenzone

Am unteren Ende des Admin-Panels befindet sich die rot markierte **Danger Zone** mit einer kritischen Aktion:

> ⛔ **„Delete all data"**  
> Löscht **dauerhaft** alle Spulen, Filamente, Hersteller, Farben, Lagerorte und Drucker einschließlich aller Logs und Ereignisse.  
> **Benutzerkonten, Rollen, Berechtigungen und Geräte bleiben davon unberührt.**  
> Diese Aktion kann **nicht rückgängig gemacht** werden!

---

← [Zurück: Einstellungen](/Docs/De/10-Einstellungen) | [Weiter: Farbverwaltung →](/Docs/De/12-Farbverwaltung)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9