Passa al contenuto principale

Portabilità dei dati

Libre WebUI può esportare e importare un archivio JSON versionato per utente da Impostazioni → Gestione dati. Serve a spostare i dati personali supportati tra installazioni o a ripristinarli in un account. Non è un backup completo del server.

Archivio versione 3

{
"format": "libre-webui-user-data",
"version": 3,
"integrity": {
"algorithm": "sha256",
"canonicalization": "libre-json-sort-v1",
"digest": "<64 lowercase hexadecimal characters>"
}
}

Il backend crea l'esportazione con query autenticate e limitate all'utente. Contiene:

  • preferenze, eccetto un riferimento a un profilo vocale riutilizzabile;
  • cartelle chat;
  • sessioni, messaggi, rami, valutazioni, artefatti e impostazioni per chat;
  • Note autonome e stato fissato;
  • raccolte di conoscenza;
  • contenuto e metadati estratti, associazioni e frammenti.

Gli embedding non vengono esportati perché derivati. Rigenerali dopo l'importazione. L'archivio contiene il testo estratto usato da RAG, non i byte originali, quindi non ricrea il caricamento byte per byte.

Ogni archivio ha una lista exclusions. La versione 3 esclude:

  • account, password, sessioni e stato OAuth;
  • credenziali e variabili cifrate;
  • registrazioni e trascrizioni di voci clonate, dati biometrici;
  • personas e memoria;
  • immagini, audio e video generati;
  • cronologia revisioni e allegati delle note;
  • attività Work, esecuzioni, sandbox e volumi Docker/Kubernetes.

Canali, notifiche, calendari e automazioni sono anch'essi stato dell'istanza/team e viaggiano con un backup completo.

Per il recupero completo usa backup del database/directory con lo stesso ENCRYPTION_KEY. Work richiede anche i volumi. Vedi migrazione e backup SQLite e spazi Work.

Integrità e convalida

La versione 3 protegge il payload con SHA-256. La forma libre-json-sort-v1 omette integrity al primo livello, ordina le chiavi, conserva l'ordine degli array e calcola l'hash del JSON compatto UTF-8. Un digest errato viene rifiutato anche con JSON valido.

Rileva corruzione e modifiche accidentali, ma non è firma digitale, non autentica l'autore e non rende l'archivio confidenziale. Proteggilo come copia privata.

Prima del download, l'esportazione esegue gli stessi controlli di schema, dimensioni, ID e conteggi dell'importazione e conferma che il JSON formattato non superi 50 MiB. Restituisce un errore preciso invece di offrire un file non ripristinabile.

Limiti:

  • 50 MiB per archivio;
  • 100 cartelle;
  • 5.000 sessioni;
  • 100.000 messaggi;
  • 100 Note, titoli fino a 200 e contenuti fino a 200.000 caratteri;
  • 5.000 raccolte;
  • 5.000 documenti;
  • 100.000 frammenti;
  • campi generali fino a 2.000.000 caratteri e ID fino a 256, con limiti più stretti dove previsti.

Importazione sicura

Selezionare un file avvia subito il preflight. Le Impostazioni mostrano totali, creazioni/sovrascritture/omissioni previste, rimappature e avvisi prima di abilitare l'importazione. Cambiare politica ricalcola l'anteprima.

Il preflight verifica il digest, migra formati supportati, convalida schema, conteggi, ID, timestamp, limiti e relazioni, e pianifica conflitti senza scrivere. Relazioni mancanti vengono rifiutate, non eliminate. Il backend ripete tutto nell'importazione reale. Tutte le scritture avvengono in una transazione sia SQLite sia PostgreSQL; un errore annulla preferenze, cartelle, sessioni, Note, raccolte, documenti e frammenti insieme.

Politiche:

  • Salta duplicati conserva ID esistenti e importa i nuovi; unisce le preferenze.
  • Sovrascrivi esistenti sostituisce gli ID corrispondenti e applica le preferenze sui default. Non elimina record assenti.

Entrambe sono idempotenti per ID uguali. Se un ID appartiene a un altro account, viene rimappato deterministicamente con i riferimenti. Libre non legge né sovrascrive risorse altrui. Riferimenti esclusi, come una persona di altra installazione, sono eccezioni dichiarate e il preflight avvisa del distacco.

Il risultato riporta creati, sovrascritti e saltati. Dopo il successo, Libre ricarica preferenze, chat, cartelle e documenti.

Archivi precedenti

Accetta libre-webui-user-data v2 e lo migra a v3. V2 non aveva digest né Note, quindi non può verificarne origine o recuperare Note mai esportate. L'anteprima segnala entrambi.

Accetta anche libre-webui-export 1.0, generato dal browser con preferenze e sole sessioni caricate. documents era sempre vuoto e mancavano cartelle, Note, raccolte e frammenti. Le limitazioni vengono mostrate.

Endpoint HTTP

Tutti richiedono token Bearer o sessione:

MetodoEndpointScopo
GET/api/preferences/exportCreare archivio v3
POST/api/preferences/import/preflightConvalidare e pianificare senza scrivere
POST/api/preferences/importConvalidare e importare transazionalmente

La UI invia l'archivio nel campo multipart/form-data archive e la politica in strategy. Limite 50 MiB. Per migrazioni API più piccole, i POST accettano JSON:

{
"data": { "format": "libre-webui-user-data", "version": 3 },
"strategy": "skip"
}

strategy è skip o overwrite. Per compatibilità, mergeStrategy: "merge" corrisponde a skip e mergeStrategy: "replace" a overwrite.