Индекс журналаDockup / заметка с места
Note / self-host-grocy

Как разместить Grocy самостоятельно в 2026 году: данные инвентаризации, часовой пояс и резервные копии

Разместите Grocy самостоятельно с правильными портами, постоянным хранилищем, HTTPS, секретами, резервными копиями и проверками обновлений. Узнайте, как устранить ошибку, из-за которой база данных SQLite недоступна для записи.

Рассматривайте Grocy как небольшую систему, а не как Docker image. Пользовательская задача Grocy очевидна: учёт запасов, продуктов, домашних дел и оборудования; развёртывание можно считать приемлемым только после того, как вы сменили данные для входа по умолчанию, добавили продукт, записали покупку и расход, отсканировали штрихкод и запустили напоминание о домашнем деле или истечении срока годности.

Это различие помогает обнаружить сбой, с которым операторы сталкиваются после локального тестирования: база данных SQLite недоступна для записи или запланированные домашние дела используют неправильный часовой пояс. Оно также позволяет составить достаточно конкретный план резервного копирования и обновления, чтобы его можно было проверить.

Порты, процессы и приватные сервисы

Полезная схема Grocy показывает публичный маршрут, приватный порт 80, границу состояния и все необходимые вспомогательные компоненты. Отметьте, какие стрелки передают учётные данные, а какие — обычный пользовательский трафик. Для локального запуска требуется один постоянный том конфигурации и, при необходимости, доступ к устройству для сканирования штрихкодов. Выделяйте ресурсы и контролируйте их вместе с контейнером, а не публикуйте несвязанный сетевой сервис.

Проверьте схему реальным действием: смените данные для входа по умолчанию, добавьте продукт, запишите покупку и расход, отсканируйте штрихкод и запустите напоминание о домашнем деле или истечении срока годности. Наибольшая нагрузка, вероятно, связана с записями в SQLite, загруженными изображениями, запланированными задачами и трафиком от домашних устройств; контролируйте именно этот путь, а не относитесь ко всем HTTP-запросам одинаково.

Контролируйте нагрузку, а не только контейнер

Наблюдайте за работой Grocy: записями в SQLite, загруженными изображениями, запланированными задачами и трафиком от домашних устройств. Установите лимиты с запасом для этой нагрузки и не используйте liveness probe, конкурирующую с ней за ресурсы. Операторская проверка по-прежнему должна по расписанию пытаться сменить данные для входа по умолчанию, добавить продукт, записать покупку и расход, отсканировать штрихкод и запустить напоминание о домашнем деле или истечении срока годности.

При обновлении помните, что миграции базы данных Grocy и custom extensions следует отрабатывать на копии каталога конфигурации. Разверните candidate-версию на восстановленной копии и повторите известный тест. Если база данных SQLite недоступна для записи или запланированные домашние дела используют неправильный часовой пояс, изучите runtime logs и фактический сетевой запрос, чтобы определить, какое предположение изменилось.

Что должно пройти до появления реальных данных Grocy

Production gate для Grocy должен быть выполним человеком, который не создавал это развёртывание. Передайте ему зафиксированную версию, тестовую учётную запись без чувствительных данных и такую задачу: сменить данные для входа по умолчанию, добавить продукт, записать покупку и расход, отсканировать штрихкод и запустить напоминание о домашнем деле или истечении срока годности. Если инструкции требуют недокументированного доступа к shell, сервис ещё не готов к эксплуатации.

Повторите проверку после замены только контейнера. Затем восстановите базу данных, загруженные файлы, рецепты и конфигурацию в чистую инфраструктуру и подтвердите, что запасы, рецепты, домашние дела, оборудование и история восстановились, а следующее запланированное напоминание содержит правильную дату. Во время обоих успешных запусков измеряйте записи в SQLite, загруженные изображения, запланированные задачи и трафик от домашних устройств; неожиданные различия часто указывают на отсутствующий cache, index, worker или data mount.

Добавьте аварийную проверку: отправьте безопасные тестовые данные около ограничения по ресурсу или формату, связанного с этой границей: база данных SQLite недоступна для записи или запланированные домашние дела используют неправильный часовой пояс. Grocy должен выдать полезную ошибку, сохранить существующее состояние и восстановить работу после возвращения корректного условия. Сохраните временные метки и соответствующие строки журналов, предварительно удалив секреты. Эти сведения станут эталоном для следующего изменения image или конфигурации.

Соберите заменяемый контейнер Grocy

Используйте команду, в которой явно указаны все важные параметры. Этот базовый вариант привязывает Grocy к loopback-интерфейсу хоста, добавляет известные mounts для данных и задаёт первую необходимую настройку. Перед публикацией подтвердите локальное требование: один постоянный том конфигурации и, при необходимости, доступ к устройству для сканирования штрихкодов.

docker run -d \
  --name grocy \
  --restart unless-stopped \
  -p 127.0.0.1:80:80 \
  -v grocy-data:/config \
  lscr.io/linuxserver/grocy:latest

