Stockage SQLite
Par défaut, Libre WebUI stocke les données de l’application dans SQLite. La couche de stockage conserve les chats, les messages, les utilisateurs, les préférences, les documents, les fragments de documents, les personas, les identifiants des plugins, les souvenirs et les métadonnées associées dans une seule base de données locale.
Emplacement de la base de données
Les lancements depuis le code source utilisent l’ordre suivant :
DATA_DIRlorsqu’il est défini ; les valeurs relatives sont résolues depuis le répertoire du backend.backend/datalorsqu’il ne l’est pas.
Par souci de rétrocompatibilité, un profil source où cette variable n’est pas
définie continue d’utiliser backend/backend/data lorsqu’il s’agit du seul stockage
durable existant. Si les deux emplacements contiennent un état, le démarrage exige
un choix explicite et ne les copie ni ne les fusionne jamais.
Le lanceur npm/Homebrew empaqueté utilise plutôt ~/.libre-webui par défaut et
résout un DATA_DIR relatif explicite depuis le répertoire de travail de l’appelant.
Les déploiements Docker et Kubernetes fournissent des chemins de conteneur absolus.
Le fichier SQLite se nomme data.sqlite.
Exemple :
DATA_DIR=/var/lib/libre-webui
Contenu stocké par SQLite
- Utilisateurs et rôles
- Sessions et messages
- Préférences et réglages de l’interface
- Documents et fragments
- Personas et réglages des personas
- Souvenirs des personas et état de mutation
- Identifiants des plugins et associations de routage ou d’authentification, variables, activations par utilisateur, approbations des définitions modifiables et catalogues de modèles découverts
- Réglages système
- Propriété des tâches Work, routage des modèles et fournisseurs, exécutions, messages, activité des outils, état et identifiants de ressources Docker
Les valeurs sensibles sont chiffrées au niveau de l’application lorsqu’elles passent par les fonctions d’assistance du stockage chiffré.
Le stockage de Work est réparti
Les conversations Work et les métadonnées des tâches résident dans SQLite, mais
pas les fichiers Work. Chaque tâche reçoit un volume nommé Docker dédié, monté sur
/workspace. Le conteneur est un état d’exécution remplaçable ; le volume nommé est
le système de fichiers durable de la tâche.
Une sauvegarde de la base de données seule ne constitue donc pas une sauvegarde
Work complète. Sauvegardez les volumes Docker correspondants selon la procédure de
sauvegarde des volumes de votre hôte Docker. Libre WebUI attribue aux volumes Work
gérés l’étiquette ai.libre-webui.managed=true et l’identifiant de leur tâche.
La suppression d’une tâche Work supprime définitivement ses enregistrements SQLite et son volume nommé géré. L’annulation d’une exécution, l’arrêt d’un aperçu ou le redémarrage du backend ne supprime pas ses fichiers.
Compatibilité JSON
Les anciennes installations de Libre WebUI utilisaient des fichiers JSON pour certaines données. Les versions actuelles utilisent SQLite comme chemin de stockage principal et encapsulent l’accès au stockage derrière des couches de services et de modèles, afin que le reste de l’application n’ait pas à connaître le format de persistance.
Si vous mettez à niveau une ancienne installation, sauvegardez l’intégralité du répertoire de données avant de démarrer le nouveau backend.
L’activation des plugins héritée de .status.json est migrée une seule fois vers
des lignes SQLite propres à chaque utilisateur pour les comptes qui existent au
moment de la mise à niveau, mais seulement pour les définitions intégrées dont le
hachage correspond exactement. Les définitions personnalisées et fantômes héritées
restent en quarantaine jusqu’à ce qu’un administrateur les réimporte, et leur
approbation ne restaure pas les anciennes lignes d’activation. Les comptes créés
ensuite ne commencent avec aucun plugin actif, et les modifications d’activation de
chaque compte sont indépendantes.
Sauvegarde
Arrêtez le backend avant de copier la base de données :
cp -R backend/data backend/data.backup
Pour les déploiements qui utilisent DATA_DIR :
cp -R "$DATA_DIR" "$DATA_DIR.backup"
Si l’instance utilise Work, sauvegardez également tous les volumes nommés Work gérés pendant que le backend est arrêté. Conservez une sauvegarde de la base de données, de la clé de chiffrement et des volumes Work provenant du même instant.
Restauration
Arrêtez le backend, remplacez le répertoire de données par votre sauvegarde, puis
redémarrez. Conservez le même ENCRYPTION_KEY ; une autre clé ne pourra pas
déchiffrer les valeurs chiffrées.
Pour Work, restaurez les volumes nommés sous les noms exacts enregistrés dans la base restaurée avant de démarrer le backend. Libre WebUI peut recréer le conteneur d’une tâche, mais pas reconstituer les fichiers absents de l’espace de travail à partir de l’historique de la conversation.
Remarques d’exploitation
- SQLite fonctionne avec WAL activé pour améliorer les lectures simultanées.
- Le processus du backend doit pouvoir écrire dans le répertoire de données.
- Conservez
DATA_DIRsur un stockage persistant avec Docker et Kubernetes. - Sauvegardez
ENCRYPTION_KEYavec la base de données. - Tenez compte séparément des volumes nommés Work lors de la mesure, de la migration ou de la restauration du stockage.