Index denníkaDockup / poznámka z terénu
Note / self-host-grocy

Ako hostovať Grocy vo vlastnej réžii v roku 2026: údaje o zásobách, časové pásmo a zálohy

Hostujte Grocy vo vlastnej réžii so správnymi portami, persistentným úložiskom, HTTPS, secrets, zálohami a kontrolami aktualizácií. Zistite, ako opraviť stav, keď databáza SQLite nemôže zapisovať.

Na Grocy sa pozerajte ako na malý systém, nie ako na Docker image. Cieľ pre používateľa je jasný: sledovanie domácich zásob, potravín, úloh a vybavenia. Nasadenie je prijateľné až vtedy, keď môžete nahradiť predvolené prihlasovacie údaje, pridať produkt, zaznamenať nákup a spotrebu, naskenovať čiarový kód a spustiť pripomienku úlohy alebo exspirácie.

Toto rozlíšenie odhaľuje problém, s ktorým sa operátori stretávajú po lokálnom testovaní: databáza SQLite nemôže zapisovať alebo naplánované úlohy používajú nesprávne časové pásmo. Zároveň vďaka nemu dokážete pripraviť dostatočne konkrétny plán zálohovania a aktualizácií, ktorý sa dá otestovať.

Porty, procesy a privátne služby

Užitočný diagram Grocy zobrazuje verejnú trasu, privátny port 80, hranicu stavu a všetky podporné požiadavky. Označte, ktoré šípky prenášajú prihlasovacie údaje a ktoré predstavujú bežnú používateľskú prevádzku. Požiadavkou lokálneho runtime je jeden trvalý konfiguračný volume a voliteľný prístup k zariadeniu na skenovanie čiarových kódov. Tento zdroj nastavujte a monitorujte spolu s kontajnerom, nie tak, že vystavíte nesúvisiacu sieťovú službu.

Diagram overte jednou reálnou akciou: nahraďte predvolené prihlasovacie údaje, pridajte produkt, zaznamenajte nákup a spotrebu, naskenujte čiarový kód a spustite pripomienku úlohy alebo exspirácie. Najväčšie zaťaženie pravdepodobne spôsobia zápisy do SQLite, nahrávané obrázky, naplánované úlohy a prevádzka domácich zariadení. Monitorujte preto túto cestu namiesto toho, aby ste všetky HTTP požiadavky považovali za rovnocenné.

Sledujte workload, nielen kontajner

Sledujte prácu, ktorú Grocy vykonáva: zápisy do SQLite, nahrávané obrázky, naplánované úlohy a prevádzku domácich zariadení. Limity nastavte s rezervou pre túto záťaž a vyhnite sa liveness probe, ktorá jej konkuruje. Kontrola operátora by sa aj tak mala podľa plánu pokúsiť nahradiť predvolené prihlasovacie údaje, pridať produkt, zaznamenať nákup a spotrebu, naskenovať čiarový kód a spustiť pripomienku úlohy alebo exspirácie.

Pri aktualizáciách pamätajte na to, že migrácie databázy Grocy a vlastné rozšírenia treba nacvičiť na skopírovanom konfiguračnom adresári. Kandidáta nasaďte oproti obnovenej kópii a zopakujte známy test. Ak databáza SQLite nemôže zapisovať alebo naplánované úlohy používajú nesprávne časové pásmo, pomocou runtime logov a skutočnej sieťovej požiadavky zistite, ktorý predpoklad sa zmenil.

Čo musí prejsť predtým, než do Grocy dorazia skutočné údaje

Produkčná kontrola pre Grocy by mala byť vykonateľná osobou, ktorá nasadenie nevytvorila. Dajte jej pinovanú verziu, testovací účet bez citlivých údajov a túto úlohu: nahradiť predvolené prihlasovacie údaje, pridať produkt, zaznamenať nákup a spotrebu, naskenovať čiarový kód a spustiť pripomienku úlohy alebo exspirácie. Ak pokyny vyžadujú nezdokumentovaný prístup cez shell, služba ešte nie je prevádzkovo pripravená.

