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:
DATA_DIR, wenn gesetzt; relative Werte werden vom Backend-Verzeichnis aus aufgelöst.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_DIRin Docker und Kubernetes auf dauerhaften Speicher. - Sichere
ENCRYPTION_KEYgemeinsam mit der Datenbank. - Berücksichtige Work-Volumes bei Messung, Migration und Wiederherstellung getrennt.