Перейти к основному содержимому

Хранилище SQLite

Libre WebUI по умолчанию хранит данные в SQLite. Уровень хранилища содержит чаты, сообщения, пользователей, предпочтения, документы и фрагменты, персоны, учётные данные плагинов, воспоминания и метаданные в одной локальной базе.

Расположение базы данных

Запуск из исходников использует порядок:

  1. DATA_DIR, если задана; относительное значение от каталога сервера.
  2. 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 отдельно при измерении, миграции и восстановлении.

Связанная документация