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​