Úložiště SQLite
Libre WebUI ve výchozím nastavení ukládá aplikační data do SQLite. Vrstva úložiště uchovává chaty, zprávy, uživatele, předvolby, dokumenty, části dokumentů, persony, přihlašovací údaje pluginů, vzpomínky a související metadata v jedné místní databázi.
Umístění databáze
Spouštění ze zdrojového kódu používá toto pořadí:
DATA_DIR, pokud je nastavena; relativní hodnoty se vyhodnocují z adresáře backendu.backend/data, pokud nastavena není.
Kvůli zpětné kompatibilitě profil bez nastavené hodnoty nadále používá
backend/backend/data, pokud jde o jediné existující trvalé úložiště. Pokud oba
adresáře obsahují stav, spuštění vyžaduje výslovný výběr a nikdy je nekopíruje ani neslučuje.
Balíčkový spouštěč npm/Homebrew místo toho ve výchozím nastavení používá
~/.libre-webui a výslovně zadanou relativní DATA_DIR vyhodnocuje z pracovního
adresáře volajícího. Instalace Docker a Kubernetes zadávají absolutní cesty v kontejneru.
Soubor SQLite se jmenuje data.sqlite.
Příklad:
DATA_DIR=/var/lib/libre-webui
Co SQLite ukládá
- Uživatele a role
- Relace a zprávy
- Předvolby a nastavení rozhraní
- Dokumenty a části
- Persony a jejich nastavení
- Vzpomínky person a stav mutace
- Přihlašovací údaje pluginů a jejich vazby směrování či ověřování, proměnné, aktivace uživatelů, schválení zapisovatelných definic a nalezené katalogy modelů
- Systémová nastavení
- Vlastnictví úloh Work, směrování modelu či poskytovatele, běhy, zprávy, aktivitu nástrojů, stav a identifikátory prostředků Docker
Citlivé hodnoty se na aplikační vrstvě šifrují při průchodu pomocnými funkcemi šifrovaného úložiště.
Úložiště Work je rozdělené
Konverzace a metadata úloh Work jsou v SQLite, ale soubory Work nikoli. Každá úloha
dostane vyhrazený pojmenovaný svazek Docker připojený na /workspace. Kontejner je
nahraditelný stav běhu, pojmenovaný svazek je trvalý souborový systém úlohy.
Samotná záloha databáze proto není úplnou zálohou Work. Odpovídající svazky Docker
zálohujte postupem svého hostitele Docker. Libre WebUI označuje spravované svazky Work
pomocí ai.libre-webui.managed=true a ID vlastnící úlohy.
Odstranění úlohy Work trvale odstraní její záznamy SQLite i spravovaný pojmenovaný svazek. Zrušení běhu, zastavení náhledu ani restart backendu její soubory neodstraní.
Kompatibilita JSON
Starší instalace Libre WebUI používaly pro některá data soubory JSON. Aktuální sestavení používají SQLite jako primární cestu úložiště a přístup skrývají za vrstvami služeb a modelů, takže zbytek aplikace nemusí znát formát perzistence.
Při upgradu staré instalace před spuštěním novějšího backendu zazálohujte celý datový adresář.
Starší aktivace pluginů v .status.json se jednorázově migruje do řádků SQLite pro
uživatele existující v době upgradu, ale jen u přesně hashově ukotvených vestavěných
definic. Starší vlastní a stínující definice zůstávají v karanténě, dokud je správce
znovu neimportuje; schválení staré aktivační řádky neobnoví. Pozdější účty začínají bez
aktivních pluginů a změny aktivace jednotlivých účtů jsou nezávislé.
Záloha
Před kopírováním databáze zastavte backend:
cp -R backend/data backend/data.backup
Pro instalace používající DATA_DIR:
cp -R "$DATA_DIR" "$DATA_DIR.backup"
Pokud instance používá Work, při zastaveném backendu zazálohujte také každý spravovaný pojmenovaný svazek Work. Databázi, šifrovací klíč a svazky Work zálohujte ve stejném okamžiku.
Obnovení
Zastavte backend, nahraďte datový adresář zálohou a znovu ho spusťte. Zachovejte stejný
ENCRYPTION_KEY; s jiným klíčem nelze zašifrované hodnoty dešifrovat.
U Work obnovte pojmenované svazky pod přesnými názvy zaznamenanými v obnovené databázi ještě před spuštěním backendu. Libre WebUI dokáže znovu vytvořit kontejner úlohy, ale nedokáže z historie konverzace zrekonstruovat chybějící soubory pracovního prostoru.
Provozní poznámky
- SQLite používá WAL pro lepší souběžné čtení.
- Datový adresář musí být zapisovatelný pro proces backendu.
- V Dockeru a Kubernetes umístěte
DATA_DIRna trvalé úložiště. - Zálohujte
ENCRYPTION_KEYspolečně s databází. - Při měření, migraci nebo obnově úložiště počítejte pojmenované svazky Work samostatně.