Przejdź do głównej zawartości

Pamięć SQLite

Libre WebUI domyślnie zapisuje dane aplikacji w SQLite. Warstwa pamięci przechowuje czaty, wiadomości, użytkowników, preferencje, dokumenty, fragmenty dokumentów, persony, poświadczenia wtyczek, wspomnienia i powiązane metadane w jednej lokalnej bazie danych.

Lokalizacja bazy danych

Uruchomienia ze źródeł używają następującej kolejności:

  1. DATA_DIR, jeśli ustawiono; wartości względne są rozwiązywane względem katalogu zaplecza.
  2. backend/data, jeśli nie ustawiono.

Dla zgodności wstecznej profil źródłowy bez ustawienia nadal korzysta z backend/backend/data, gdy jest to jedyny istniejący trwały magazyn. Jeśli oba miejsca zawierają stan, uruchomienie wymaga jawnego wyboru i nigdy ich nie kopiuje ani nie scala.

Pakietowy program uruchamiający npm/Homebrew używa natomiast domyślnie ~/.libre-webui i rozwiązuje jawną względną wartość DATA_DIR względem katalogu roboczego wywołującego. Wdrożenia Docker i Kubernetes podają bezwzględne ścieżki kontenerów.

Plik SQLite nosi nazwę data.sqlite.

Przykład:

DATA_DIR=/var/lib/libre-webui

Dane przechowywane w SQLite

  • Użytkownicy i role
  • Sesje i wiadomości
  • Preferencje i ustawienia interfejsu
  • Dokumenty i fragmenty
  • Persony i ich ustawienia
  • Wspomnienia person oraz stan mutacji
  • Poświadczenia wtyczek, powiązania routingu/uwierzytelniania, zmienne, aktywacje per użytkownik, zatwierdzenia zapisywalnych definicji i wykryte katalogi modeli
  • Ustawienia systemowe
  • Własność zadań Work, routing modelu/dostawcy, uruchomienia, wiadomości, aktywność narzędzi, stan i identyfikatory zasobów Docker

Wartości poufne są szyfrowane na poziomie aplikacji, gdy przechodzą przez pomocnicze funkcje szyfrowanej pamięci.

Pamięć Work jest rozdzielona

Rozmowy i metadane zadań Work znajdują się w SQLite, ale pliki Work już nie. Każde zadanie otrzymuje osobny nazwany wolumin Docker zamontowany w /workspace. Kontener jest wymiennym stanem wykonawczym, a nazwany wolumin — trwałym systemem plików zadania.

Sama kopia bazy danych nie jest więc pełną kopią Work. Utwórz kopie odpowiednich woluminów zgodnie z procesem kopii woluminów hosta Docker. Libre WebUI oznacza zarządzane woluminy Work etykietą ai.libre-webui.managed=true i identyfikatorem zadania właściciela.

Usunięcie zadania Work trwale usuwa jego rekordy SQLite i zarządzany nazwany wolumin. Anulowanie uruchomienia, zatrzymanie podglądu lub restart zaplecza nie usuwa plików.

Zgodność z JSON

Starsze instalacje Libre WebUI używały plików JSON dla części danych. Obecne kompilacje używają SQLite jako głównej ścieżki i ukrywają dostęp za warstwami usług/modeli, dzięki czemu reszta aplikacji nie musi znać formatu utrwalania.

Przed aktualizacją starej instalacji utwórz kopię całego katalogu danych.

Stara aktywacja wtyczek w .status.json jest jednokrotnie migrowana do wierszy SQLite per użytkownik dla kont istniejących podczas aktualizacji, ale tylko dla dołączonych definicji zakotwiczonych w dokładnym skrócie. Stare definicje niestandardowe i shadow pozostają w kwarantannie do ponownego importu przez administratora; zatwierdzenie nie przywraca starych wierszy aktywacji. Późniejsze konta zaczynają bez aktywnych wtyczek, a zmiany każdego konta są niezależne.

Kopia zapasowa

Zatrzymaj zaplecze przed skopiowaniem bazy:

cp -R backend/data backend/data.backup

Dla wdrożeń korzystających z DATA_DIR:

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

Jeśli instancja używa Work, wykonaj też kopię każdego zarządzanego woluminu Work przy zatrzymanym zapleczu. Zachowaj bazę, klucz szyfrowania i kopię woluminów z tego samego momentu.

Przywracanie

Zatrzymaj zaplecze, zastąp katalog danych kopią i uruchom ponownie. Zachowaj ten sam ENCRYPTION_KEY; innym kluczem nie odszyfrujesz wartości.

Dla Work przed startem przywróć nazwane woluminy pod dokładnymi nazwami zapisanymi w bazie. Libre WebUI może odtworzyć kontener zadania, ale nie zrekonstruuje brakujących plików z historii rozmowy.

Uwagi operacyjne

  • SQLite działa z WAL dla lepszych równoczesnych odczytów.
  • Proces zaplecza musi móc zapisywać katalog danych.
  • W Docker i Kubernetes trzymaj DATA_DIR w trwałej pamięci.
  • Twórz kopię ENCRYPTION_KEY razem z bazą.
  • Podczas pomiaru, migracji lub przywracania uwzględniaj woluminy Work osobno.

Powiązana dokumentacja