Як розгорнути Grocy на власному сервері у 2026 році: дані про запаси, часовий пояс і резервні копії
Розгорніть Grocy на власному сервері з правильними портами, постійним сховищем, HTTPS, секретами, резервними копіями та перевірками оновлень. Дізнайтеся, як виправити помилку, через яку база даних SQLite не може виконувати запис.
Сприймайте Grocy як невелику систему, а не як Docker-образ. Користувацька мета Grocy зрозуміла: облік домашніх запасів, продуктів, хатніх справ та обладнання; розгортання можна вважати прийнятним лише тоді, коли ви можете замінити стандартні облікові дані, додати продукт, записати придбання та споживання, відсканувати штрихкод і запустити нагадування про хатню справу або завершення терміну придатності.
Ця відмінність допомагає виявити типову проблему, з якою оператори стикаються після локального тестування: база даних SQLite не може виконувати запис або заплановані хатні справи використовують неправильний часовий пояс. Вона також робить план резервного копіювання та оновлення достатньо конкретним для перевірки.
Порти, процеси та приватні сервіси
Корисна схема Grocy показує публічний маршрут, приватний порт 80, межу стану та всі необхідні компоненти. Позначте, які стрілки передають облікові дані, а які — звичайний користувацький трафік. Вимога локального середовища виконання — один постійний том конфігурації та опційний доступ до пристрою для сканування штрихкодів. Виділіть і контролюйте цей ресурс разом із контейнером, не відкриваючи непов’язаний мережевий сервіс.
Перевірте схему реальною дією: замініть стандартні облікові дані, додайте продукт, запишіть придбання та споживання, відскануйте штрихкод і запустіть нагадування про хатню справу або завершення терміну придатності. Найімовірніше навантаження створюватимуть записи SQLite, завантажені зображення, заплановані завдання та трафік із домашніх пристроїв; контролюйте саме цей шлях, а не вважайте всі HTTP-запити однаковими.
Контролюйте навантаження, а не лише контейнер
Спостерігайте за роботою, яку виконує Grocy: записами SQLite, завантаженими зображеннями, запланованими завданнями та трафіком із домашніх пристроїв. Встановлюйте ліміти із запасом для цієї роботи й не використовуйте liveness probe, яка конкурує з нею за ресурси. Перевірка оператора все одно має за розкладом намагатися замінити стандартні облікові дані, додати продукт, записати придбання та споживання, відсканувати штрихкод і запустити нагадування про хатню справу або завершення терміну придатності.
Під час оновлень пам’ятайте, що міграції бази даних Grocy та custom extensions слід репетирувати на скопійованій директорії конфігурації. Розгорніть кандидатну версію на відновленій копії та повторіть відомий тест. Якщо база даних SQLite не може виконувати запис або заплановані хатні справи використовують неправильний часовий пояс, використовуйте runtime-логи та фактичний мережевий запит, щоб з’ясувати, яке припущення змінилося.
Що має пройти до появи реальних даних Grocy
Production gate для Grocy має бути виконуваним людиною, яка не створювала це розгортання. Передайте їй зафіксовану версію, тестовий обліковий запис без конфіденційних даних і таке завдання: замінити стандартні облікові дані, додати продукт, записати придбання та споживання, відсканувати штрихкод і запустити нагадування про хатню справу або завершення терміну придатності. Якщо інструкції вимагають недокументованого доступу до shell, сервіс ще не готовий до експлуатації.
Повторіть перевірку після заміни лише контейнера. Потім відновіть базу даних, завантажені файли, рецепти та конфігурацію в порожню інфраструктуру й доведіть, що запаси, рецепти, хатні справи, обладнання та історія повернулися, а наступне заплановане нагадування має правильну дату. Вимірюйте записи SQLite, завантажені зображення, заплановані завдання та трафік із домашніх пристроїв під час обох успішних запусків; неочікувані відмінності часто виявляють відсутній cache, index, worker або mount даних.
Додайте перевірку відмови: надішліть нешкідливі дані поблизу ліміту ресурсу або формату, пов’язаного з цією межею: база даних SQLite не може виконувати запис або заплановані хатні справи використовують неправильний часовий пояс. Grocy має видати корисну помилку, зберегти наявний стан і відновити роботу, коли коректна умова повернеться. Збережіть часові мітки та відповідні рядки журналу, видаливши секрети. Ці докази стануть еталоном для наступної зміни образу або конфігурації.
Створіть замінний контейнер Grocy
Використовуйте команду, яка явно задає всі важливі параметри. Цей базовий варіант прив’язує Grocy до loopback хоста, додає відомі монтування даних і передає перше обов’язкове налаштування. Перед відкриттям доступу підтвердьте локальну вимогу: один постійний том конфігурації та опційний доступ до пристрою для сканування штрихкодів.
docker run -d \
--name grocy \
--restart unless-stopped \
-p 127.0.0.1:80:80 \
-v grocy-data:/config \
lscr.io/linuxserver/grocy:latest
Замініть плаваючі теги на протестовану версію або digest. Після запуску перегляньте docker logs --tail 200 grocy і переконайтеся, що процес слухає порт 80. Потім виконайте acceptance action для Grocy; відповідь кореневої сторінки не доводить успішність усього сценарію: замініть стандартні облікові дані, додайте продукт, запишіть придбання та споживання, відскануйте штрихкод і запустіть нагадування про хатню справу або завершення терміну придатності.
Спроєктуйте відновлення Grocy до запуску
Захистіть стан Grocy до оптимізації його контейнера. Обов’язковий набір складається з бази даних, завантажених файлів, рецептів і конфігурації. Змонтуйте /config до bootstrap, запишіть нешкідливі тестові дані та замініть контейнер, щоб довести фактичну постійність цього шляху. Якщо кілька сховищ мають узгоджуватися, задокументуйте порядок призупинення записів і створення резервних копій.
Зберігайте копії за межами сервера розгортання та шифруйте матеріали, що містять облікові дані або приватний вміст. Відновлення можна вважати успішним, коли запаси, рецепти, хатні справи, обладнання та історія повернулися, а наступне заплановане нагадування має правильну дату. Відмінність між постійним монтуванням і незалежною копією описано в матеріалі постійне сховище та snapshots.
Тестуйте Grocy з-за меж сервера
Виберіть остаточне ім’я хоста Grocy до того, як користувачі збережуть callback або налаштування клієнта, потім опублікуйте UI через HTTPS і налаштуйте правильний часовий пояс. Маршрут платформи має завершувати TLS один раз і спрямовувати трафік на приватний порт 80.
Виконайте acceptance transaction ззовні. Якщо клієнт узагалі не досягає Grocy, скористайтеся контрольним списком перевірки SSL для перевірки DNS і сертифіката. Якщо запит доходить до Grocy, але база даних SQLite не може виконувати запис або заплановані хатні справи використовують неправильний часовий пояс, припиніть змінювати redirects проксі та перевірте натомість межу, специфічну для застосунку.
Визначте межу довіри Grocy
Моделюйте загрози для дії, яку виконує Grocy, а не лише для його форми входу. У цьому випадку найнебезпечніша помилка — залишити стандартні облікові дані після налаштування. Реалізуйте таку межу: видаліть стандартні облікові дані, виберіть правильний часовий пояс і обмежте доступ до даних домогосподарства потрібними користувачами.
У цьому базовому варіанті Grocy не має обов’язкового bootstrap secret; натомість захистіть фактичний обліковий запис адміністратора або upstream authentication. Не виправляйте помилку доступу запуском контейнера від імені root або широким монтуванням хоста. Ліміти ресурсів також є частиною security design, якщо користувачі можуть ініціювати записи SQLite, завантаження зображень, заплановані завдання та трафік із домашніх пристроїв.
Для розгортання Grocy у Dockup все одно потрібен acceptance test
Dockup може відповідати за замінні компоненти платформи: спрямовувати трафік на порт 80, видавати домен і сертифікат, передавати секрети, підключати постійне сховище та з’єднувати Grocy з керованими або приватно підключеними сервісами. Це можна зробити на інфраструктурі Dockup або на підключеному вами сервері.
Acceptance work для Grocy залишається явною частиною процесу. Після one-click deployment опублікуйте UI через HTTPS і налаштуйте правильний часовий пояс, підтвердьте локальну вимогу — один постійний том конфігурації та опційний доступ до пристрою для сканування штрихкодів — і виконайте такий сценарій: замініть стандартні облікові дані, додайте продукт, запишіть придбання та споживання, відскануйте штрихкод і запустіть нагадування про хатню справу або завершення терміну придатності. Такий розподіл навмисний: Dockup усуває повторюване налаштування інфраструктури, але не робить вигляд, що ролі в застосунку, облікові дані провайдера чи політика відновлення обираються автоматично.
Поширені запитання
Що потрібно Grocy для production deployment?
Спрямуйте контейнер 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 в ізольованому розгортанні, застосуйте кандидатну версію та повторіть acceptance transaction. Будьте особливо уважні, оскільки міграції бази даних Grocy та custom extensions слід репетирувати на скопійованій директорії конфігурації. Зберігайте попередній образ Grocy, доки не зрозумієте межі міграції даних і rollback.