Замените floating tags на протестированную версию или digest. После запуска изучите docker logs --tail 200 grocy и убедитесь, что процесс слушает порт 80. Затем выполните приёмочное действие Grocy; ответ root page не доказывает успешность всего сценария: смените данные для входа по умолчанию, добавьте продукт, запишите покупку и расход, отсканируйте штрихкод и запустите напоминание о домашнем деле или истечении срока годности.

Спроектируйте восстановление Grocy до запуска

Защитите состояние Grocy до оптимизации его контейнера. Обязательный набор включает базу данных, загруженные файлы, рецепты и конфигурацию. Подключите /config до bootstrap, запишите безопасные тестовые данные и замените контейнер, чтобы доказать фактическую сохранность этого пути. Если несколько хранилищ должны быть согласованы, задокументируйте порядок приостановки записи и создания резервных копий.

Храните копии за пределами сервера развёртывания и шифруйте материалы, содержащие учётные данные или приватный контент. Восстановление можно считать успешным, когда запасы, рецепты, домашние дела, оборудование и история возвращены, а следующее запланированное напоминание содержит правильную дату. Различие между постоянным mount и независимой копией описано в статье постоянное хранилище и snapshots.

Тестируйте Grocy извне сервера

Выберите окончательное имя хоста Grocy до того, как пользователи сохранят callbacks или настройки клиентов, затем опубликуйте UI по HTTPS и настройте правильный часовой пояс. На уровне платформы TLS должен завершаться один раз, после чего трафик направляется на приватный порт 80.

Выполните приёмочную транзакцию извне. Если клиент не может подключиться к Grocy, используйте чеклист проверки SSL для проверки DNS и сертификата. Если запрос доходит до Grocy, но база данных SQLite недоступна для записи или запланированные домашние дела используют неправильный часовой пояс, прекратите менять redirects прокси и изучите соответствующую границу приложения.

Выберите границу доверия Grocy

Анализируйте угрозы для действия, которое выполняет Grocy, а не только для его формы входа. В данном случае главная опасность — сохранить данные для входа по умолчанию после настройки. Реализуйте эту границу: удалите стандартные учётные данные, выберите правильный часовой пояс и ограничьте доступ к данным домохозяйства нужными пользователями.

В этом базовом варианте Grocy не требует обязательного bootstrap secret; вместо этого защитите фактическую учётную запись администратора или upstream authentication. Не устраняйте ошибку доступа, запуская контейнер от root или широко подключая хост. Ограничения ресурсов также относятся к security design, если пользователи могут инициировать записи в SQLite, загрузку изображений, запланированные задачи и трафик от домашних устройств.

Для развёртывания в Dockup всё равно нужен приёмочный тест Grocy

Dockup может взять на себя заменяемые компоненты платформы: направить трафик на порт 80, выпустить домен и сертификат, передать секреты, подключить постоянное хранилище и соединить Grocy с управляемыми или приватно подключёнными сервисами. Это можно сделать на инфраструктуре Dockup или на подключённом вами сервере.

Приёмка Grocy по-прежнему должна быть описана явно. После one-click deployment опубликуйте UI по HTTPS и настройте правильный часовой пояс, подтвердите локальное требование — один постоянный том конфигурации и, при необходимости, доступ к устройству для сканирования штрихкодов — и выполните следующий сценарий: смените данные для входа по умолчанию, добавьте продукт, запишите покупку и расход, отсканируйте штрихкод и запустите напоминание о домашнем деле или истечении срока годности. Такое разделение намеренно: Dockup устраняет повторяющуюся настройку инфраструктуры, не делая вид, что роли приложения, учётные данные провайдера или политика восстановления выбираются автоматически.

Часто задаваемые вопросы

Что нужно Grocy для production-развёртывания?

Направьте контейнер Grocy через порт 80 из одного HTTPS origin. Для локального запуска требуется один постоянный том конфигурации и, при необходимости, доступ к устройству для сканирования штрихкодов. Не объявляйте Grocy готовым, пока не сможете сменить данные для входа по умолчанию, добавить продукт, записать покупку и расход, отсканировать штрихкод и запустить напоминание о домашнем деле или истечении срока годности.

Какие данные Grocy должны входить в резервную копию?

Сохраняйте /config и включайте базу данных, загруженные файлы, рецепты и конфигурацию в единый recovery manifest. Восстановление Grocy можно считать корректным только после того, как запасы, рецепты, домашние дела, оборудование и история вернулись, а следующее запланированное напоминание содержит правильную дату.

Требуется ли Grocy HTTPS за reverse proxy?

Используйте HTTPS для публичного origin Grocy, а порт 80 оставьте во внутреннем маршруте. Правильно примените настройку Grocy: опубликуйте UI по HTTPS и настройте правильный часовой пояс. Для Grocy HTTPS защищает учётные данные и пользовательский контент при передаче и обеспечивает согласованную работу клиентов, зависящую от origin.

Как тестировать обновление Grocy?

Восстановите текущее состояние Grocy в изолированном развёртывании, примените candidate-версию и повторите приёмочную транзакцию. Обратите особое внимание на то, что миграции базы данных Grocy и custom extensions следует отрабатывать на копии каталога конфигурации. Сохраняйте предыдущий Grocy image, пока не будут понятны границы миграции данных и rollback.