🏴‍☠️
Сашка ☕
Blog  Tags 
💀 🔵 🔴

🗃️ Homebox: Исправление ошибки поиска на кириллице и миграция на PostgreSQL

Опубликовано: 26 июня 2026 г.

Если ты тоже столкнулся с проблемой поиска предметов в имени которых присутсвуют слова на кириллице (не только на русском, но и на украинском языке), то это руководство для тебя.

Проблема возникает, если используется SQLite в качестве хранилища.
Решиние: использовать БД PostgreSQL.

Шаг №1

Необходимо сделать резервную копию всех данных.
Выполняется эта операция в разделе: Tools > Backup & Restore > Create Backup.

По завершению необходимо нажать на ссылку Download. Загрузится *.zip архив с JSON файлами и вложениями.

Шаг №2

Создание нового инстанса (запуск homebox) с необходимыми параметрами, т.к. по умолчанию используется SQLite.

Мой скрипт запуска выглядит примерно так:

#!/bin/sh

./homebox \
  --web-host 127.0.0.1 \
  --web-port 7745 \
  --auth-api-key-pepper ... \
  --database-driver postgres \
  --database-database homebox \
  --database-host 0.0.0.0 \
  --database-port 5432 \
  --database-username homebox \
  --database-password ...

Регистрируем нового пользователя и переходим в раздел Tools > Backup & Restore > Restore from Backup.

Загружаем архив резервной копии и дожидаемя окончание импорта.

Возможно, что ты столкнёшся с HTTP ошибкой 413 Request Entity Too Large.
Я использую nginx, по этому достаточно добавить параметр client_max_body_size 100M в секцию http, server или location на выбор.

Скорее всего в логах приложения появится следующая ошибка.
Если так, то переходим к шагу 3, а потом возвращаемся к шагу 2:

insert entity_types: failed to encode args[6]: unable to encode 1 into binary format for bool (OID 16): cannot find encode plan

Шаг №3

Ошибка говорит о том, что значения в JSON не соответствуют типу BOOL, а именно вместо true/false в данных используется 1/0.

Текст в логе insert entity_types намекает в каком файле ошибка. В моём случае в файле entity_types.json.
(Эта ошибка будет и в других файлах, но по этому тексту понятно, в какой файл нужно смотреть).

Необходимо заменить значения 1/0 на true/false.

Чтобы ничего не сломать, в текстовом редакторе выполняем поиск по шаблону ":0 или ":1.
Не все значения необходимо изменять, а только те, имена которых подразумевают хранение булевого значения.
Это не сложно, так всё очевидно.

Вот список параметров для поиска (скорее всего тут не все, отпишитесь, чтобы я их добавил):

  • sync_child_entity_locations
  • lifetime_warranty
  • insured
  • boolean_value
  • primary

Параметры вроде sold_price, purchase_price или quantity хранят числовое значение.

Правим файлы, запаковываем обратно в *.zip и выполняем Restore from Backup снова.