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:
DATA_DIR, jeśli ustawiono; wartości względne są rozwiązywane względem katalogu zaplecza.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_DIRw trwałej pamięci. - Twórz kopię
ENCRYPTION_KEYrazem z bazą. - Podczas pomiaru, migracji lub przywracania uwzględniaj woluminy Work osobno.