Kontrolu zopakujte po výmene iba kontajnera. Potom obnovte databázu, nahrané súbory, recepty a konfiguráciu do prázdnej infraštruktúry a dokážte, že sa vrátia zásoby, recepty, úlohy, vybavenie aj história a nasledujúca naplánovaná pripomienka bude mať správny dátum. Počas oboch úspešných behov merajte zápisy do SQLite, nahrávané obrázky, naplánované úlohy a prevádzku domácich zariadení. Neočakávané rozdiely často odhalia chýbajúcu cache, index, workera alebo mount s dátami.

Pridajte aj nácvik zlyhania: odošlite neškodný vstup blízko limitu zdroja alebo formátu súvisiaceho s touto hranicou: databáza SQLite nemôže zapisovať alebo naplánované úlohy používajú nesprávne časové pásmo. Grocy by mal zobraziť užitočnú chybu, zachovať existujúci stav a po návrate platných podmienok sa zotaviť. Uložte časové pečiatky a relevantné riadky logu, pričom secrets redigujte. Tieto dôkazy sa stanú referenciou pre ďalšiu zmenu image alebo konfigurácie.

Vytvorte vymeniteľný kontajner Grocy

Použite príkaz, ktorý explicitne uvádza všetky dôležité voľby. Tento základný príklad viaže Grocy na loopback hostiteľa, pridáva známe mounty s dátami a poskytuje prvé požadované nastavenie. Pred vystavením služby overte lokálnu požiadavku: jeden trvalý konfiguračný volume a voliteľný prístup k zariadeniu na skenovanie čiarových kódov.

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

Plávajúce tagy nahraďte otestovanou verziou alebo digestom. Po spustení skontrolujte docker logs --tail 200 grocy a potvrďte, že proces počúva na porte 80. Potom vykonajte akceptačnú akciu Grocy. Odpoveď koreňovej stránky nedokazuje, že celý scenár funguje: nahradenie predvolených prihlasovacích údajov, pridanie produktu, zaznamenanie nákupu a spotreby, skenovanie čiarového kódu a spustenie pripomienky úlohy alebo exspirácie.

Navrhnite obnovu Grocy ešte pred spustením

Stav Grocy chráňte skôr, než začnete optimalizovať jeho kontajner. Povinnú sadu tvorí databáza, nahrané súbory, recepty a konfigurácia. Pred bootstrapom pripojte /config, zapíšte neškodné testovacie údaje a vymeňte kontajner, aby ste dokázali, že táto cesta je skutočne persistentná. Ak musia byť zosúladené viaceré úložiská, zdokumentujte poradie, v ktorom sa pozastavujú zápisy a vytvárajú zálohy.

Kópie uchovávajte mimo deployment servera a zašifrujte materiál obsahujúci prihlasovacie údaje alebo súkromný obsah. Obnova je úspešná vtedy, keď sa vrátia zásoby, recepty, úlohy, vybavenie aj história a nasledujúca naplánovaná pripomienka bude mať správny dátum. Rozdiel medzi persistentným mountom a nezávislou kópiou vysvetľuje persistentné úložisko a snapshots.

Testujte Grocy mimo servera

Konečný hostname Grocy vyberte ešte predtým, než si používatelia uložia callbacky alebo nastavenia klienta. Potom UI zverejnite cez HTTPS a nastavte správne časové pásmo. Platformová trasa by mala TLS ukončiť raz a smerovať na privátny port 80.

Akceptačnú transakciu spustite externe. Ak sa klient do Grocy nikdy nepripojí, použite kontrolný zoznam validácie SSL na overenie DNS a certifikátu. Ak požiadavka dorazí do Grocy, ale databáza SQLite nemôže zapisovať alebo naplánované úlohy používajú nesprávne časové pásmo, prestaňte meniť redirecty proxy a skontrolujte hranicu špecifickú pre aplikáciu.

Vyberte hranicu dôvery pre Grocy

