Hoppa till huvudinnehåll

SQLite-lagring

Libre WebUI lagrar programdata i SQLite som standard. Lagringslagret håller chattar, meddelanden, användare, inställningar, dokument, dokumentsegment, personas, pluginuppgifter, minnen och tillhörande metadata i en lokal databas.

Databasens plats

Körningar från källkod använder följande ordning:

  1. DATA_DIR när den är angiven; relativa värden tolkas från backendkatalogen.
  2. backend/data när den inte är angiven.

För bakåtkompatibilitet fortsätter en källprofil utan inställt värde att använda backend/backend/data när det är det enda befintliga beständiga lagret. Om båda platserna innehåller tillstånd kräver starten ett uttryckligt val och kopierar eller slår aldrig samman dem.

Den paketerade npm-/Homebrew-startaren använder i stället ~/.libre-webui som standard och tolkar en uttryckligt angiven relativ DATA_DIR från anroparens arbetskatalog. Docker- och Kubernetes-installationer anger absoluta sökvägar i containern.

SQLite-filen heter data.sqlite.

Exempel:

DATA_DIR=/var/lib/libre-webui

Vad SQLite lagrar

  • Användare och roller
  • Sessioner och meddelanden
  • Preferenser och gränssnittsinställningar
  • Dokument och segment
  • Personas och personainställningar
  • Personaminnen och mutationstillstånd
  • Pluginuppgifter och deras bindningar för dirigering/autentisering, variabler, aktiveringar per användare, godkännanden av skrivbara definitioner och upptäckta modellkataloger
  • Systeminställningar
  • Ägarskap för Work-uppgifter, modell-/leverantörsdirigering, körningar, meddelanden, verktygsaktivitet, status och Docker-resursidentifierare

Känsliga värden krypteras i programlagret när de går genom hjälpfunktionerna för krypterad lagring.

Work-lagringen är uppdelad

Work-konversationer och uppgiftsmetadata finns i SQLite, men Work-filer gör det inte. Varje uppgift får en särskild namngiven Docker-volym monterad på /workspace. Containern är ett utbytbart körningstillstånd, medan den namngivna volymen är uppgiftens beständiga filsystem.

Det innebär att enbart en databassäkerhetskopia inte är en fullständig säkerhetskopia av Work. Säkerhetskopiera motsvarande Docker-volymer med Docker-värdens process för volymsäkerhetskopiering. Libre WebUI märker hanterade Work-volymer med ai.libre-webui.managed=true och ägaruppgiftens ID.

När en Work-uppgift raderas tas dess SQLite-poster och hanterade namngivna volym bort permanent. Att avbryta en körning, stoppa en förhandsvisning eller starta om backend raderar inte dess filer.

JSON-kompatibilitet

Äldre Libre WebUI-installationer använde JSON-filer för vissa data. Aktuella byggen använder SQLite som primär lagringsväg och håller lagringsåtkomst bakom tjänste-/modellager, så att resten av appen inte behöver känna till beständighetsformatet.

Om du uppgraderar en gammal installation bör du säkerhetskopiera hela datakatalogen innan du startar den nyare backendversionen.

Äldre pluginaktivering i .status.json migreras en gång till SQLite-rader per användare för konton som finns vid uppgraderingen, men endast för exakt hashförankrade medföljande definitioner. Äldre anpassade och skuggande definitioner förblir i karantän tills en administratör importerar dem igen, och ett godkännande återställer inte gamla aktiveringsrader. Senare konton börjar utan aktiva plugin, och varje kontos aktiveringsändringar är oberoende.

Säkerhetskopiering

Stoppa backend innan du kopierar databasen:

cp -R backend/data backend/data.backup

För installationer som använder DATA_DIR:

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

Om instansen använder Work ska du även säkerhetskopiera varje hanterad namngiven Work-volym medan backend är stoppad. Behåll databasen, krypteringsnyckeln och säkerhetskopian av Work-volymerna från samma tidpunkt.

Återställning

Stoppa backend, ersätt datakatalogen med säkerhetskopian och starta sedan om. Behåll samma ENCRYPTION_KEY; krypterade värden kan inte dekrypteras med en annan nyckel.

För Work återställer du de namngivna volymerna med exakt de namn som finns i den återställda databasen innan backend startas. Libre WebUI kan återskapa en uppgiftscontainer, men kan inte återskapa saknade arbetsytefiler från konversationshistoriken.

Driftinformation

  • SQLite körs med WAL aktiverat för bättre samtidiga läsningar.
  • Datakatalogen måste vara skrivbar för backendprocessen.
  • Placera DATA_DIR på beständig lagring i Docker och Kubernetes.
  • Säkerhetskopiera ENCRYPTION_KEY tillsammans med databasen.
  • Hantera namngivna Work-volymer separat vid mätning, migrering eller återställning av lagring.

Relaterad dokumentation