Přeskočit na hlavní obsah

Ú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í:

  1. DATA_DIR, pokud je nastavena; relativní hodnoty se vyhodnocují z adresáře backendu.
  2. 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_DIR na trvalé úložiště.
  • Zálohujte ENCRYPTION_KEY společně s databází.
  • Při měření, migraci nebo obnově úložiště počítejte pojmenované svazky Work samostatně.

Související dokumentace