Хранилище SQLite
Libre WebUI по умолчанию хранит данные в SQLite. Уровень хранилища содержит чаты, сообщения, пользователей, предпочтения, документы и фрагменты, персоны, учётные данные плагинов, воспоминания и метаданные в одной локальной базе.
Расположение базы данных
Запуск из исходников использует порядок:
DATA_DIR, если задана; относительное значение от каталога сервера.backend/data, если нет.
Для обратной совместимости профиль без настройки продолжает backend/backend/data, когда это единственное долговечное хранилище. Если состояние есть в обоих, запуск требует явного выбора и никогда не копирует/объединяет.
Пакетный запуск npm/Homebrew использует ~/.libre-webui и разрешает относительный DATA_DIR от рабочего каталога вызывающего. Docker/Kubernetes дают абсолютные пути.
Файл называется data.sqlite.
Пример:
DATA_DIR=/var/lib/libre-webui
Что хранит SQLite
- Пользователей и роли
- Сессии и сообщения
- Предпочтения и интерфейс
- Документы и фрагменты
- Персоны и параметры
- Воспоминания и мутации
- Учётные данные плагинов, привязки маршрутизации/аутентификации, переменные, активации пользователя, одобрения записываемых определений и обнаруженные каталоги
- Системные настройки
- Владение задачами Work, модель/провайдер, запуски, сообщения, инструменты, состояние и ID ресурсов Docker
Конфиденциальные значения шифруются приложением при прохождении через функции шифрованного хранения.
Хранилище Work разделено
Разговоры и метаданные Work в SQLite, файлы — нет. Каждое задание получает именованный том Docker в /workspace. Контейнер — заменяемое состояние выполнения, том — долговечная файловая система.
Копия базы сама не полна. Архивируйте соответствующие тома процессом хоста. Libre WebUI ставит ai.libre-webui.managed=true и ID владельца.
Удаление задания навсегда удаляет записи и том. Отмена, остановка предпросмотра или перезапуск файлы не удаляет.
Совместимость JSON
Старые установки использовали JSON для части данных. Текущие используют SQLite и скрывают формат за слоями служб/моделей.
Перед обновлением скопируйте весь каталог данных.
Старая активация в .status.json один раз переносится в отдельные строки каждого пользователя для существующих аккаунтов, но только для встроенных определений с точным хешем. Пользовательские и теневые определения остаются в карантине до повторного импорта; одобрение не возвращает активации. Новые аккаунты начинают без плагинов, изменения независимы.
Резервная копия
Остановите сервер перед копированием:
cp -R backend/data backend/data.backup
С DATA_DIR:
cp -R "$DATA_DIR" "$DATA_DIR.backup"
При Work также скопируйте каждый управляемый том при остановленном сервере. База, ключ и тома должны быть из одной точки времени.
Восстановление
Остановите, замените каталог, запустите. Сохраните ENCRYPTION_KEY; другой не расшифрует.
Для Work восстановите тома под точными именами до старта. Libre WebUI воссоздаст контейнер, но не файлы из истории разговора.
Эксплуатационные примечания
- SQLite использует WAL для параллельного чтения.
- Каталог должен быть записываемым сервером.
- Храните
DATA_DIRна постоянном носителе Docker/Kubernetes. - Копируйте
ENCRYPTION_KEYс базой. - Учитывайте тома Work отдельно при измерении, миграции и восстановлении.