Zum Hauptinhalt springen

SQLite-Speicher

Libre WebUI speichert Anwendungsdaten standardmäßig in SQLite. Die Speicherschicht hält Chats, Nachrichten, Benutzer, Voreinstellungen, Dokumente und Fragmente, Personas, Plugin-Anmeldedaten, Erinnerungen und zugehörige Metadaten in einer lokalen Datenbank.

Datenbankpfad

Starts aus dem Quellcode verwenden diese Reihenfolge:

  1. DATA_DIR, wenn gesetzt; relative Werte werden vom Backend-Verzeichnis aus aufgelöst.
  2. backend/data, wenn nicht gesetzt.

Zur Abwärtskompatibilität verwendet ein Quellprofil ohne gesetzte Variable weiterhin backend/backend/data, wenn dies der einzige vorhandene dauerhafte Speicher ist. Enthalten beide Orte Zustand, verlangt der Start eine explizite Auswahl und kopiert oder vereint sie nie.

Der paketierte npm-/Homebrew-Starter nutzt dagegen standardmäßig ~/.libre-webui und löst ein explizites relatives DATA_DIR vom Arbeitsverzeichnis des Aufrufers aus auf. Docker und Kubernetes stellen absolute Containerpfade bereit.

Die SQLite-Datei heißt data.sqlite.

Beispiel:

DATA_DIR=/var/lib/libre-webui

Was SQLite speichert

  • Benutzer und Rollen
  • Sitzungen und Nachrichten
  • Voreinstellungen und Oberflächeneinstellungen
  • Dokumente und Fragmente
  • Personas und Persona-Einstellungen
  • Persona-Erinnerungen und Mutationszustand
  • Plugin-Anmeldedaten samt Routing-/Authentifizierungsbindungen, Variablen, benutzerspezifischen Aktivierungen, Genehmigungen beschreibbarer Definitionen und erkannten Modellkatalogen
  • Systemeinstellungen
  • Eigentum an Work-Aufgaben, Modell-/Anbieter-Routing, Ausführungen, Nachrichten, Werkzeugaktivität, Status und Docker-Ressourcenkennungen

Sensible Werte werden auf Anwendungsebene verschlüsselt, wenn sie die Helfer für verschlüsselten Speicher durchlaufen.

Work-Speicher ist aufgeteilt

Unterhaltung und Metadaten liegen in SQLite, Work-Dateien jedoch nicht. Jede Aufgabe erhält ein eigenes benanntes Docker-Volume unter /workspace. Der Container ist ersetzbarer Ausführungszustand; das Volume ist das dauerhafte Dateisystem.

Eine reine Datenbanksicherung ist daher keine vollständige Work-Sicherung. Sichere die entsprechenden Volumes mit dem Verfahren deines Docker-Hosts. Libre WebUI kennzeichnet verwaltete Volumes mit ai.libre-webui.managed=true und der Aufgaben-ID.

Beim Löschen einer Aufgabe werden SQLite-Datensätze und verwaltetes Volume dauerhaft entfernt. Abbrechen, Stoppen einer Vorschau oder Backend-Neustart löscht Dateien nicht.

JSON-Kompatibilität

Ältere Installationen verwendeten für einige Daten JSON-Dateien. Aktuelle Builds nutzen SQLite als primären Pfad und kapseln Zugriff hinter Dienst-/Modellschichten, damit die Anwendung das Persistenzformat nicht kennen muss.

Sichere bei einem Upgrade das gesamte Datenverzeichnis, bevor du das neue Backend startest.

Alte Plugin-Aktivierung aus .status.json wird einmalig für beim Upgrade vorhandene Konten in benutzerspezifische SQLite-Zeilen migriert, jedoch nur für exakt zum verankerten Hash passende integrierte Definitionen. Benutzerdefinierte und Schatten-Definitionen bleiben in Quarantäne, bis ein Administrator sie neu importiert; eine Genehmigung stellt alte Aktivierungszeilen nicht wieder her. Neue Konten beginnen ohne aktive Plugins, Änderungen sind unabhängig.

Sicherung

Stoppe das Backend vor dem Kopieren:

cp -R backend/data backend/data.backup

Bei DATA_DIR:

cp -R "$DATA_DIR" "$DATA_DIR.backup"

Wird Work verwendet, sichere während des Stillstands auch alle verwalteten Volumes. Datenbank, Schlüssel und Volumes müssen vom selben Zeitpunkt stammen.

Wiederherstellung

Stoppe das Backend, ersetze das Datenverzeichnis und starte neu. Behalte denselben ENCRYPTION_KEY; ein anderer Schlüssel kann verschlüsselte Werte nicht entschlüsseln.

Stelle für Work die Volumes unter den exakt in der Datenbank gespeicherten Namen vor dem Backend-Start wieder her. Libre WebUI kann Container neu erstellen, aber fehlende Dateien nicht aus dem Unterhaltungsverlauf rekonstruieren.

Betriebshinweise

  • SQLite verwendet WAL für bessere parallele Lesezugriffe.
  • Das Backend muss in das Datenverzeichnis schreiben können.
  • Lege DATA_DIR in Docker und Kubernetes auf dauerhaften Speicher.
  • Sichere ENCRYPTION_KEY gemeinsam mit der Datenbank.
  • Berücksichtige Work-Volumes bei Messung, Migration und Wiederherstellung getrennt.

Verwandte Dokumentation