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​