Φορητότητα δεδομένων
Το Libre WebUI μπορεί να εξαγάγει και να εισαγάγει ένα αρχείο JSON ανά χρήστη με εκδόσεις από τις Ρυθμίσεις → Διαχείριση δεδομένων. Το αρχείο προορίζεται για τη μεταφορά υποστηριζόμενων προσωπικών δεδομένων μεταξύ εγκαταστάσεων Libre WebUI ή για την επαναφορά τους σε έναν λογαριασμό. Δεν αποτελεί πλήρες αντίγραφο ασφαλείας διακομιστή.
Αρχείο έκδοσης 3
Η τρέχουσα μορφή αναγνωρίζεται από τα εξής:
{
"format": "libre-webui-user-data",
"version": 3,
"integrity": {
"algorithm": "sha256",
"canonicalization": "libre-json-sort-v1",
"digest": "<64 lowercase hexadecimal characters>"
}
}
Το backend δημιουργεί την εξαγωγή από πιστοποιημένα ερωτήματα βάσης δεδομένων περιορισμένα στον χρήστη. Περιλαμβάνει:
- προτιμήσεις χρήστη, εκτός από μια επιλεγμένη αναφορά επαναχρησιμοποιήσιμου προφίλ φωνής·
- φακέλους συνομιλιών·
- συνεδρίες συνομιλίας, μηνύματα, κλάδους, αξιολογήσεις, τεχνουργήματα και ρυθμίσεις ανά συνομιλία·
- αυτόνομες Σημειώσεις, μαζί με την κατάσταση καρφιτσώματός τους·
- συλλογές γνώσης·
- εξαγόμενο περιεχόμενο και μεταδεδομένα εγγράφων, συσχετίσεις συνεδριών/συλλογών και τμήματα κειμένου.
Τα embeddings εγγράφων δεν εξάγονται επειδή είναι παράγωγα δεδομένα. Δημιουργήστε ξανά τα embeddings μετά την εισαγωγή όταν είναι ενεργή η σημασιολογική ανάκτηση. Το αρχείο περιέχει το εξαγόμενο κείμενο που χρησιμοποιεί το RAG, όχι τα byte του αρχικού μεταφορτωμένου αρχείου, επομένως δεν μπορεί να αναδημιουργήσει τη μεταφόρτωση byte προς byte.
Κάθε αρχείο περιλαμβάνει λίστα exclusions. Η έκδοση 3 εξαιρεί σκόπιμα:
- λογαριασμούς, κωδικούς πρόσβασης, συνεδρίες σύνδεσης και κατάσταση OAuth·
- διαπιστευτήρια παρόχων και κρυπτογραφημένες μεταβλητές προσθέτων·
- ηχογραφήσεις αναφοράς και μεταγραφές κλωνοποιημένων φωνών, οι οποίες αποτελούν βιομετρικά δεδομένα και απαιτούν ξεχωριστό χειρισμό με συναίνεση·
- περσόνες και μνήμη περσόνας·
- αρχεία συλλογής παραγόμενων εικόνων, ήχου και βίντεο·
- ιστορικό αναθεωρήσεων και συνημμένα σημειώσεων·
- εργασίες, εκτελέσεις και sandbox Work, καθώς και τόμους Docker ή Kubernetes.
Τα Κανάλια, οι ειδοποιήσεις, τα ημερολόγια και οι αυτοματισμοί βρίσκονται επίσης εκτός του φορητού αρχείου· αποτελούν κατάσταση εγκατάστασης/ομάδας και μεταφέρονται με πλήρες αντίγραφο ασφαλείας διακομιστή.
Για πλήρη ανάκτηση διακομιστή χρησιμοποιήστε αντίγραφο ασφαλείας της βάσης δεδομένων/καταλόγου δεδομένων με το ίδιο ENCRYPTION_KEY. Το Work απαιτεί επίσης συνεπές αντίγραφο ασφαλείας των επώνυμων τόμων του. Ανατρέξτε στη Μετεγκατάσταση και δημιουργία αντιγράφων ασφαλείας SQLite και στους Χώρους εργασίας Work.
Ακεραιότητα και επικύρωση εξαγωγής
Η έκδοση 3 προστατεύει το ωφέλιμο φορτίο του αρχείου με σύνοψη ακεραιότητας SHA-256. Η κανονική μορφή libre-json-sort-v1 παραλείπει το πεδίο ανώτατου επιπέδου integrity, ταξινομεί λεξικογραφικά τα κλειδιά κάθε αντικειμένου JSON, διατηρεί τη σειρά των πινάκων και κατακερματίζει το συμπαγές JSON που προκύπτει ως UTF-8. Η εισαγωγή απορρίπτει αρχείο έκδοσης 3 του οποίου η σύνοψη δεν συμφωνεί, ακόμη και αν το JSON παραμένει συντακτικά έγκυρο.
Η σύνοψη εντοπίζει τυχαία αλλοίωση και αλλαγές μετά την εξαγωγή. Δεν είναι ψηφιακή υπογραφή, δεν πιστοποιεί ποιος δημιούργησε το αρχείο και δεν καθιστά το αρχείο εμπιστευτικό. Αντιμετωπίζετε ένα αρχείο όπως κάθε άλλο αντίγραφο των ιδιωτικών συνομιλιών και Σημειώσεων του χρήστη.
Πριν προσφέρει λήψη, η εξαγωγή εκτελεί τους ίδιους ελέγχους σχήματος, μεγέθους πεδίων, ID και πλήθους αρχείου με την εισαγωγή. Επαληθεύει επίσης ότι το ευανάγνωστα μορφοποιημένο JSON που κατεβάζει το UI ιστού δεν υπερβαίνει το όριο μεταφόρτωσης των 50 MiB. Η εξαγωγή επιστρέφει ακριβές σφάλμα επικύρωσης αντί να προσφέρει αρχείο που το Libre WebUI γνωρίζει ήδη ότι δεν μπορεί να επαναφέρει.
Τα τρέχοντα όρια αρχείου και λογαριασμού είναι:
- 50 MiB ανά μεταφορτωμένο ή παραγόμενο αρχείο·
- 100 φάκελοι συνομιλιών·
- 5,000 συνεδρίες συνομιλιών·
- 100,000 μηνύματα συνομιλιών·
- 100 Σημειώσεις, με τίτλους έως 200 χαρακτήρες και περιεχόμενο έως 200,000 χαρακτήρες·
- 5,000 συλλογές γνώσης·
- 5,000 έγγραφα·
- 100,000 τμήματα εγγράφων·
- μεμονωμένα γενικά πεδία περιεχομένου έως 2,000,000 χαρακτήρες και ID έως 256 χαρακτήρες, με στενότερα όρια όπου τα επιβάλλει ο πόρος runtime.
Ασφαλής συμπεριφορά εισαγωγής
Η επιλογή αρχείου ζητά από το backend να εκτελέσει αμέσως προκαταρκτικό έλεγχο. Οι Ρυθμίσεις εμφανίζουν τα εισερχόμενα σύνολα, τις προβλεπόμενες μετρήσεις δημιουργίας/αντικατάστασης/παράλειψης, τις νέες αντιστοιχίσεις ID και τις προειδοποιήσεις μετεγκατάστασης πριν ενεργοποιηθεί η τελική ενέργεια Εισαγωγή. Η αλλαγή πολιτικής διενέξεων υπολογίζει και εμφανίζει νέα προεπισκόπηση.
Ο προκαταρκτικός έλεγχος επαληθεύει τη σύνοψη ακεραιότητας όπου υπάρχει, μετατρέπει υποστηριζόμενες παλιές μορφές, επικυρώνει ολόκληρο το σχήμα, το πλήθος πόρων, τα μοναδικά ID, τις χρονικές σημάνσεις, τα όρια περιεχομένου και τις συμπεριλαμβανόμενες σχέσεις και σχεδιάζει τις διενέξεις και τη νέα αντιστοίχιση αναφορών χωρίς εγγραφή δεδομένων. Οι ορφανές συσχετίσεις φακέλων, συλλογών, γονικών μηνυμάτων ή εγγράφων απορρίπτονται αντί να παραλείπονται σιωπηρά. Το backend επαναλαμβάνει την επικύρωση και τον σχεδιασμό διενέξεων για την πραγματική εισαγωγή. Όλες οι εγγραφές πραγματοποιούνται σε μία συναλλαγή βάσης δεδομένων στα υποστηριζόμενα backend SQLite και PostgreSQL· ένα σφάλμα επαναφέρει μαζί προτιμήσεις, φακέλους, συνεδρίες/μηνύματα, Σημειώσεις, συλλογές, έγγραφα και τμήματα.
Διατίθενται δύο πολιτικές διενέξεων:
- Η Παράλειψη διπλοτύπων διατηρεί τις εγγραφές με ίδια ID και εισάγει νέες εγγραφές. Οι προτιμήσεις συγχωνεύονται με τις τρέχουσες προτιμήσεις του λογαριασμού.
- Η Αντικατάσταση υπαρχόντων αντικαθιστά εγγραφές με ίδια ID. Οι προτιμήσεις αντικαθίστανται πάνω από τις προεπιλογές του Libre WebUI. Εγγραφές που απουσιάζουν από το αρχείο δεν διαγράφονται ποτέ.
Και οι δύο πολιτικές είναι idempotent για εγγραφές με ίδια ID. Αν ένα ID ανήκει ήδη σε άλλον λογαριασμό στον διακομιστή προορισμού, το Libre WebUI το αντιστοιχίζει ντετερμινιστικά σε νέο ID μαζί με κάθε περιλαμβανόμενη αναφορά προς αυτό. Δεν αντικαθιστά ούτε διαβάζει ποτέ πόρο άλλου χρήστη. Οι αναφορές σε εξαιρούμενους ή μη διαθέσιμους πόρους, όπως μια περσόνα από άλλη εγκατάσταση, παραμένουν τεκμηριωμένη εξαίρεση: ο προκαταρκτικός έλεγχος αναφέρει ότι η συνεδρία θα αποσυνδεθεί πριν από την εισαγωγή.
Το αποτέλεσμα στις Ρυθμίσεις αναφέρει το πλήθος δημιουργημένων, αντικατεστημένων και παραλειφθέντων φακέλων, συνεδριών, Σημειώσεων, συλλογών και εγγράφων. Μετά από επιτυχημένη εισαγωγή, το Libre επαναφορτώνει προτιμήσεις, συνομιλίες και φακέλους και ανανεώνει τα έγγραφα.
Παλαιότερα αρχεία
Η εισαγωγή δέχεται αρχεία libre-webui-user-data έκδοσης 2 και τα μετατρέπει σε έκδοση 3 κατά την επικύρωση. Η έκδοση 2 δεν διέθετε σύνοψη ακεραιότητας ούτε περιείχε Σημειώσεις, επομένως το Libre δεν μπορεί να επαληθεύσει την προέλευση ή να ανακτήσει Σημειώσεις που δεν εξήχθησαν ποτέ. Η προεπισκόπηση προκαταρκτικού ελέγχου αναφέρει και τους δύο περιορισμούς.
Η εισαγωγή δέχεται επίσης την παλαιότερη μορφή libre-webui-export έκδοσης 1.0. Αυτή η μορφή που δημιουργούνταν από το πρόγραμμα περιήγησης περιείχε προτιμήσεις και μόνο τις συνεδρίες που είχαν φορτωθεί σε αυτό. Ο πίνακας documents ήταν πάντα κενός και δεν περιείχε φακέλους, Σημειώσεις, συλλογές γνώσης ή τμήματα εγγράφων. Το Libre αναφέρει αυτούς τους περιορισμούς μετεγκατάστασης πριν από την εισαγωγή.
Endpoints HTTP
Όλα τα endpoints απαιτούν το bearer token ή τη συνεδρία του πιστοποιημένου χρήστη:
| Μέθοδος | Endpoint | Σκοπός |
|---|---|---|
GET | /api/preferences/export | Δημιουργία αρχείου v3 του τρέχοντος χρήστη |
POST | /api/preferences/import/preflight | Επικύρωση και σχεδιασμός χωρίς εγγραφές |
POST | /api/preferences/import | Επικύρωση και εισαγωγή σε συναλλαγή |
Το UI ιστού στέλνει το αρχείο ως πεδίο multipart/form-data με όνομα archive και την πολιτική διενέξεων ως πεδίο strategy. Το όριο μεταφόρτωσης είναι 50 MiB. Για μικρότερες μετεγκαταστάσεις μέσω API, τα δύο endpoints POST δέχονται επίσης JSON:
{
"data": { "format": "libre-webui-user-data", "version": 3 },
"strategy": "skip"
}
Το strategy είναι είτε skip είτε overwrite. Για συμβατότητα με τον παλαιότερο πελάτη μόνο προτιμήσεων, το mergeStrategy: "merge" αντιστοιχεί σε skip και το mergeStrategy: "replace" σε overwrite.