Przenoszenie danych
W Ustawienia → Zarządzanie danymi można przenieść wspierane dane między instalacjami. To nie pełny backup serwera.
Wersja 3
{
"format": "libre-webui-user-data",
"version": 3,
"integrity": {
"algorithm": "sha256",
"canonicalization": "libre-json-sort-v1",
"digest": "<64 lowercase hexadecimal characters>"
}
}
Zawiera preferencje (bez wybranego profilu głosu), foldery, sesje, wiadomości, gałęzie, oceny, artefakty, ustawienia chatów, Notatki, kolekcje, dokumenty i fragmenty.
Embeddingi są pochodne i nie są eksportowane. Archiwum ma tekst RAG, nie oryginalne bajty.
exclusions: konta, hasła, sesje/OAuth, poświadczenia, biometria głosu, persony/pamięć, media, rewizje/załączniki, Work i wolumeny. Kanały, powiadomienia, kalendarze i automatyzacje też wymagają backupu serwera.
Pełny odzysk: baza z tym samym ENCRYPTION_KEY i wolumeny Work. SQLite, Work.
Integralność
SHA-256 na kanonicznym libre-json-sort-v1: pomija integrity, sortuje klucze, zachowuje tablice, hashuje kompaktowy UTF-8. Błędny digest odrzucony. Nie jest podpisem ani szyfrowaniem.
Eksport używa tych samych kontroli i limitu 50 MiB. Limity: 100 folderów, 5000 sesji, 100 000 wiadomości, 100 Notatek, 5000 kolekcji/dokumentów, 100 000 fragmentów, pola 2 000 000, ID 256.
Bezpieczny import
Preflight pokazuje sumy, plan, remapy i ostrzeżenia, weryfikuje schema, ID, relacje bez zapisu. Oderwane relacje odrzucone. Import powtarza i zapisuje jedną transakcją SQLite/PostgreSQL.
- Pomiń duplikaty — zachowuje ID, łączy preferencje.
- Nadpisz — zastępuje zgodne ID; nie usuwa nieobecnych.
ID innego konta jest deterministycznie mapowane z referencjami, bez odczytu/nadpisania cudzych danych. Po sukcesie interfejs odświeża.
Starsze
Importer obsługuje starsze archiwa libre-webui-user-data.
Wersja 2 jest migrowana, ale bez digestu i Notatek. libre-webui-export 1.0 zawierał tylko preferencje i załadowane sesje, pusty documents. Ograniczenia raportowane.
HTTP
| Metoda | Endpoint | Cel |
|---|---|---|
GET | /api/preferences/export | Eksport |
POST | /api/preferences/import/preflight | Plan |
POST | /api/preferences/import | Import |
multipart/form-data: archive, strategy, max 50 MiB. JSON:
{
"data": { "format": "libre-webui-user-data", "version": 3 },
"strategy": "skip"
}
strategy: skip/overwrite; mergeStrategy: "merge" → skip, mergeStrategy: "replace" → overwrite.