Adathordozhatóság
A Libre WebUI verziózott, felhasználónkénti JSON-archívumot tud exportálni és importálni a Beállítások → Adatkezelés alatt. Az archívum a támogatott személyes adatok Libre WebUI-telepítések közötti áthelyezésére vagy fiókba történő visszaállítására szolgál. Nem teljes szerver-biztonsági mentés.
3-as archívumverzió
A jelenlegi formátumot a következő azonosítja:
{
"format": "libre-webui-user-data",
"version": 3,
"integrity": {
"algorithm": "sha256",
"canonicalization": "libre-json-sort-v1",
"digest": "<64 lowercase hexadecimal characters>"
}
}
A backend hitelesített, felhasználóra korlátozott adatbázis-lekérdezésekből hozza létre az exportot. A tartalma:
- felhasználói beállítások, a kiválasztott újrahasználható hangprofil-hivatkozás kivételével;
- csevegésmappák;
- csevegési munkamenetek, üzenetek, ágak, értékelések, műtermékek és csevegésenkénti beállítások;
- önálló Jegyzetek, beleértve a kitűzött állapotukat;
- tudásgyűjtemények;
- kinyert dokumentumtartalom és metaadatok, munkamenet-/gyűjteménytársítások és szövegtöredékek.
A dokumentumembeddingek nem kerülnek exportálásra, mert származtatott adatok. Ha a szemantikus visszakeresés engedélyezve van, importálás után generálja újra az embeddingeket. Az archívum a RAG által használt kinyert szöveget tartalmazza, nem az eredetileg feltöltött fájl bájtjait, ezért nem képes bájtról bájtra újra létrehozni az eredeti feltöltést.
Minden archívum tartalmaz egy exclusions listát. A 3-as verzió szándékosan kizárja a következőket:
- fiókok, jelszavak, bejelentkezési munkamenetek és OAuth-állapot;
- szolgáltatói hitelesítő adatok és titkosított bővítményváltozók;
- klónozott hangok referenciafelvételei és átiratai, amelyek biometrikus adatok, ezért külön, hozzájárulást figyelembe vevő kezelést igényelnek;
- perszónák és perszónamemória;
- generált kép-, hang- és videókönyvtárfájlok;
- jegyzetverzió-előzmények és jegyzetmellékletek;
- Work-feladatok, futások, sandboxok és Docker- vagy Kubernetes-kötetek.
A Csatornák, értesítések, naptárak és automatizálások szintén a hordozható archívumon kívül találhatók; példány-/csapatállapotként teljes szerver-biztonsági mentéssel vihetők át.
A teljes szerver-helyreállításhoz az adatbázisról/adatkönyvtárról ugyanazzal az ENCRYPTION_KEY értékkel készült mentést használjon. A Work elnevezett köteteiről is konzisztens mentés szükséges. Lásd: SQLite-migráció és biztonsági mentés, valamint Work-munkaterületek.
Integritás és exportellenőrzés
A 3-as verzió SHA-256 integritási kivonattal védi az archívum adattartalmát. A libre-json-sort-v1 kanonikus forma kihagyja a legfelső szintű integrity mezőt, lexikografikusan rendezi minden JSON-objektum kulcsait, megőrzi a tömbök sorrendjét, majd UTF-8-ként kivonatolja a létrejött tömör JSON-t. Az importálás elutasítja azt a 3-as verziójú archívumot, amelynek kivonata nem egyezik, akkor is, ha a JSON szintaktikailag érvényes.
A kivonat felismeri a véletlen sérülést és az exportálás utáni módosításokat. Nem digitális aláírás, nem hitelesíti a fájl létrehozóját, és nem teszi bizalmassá az archívumot. Az archívumot ugyanúgy kezelje, mint a felhasználó személyes csevegéseinek és Jegyzeteinek bármely másolatát.
A letöltés felajánlása előtt az export ugyanazokat a séma-, mezőméret-, ID- és archívumelembeli ellenőrzéseket futtatja, mint az import. Azt is ellenőrzi, hogy a webes felület által letöltött, formázott JSON nem nagyobb az 50 MiB-os feltöltési korlátnál. Az export pontos ellenőrzési hibát ad vissza ahelyett, hogy olyan fájlt kínálna, amelyről a Libre WebUI már tudja, hogy nem állítható helyre.
A jelenlegi archívum- és fiókkorlátok:
- 50 MiB feltöltött vagy generált archívumonként;
- 100 csevegésmappa;
- 5,000 csevegési munkamenet;
- 100,000 csevegési üzenet;
- 100 Jegyzet, legfeljebb 200 karakteres címmel és 200,000 karakteres tartalommal;
- 5,000 tudásgyűjtemény;
- 5,000 dokumentum;
- 100,000 dokumentumtöredék;
- az egyes általános tartalommezők legfeljebb 2,000,000 karakteresek, az ID-k pedig 256 karakteresek lehetnek, ahol a runtime-erőforrás nem alkalmaz szűkebb korlátot.
Biztonságos importálási viselkedés
A fájl kiválasztása azonnali előzetes ellenőrzést kér a backendtől. A Beállítások megjeleníti a beérkező összesítéseket, a várható létrehozási/felülírási/kihagyási számokat, az ID-k újraleképezését és a migrációs figyelmeztetéseket, mielőtt engedélyezné a végső Importálás műveletet. Az ütközési szabály módosítása új előnézetet számít és jelenít meg.
Az előzetes ellenőrzés ellenőrzi az integritási kivonatot, ahol elérhető, migrálja a támogatott régi formátumokat, ellenőrzi a teljes sémát, az erőforrások számát, az egyedi ID-ket, az időbélyegeket, a tartalmi korlátokat és a mellékelt kapcsolatokat, majd adatírás nélkül megtervezi az ütközéseket és a hivatkozások újraleképezését. A lógó mappa-, gyűjtemény-, üzenetszülő- vagy dokumentumtársításokat elutasítja, nem pedig észrevétlenül eldobja. A backend a tényleges importálásnál megismétli az ellenőrzést és az ütközéstervezést. Minden írás egyetlen adatbázis-tranzakcióban történik mindkét támogatott SQLite és PostgreSQL backenden; hiba esetén a beállítások, mappák, munkamenetek/üzenetek, Jegyzetek, gyűjtemények, dokumentumok és töredékek együtt gördülnek vissza.
Két ütközési szabály érhető el:
- A Duplikátumok kihagyása megtartja az egyező ID-jű rekordokat, és importálja az újakat. A beállítások egyesülnek a fiók aktuális beállításaival.
- A Meglévők felülírása lecseréli az egyező ID-jű rekordokat. A beállítások felülírják a Libre WebUI alapértékeit. Az archívumból hiányzó rekordok soha nem törlődnek.
Mindkét szabály idempotens az egyező ID-jű rekordoknál. Ha egy ID már egy másik fiók tulajdona a célszerveren, a Libre WebUI determinisztikusan újraleképezi azt és minden mellékelt hivatkozását. Soha nem írja felül és nem olvassa más felhasználó erőforrását. A kizárt vagy elérhetetlen erőforrásokra mutató hivatkozások, például egy másik telepítés perszónája dokumentált kivételt jelentenek: az előzetes ellenőrzés jelzi, hogy a munkamenet az importálás előtt leválik.
A Beállításokban megjelenő eredmény a létrehozott, felülírt és kihagyott mappák, munkamenetek, Jegyzetek, gyűjtemények és dokumentumok számát jelzi. Sikeres importálás után a Libre újratölti a beállításokat, csevegéseket és mappákat, valamint frissíti a dokumentumokat.
Régebbi archívumok
Az importáló elfogadja a 2-es verziójú libre-webui-user-data archívumokat, és az ellenőrzés során 3-as verzióra migrálja őket. A 2-es verzió nem tartalmazott integritási kivonatot és Jegyzeteket, így a Libre nem tudja ellenőrizni az eredetét, illetve helyreállítani a soha nem exportált Jegyzeteket. Az előzetes előnézet mindkét korlátozást jelzi.
Az importáló a korábbi libre-webui-export 1.0 formátumot is elfogadja. Ez a böngésző által létrehozott formátum beállításokat és csak az adott böngészőben betöltött munkameneteket tartalmazta. A documents tömbje mindig üres volt, és nem tartalmazott mappákat, Jegyzeteket, tudásgyűjteményeket vagy dokumentumtöredékeket. A Libre az importálás előtt jelzi ezeket a migrációs korlátozásokat.
HTTP-endpointok
Minden endpoint a hitelesített felhasználó bearer tokenjét vagy munkamenetét igényli:
| Metódus | Endpoint | Cél |
|---|---|---|
GET | /api/preferences/export | Az aktuális felhasználó v3 archívumának létrehozása |
POST | /api/preferences/import/preflight | Ellenőrzés és tervezés írás nélkül |
POST | /api/preferences/import | Tranzakciós ellenőrzés és importálás |
A webes felület az archívumot archive nevű multipart/form-data mezőként, az ütközési szabályt pedig strategy mezőként küldi. A feltöltési korlát 50 MiB. Kisebb, API-alapú migrációknál a két POST endpoint JSON-t is elfogad:
{
"data": { "format": "libre-webui-user-data", "version": 3 },
"strategy": "skip"
}
A strategy értéke skip vagy overwrite. A korábbi, csak beállításokat kezelő klienssel való kompatibilitásért a mergeStrategy: "merge" a skip, a mergeStrategy: "replace" pedig az overwrite értékre képeződik le.