Vytvorte threat model akcie, ktorú Grocy vykonáva, nielen jeho prihlasovacieho formulára. V tomto prípade je najväčším rizikom ponechanie predvolených prihlasovacích údajov po nastavení. Túto hranicu implementujte takto: odstráňte predvolené prihlasovacie údaje, vyberte správne časové pásmo a obmedzte údaje domácnosti na určených používateľov.

Grocy v tomto základnom nastavení nemá povinný bootstrap secret. Namiesto toho chráňte skutočný administrátorský účet alebo upstream autentifikáciu. Chybu oprávnení neriešte spustením kontajnera ako root ani širokým pripojením hostiteľa. Limity zdrojov patria do bezpečnostného návrhu aj vtedy, keď môžu používatelia spustiť zápisy do SQLite, nahrávanie obrázkov, naplánované úlohy a prevádzku domácich zariadení.

Nasadenie v Dockup stále potrebuje akceptačný test Grocy

Dockup môže spravovať vymeniteľné platformové časti: smerovať prevádzku na port 80, vystaviť doménu a certifikát, injectovať secrets, pripojiť persistentné úložisko a pripojiť Grocy k spravovaným alebo privátne pripojeným službám. Môže to robiť na infraštruktúre Dockup alebo na serveri, ktorý pripojíte.

Akceptácia Grocy však zostáva explicitnou úlohou. Po nasadení jedným kliknutím zverejnite UI cez HTTPS a nastavte správne časové pásmo, potvrďte lokálnu požiadavku — jeden trvalý konfiguračný volume a voliteľný prístup k zariadeniu na skenovanie čiarových kódov — a spustite tento scenár: nahradiť predvolené prihlasovacie údaje, pridať produkt, zaznamenať nákup a spotrebu, naskenovať čiarový kód a spustiť pripomienku úlohy alebo exspirácie. Toto rozdelenie je zámerné: Dockup odstraňuje opakované nastavovanie infraštruktúry bez predstierania, že roly aplikácie, prihlasovacie údaje poskytovateľa alebo politika obnovy sa zvolia samy.

Často kladené otázky

Čo Grocy potrebuje na produkčné nasadenie?

Kontajner Grocy smerujte cez port 80 na jeden HTTPS origin. Požiadavkou lokálneho runtime je jeden trvalý konfiguračný volume a voliteľný prístup k zariadeniu na skenovanie čiarových kódov. Grocy nepovažujte za pripravené, kým nemôžete nahradiť predvolené prihlasovacie údaje, pridať produkt, zaznamenať nákup a spotrebu, naskenovať čiarový kód a spustiť pripomienku úlohy alebo exspirácie.

Ktoré údaje Grocy patria do zálohy?

Zachovajte /config a do rovnakého recovery manifestu zahrňte databázu, nahrané súbory, recepty a konfiguráciu. Čistá obnova Grocy je úspešná iba vtedy, keď sa vrátia zásoby, recepty, úlohy, vybavenie aj história a nasledujúca naplánovaná pripomienka bude mať správny dátum.

Vyžaduje Grocy za reverse proxy HTTPS?

Pre verejný origin Grocy používajte HTTPS a port 80 ponechajte na internej trase. Nastavenie Grocy aplikujte správne: zverejnite UI cez HTTPS a nastavte správne časové pásmo. V prípade Grocy HTTPS chráni prihlasovacie údaje alebo používateľský obsah pri prenose a zachováva konzistentné správanie klienta závislé od originu.

Ako testovať aktualizáciu Grocy?

Obnovte aktuálny stav Grocy v izolovanom nasadení, aplikujte kandidátnu verziu a zopakujte akceptačnú transakciu. Venujte tomu osobitnú pozornosť, pretože migrácie databázy Grocy a vlastné rozšírenia treba nacvičiť na skopírovanom konfiguračnom adresári. Predchádzajúci Grocy image si ponechajte, kým nebudete rozumieť hranici migrácie dát a rollbacku.