Hop til hovedindhold

SQLite-lagring

Libre WebUI lagrer som standard programdata i SQLite. Lagringslaget opbevarer chats, beskeder, brugere, indstillinger, dokumenter, dokumentsegmenter, personaer, pluginlegitimationsoplysninger, minder og relaterede metadata i én lokal database.

Databasens placering

Kørsler fra kildekoden bruger denne rækkefølge:

  1. DATA_DIR, når den er angivet; relative værdier fortolkes fra backendmappen.
  2. backend/data, når den ikke er angivet.

Af hensyn til bagudkompatibilitet fortsætter en kildeprofil uden indstillet værdi med at bruge backend/backend/data, når det er det eneste eksisterende vedvarende lager. Hvis begge placeringer indeholder tilstand, kræver opstarten et eksplicit valg og kopierer eller sammenfletter dem aldrig.

Den pakkede npm-/Homebrew-starter bruger i stedet ~/.libre-webui som standard og fortolker en eksplicit relativ DATA_DIR fra kalderens arbejdsmappe. Docker- og Kubernetes-installationer angiver absolutte containerstier.

SQLite-filen hedder data.sqlite.

Eksempel:

DATA_DIR=/var/lib/libre-webui

Hvad SQLite lagrer

  • Brugere og roller
  • Sessioner og beskeder
  • Præferencer og grænsefladeindstillinger
  • Dokumenter og segmenter
  • Personaer og personaindstillinger
  • Personaminder og mutationstilstand
  • Pluginlegitimationsoplysninger og deres bindinger for routing/godkendelse, variabler, aktiveringer pr. bruger, godkendelser af skrivbare definitioner og registrerede modelkataloger
  • Systemindstillinger
  • Ejerskab af Work-opgaver, model-/udbyderrouting, kørsler, beskeder, værktøjsaktivitet, status og Docker-ressourceidentifikatorer

Følsomme værdier krypteres i programlaget, når de passerer gennem hjælpefunktionerne til krypteret lagring.

Work-lagring er opdelt

Work-samtaler og opgavemetadata findes i SQLite, men Work-filer gør ikke. Hver opgave får en dedikeret navngivet Docker-volumen, der monteres på /workspace. Containeren er en udskiftelig kørselstilstand, mens den navngivne volumen er opgavens vedvarende filsystem.

Det betyder, at en databasesikkerhedskopi alene ikke er en fuldstændig Work-sikkerhedskopi. Sikkerhedskopiér de tilsvarende Docker-volumener med Docker-værtens proces til volumensikkerhedskopiering. Libre WebUI mærker administrerede Work-volumener med ai.libre-webui.managed=true og den ejende opgaves ID.

Når en Work-opgave slettes, fjernes dens SQLite-poster og administrerede navngivne volumen permanent. Annullering af en kørsel, stop af en forhåndsvisning eller genstart af backend sletter ikke dens filer.

JSON-kompatibilitet

Ældre Libre WebUI-installationer brugte JSON-filer til visse data. Aktuelle builds bruger SQLite som den primære lagringsvej og holder lagringsadgang bag service-/modellag, så resten af appen ikke behøver kende persistensformatet.

Hvis du opgraderer en gammel installation, skal du sikkerhedskopiere hele datamappen, før du starter den nyere backend.

Ældre pluginaktivering i .status.json migreres én gang til SQLite-rækker pr. bruger for konti, der findes på opgraderingstidspunktet, men kun for nøjagtigt hash-forankrede medfølgende definitioner. Ældre tilpassede og overskyggende definitioner forbliver i karantæne, indtil en administrator genimporterer dem, og en godkendelse gendanner ikke gamle aktiveringsrækker. Senere konti starter uden aktive plugins, og hver kontos aktiveringsændringer er uafhængige.

Sikkerhedskopiering

Stop backend, før databasen kopieres:

cp -R backend/data backend/data.backup

For installationer, der bruger DATA_DIR:

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

Hvis instansen bruger Work, skal du også sikkerhedskopiere alle administrerede, navngivne Work-volumener, mens backend er stoppet. Behold databasen, krypteringsnøglen og sikkerhedskopien af Work-volumenerne fra samme tidspunkt.

Gendannelse

Stop backend, erstat datamappen med sikkerhedskopien, og genstart derefter. Behold den samme ENCRYPTION_KEY; krypterede værdier kan ikke dekrypteres med en anden nøgle.

For Work gendanner du de navngivne volumener under nøjagtigt de navne, der er registreret i den gendannede database, før backend startes. Libre WebUI kan genskabe en opgavecontainer, men kan ikke rekonstruere manglende arbejdsområdefiler fra samtalehistorikken.

Driftsbemærkninger

  • SQLite kører med WAL aktiveret for bedre samtidige læsninger.
  • Datamappen skal kunne skrives af backendprocessen.
  • Opbevar DATA_DIR på vedvarende lagring i Docker og Kubernetes.
  • Sikkerhedskopiér ENCRYPTION_KEY sammen med databasen.
  • Håndter navngivne Work-volumener separat ved måling, migrering eller gendannelse af lagring.

Relateret dokumentation