Journal-indexDockup / praktijknotitie
Note / self-host-grocy

Grocy zelf hosten in 2026: voorraadgegevens, tijdzone en back-ups

Host Grocy zelf met de juiste poorten, persistente opslag, HTTPS, secrets, back-ups en upgradecontroles. Leer hoe je het probleem oplost wanneer de SQLite-database niet kan schrijven.

Behandel Grocy als een klein systeem, niet als een Docker-image. Het doel voor gebruikers van Grocy is duidelijk: voorraad, boodschappen, huishoudelijke taken en apparatuur bijhouden; de deployment is pas acceptabel wanneer je de standaardlogin kunt vervangen, een product kunt toevoegen, een aankoop en verbruik kunt registreren, een barcode kunt scannen en een herinnering voor een taak of vervaldatum kunt activeren.

Dat onderscheid brengt de foutmodus aan het licht die operators na lokale tests tegenkomen: de SQLite-database kan niet schrijven of geplande taken gebruiken de verkeerde tijdzone. Het maakt het back-up- en upgradeplan bovendien specifiek genoeg om te testen.

Poorten, processen en private services

Een nuttig Grocy-diagram toont de publieke route, private poort 80, de state-grens en alle ondersteunende vereisten. Geef aan welke pijlen credentials bevatten en welke gewoon gebruikersverkeer vervoeren. De vereiste voor de lokale runtime is één duurzame config-volume en optionele toegang tot barcode-apparaten. Stem de omvang van die resource daarop af en monitor deze samen met de container, in plaats van een niet-gerelateerde netwerkservice bloot te stellen.

Bewijs het diagram met één echte actie: vervang de standaardlogin, voeg een product toe, registreer een aankoop en verbruik, scan een barcode en activeer een herinnering voor een taak of vervaldatum. De verwachte belasting komt waarschijnlijk van SQLite-writes, geüploade afbeeldingen, geplande taken en verkeer vanaf huishoudelijke apparaten; monitor dat pad in plaats van alle HTTP-requests als gelijkwaardig te behandelen.

Monitor de workload, niet alleen de container

Observeer het werk dat Grocy uitvoert: SQLite-writes, geüploade afbeeldingen, geplande taken en verkeer vanaf huishoudelijke apparaten. Stel limieten in met voldoende marge voor dit werk en vermijd een liveness probe die ermee concurreert. De operatorcontrole moet nog steeds volgens een schema proberen de standaardlogin te vervangen, een product toe te voegen, een aankoop en verbruik te registreren, een barcode te scannen en een herinnering voor een taak of vervaldatum te activeren.

Houd er bij updates rekening mee dat Grocy-databasemigraties en custom extensions moeten worden geoefend op een gekopieerde config-directory. Deploy de kandidaatversie tegen een herstelde kopie en herhaal de bekende test. Als de SQLite-database niet kan schrijven of geplande taken de verkeerde tijdzone gebruiken, gebruik dan runtime-logs en het daadwerkelijke netwerkrequest om vast te stellen welke aanname is gewijzigd.

Wat moet slagen voordat er echte Grocy-gegevens binnenkomen

Een production gate voor Grocy moet uitvoerbaar zijn door iemand die de deployment niet heeft gebouwd. Geef die persoon de vastgezette versie, een niet-gevoelig testaccount en deze opdracht: vervang de standaardlogin, voeg een product toe, registreer een aankoop en verbruik, scan een barcode en activeer een herinnering voor een taak of vervaldatum. Als de instructies ongedocumenteerde shell-toegang vereisen, is de service operationeel nog niet klaar.

Herhaal de gate nadat je alleen de container hebt vervangen. Herstel daarna de database, geüploade bestanden, recepten en configuratie naar lege infrastructuur en bewijs dat voorraad, recepten, taken, apparatuur en geschiedenis terugkeren en dat de volgende geplande herinnering de juiste datum heeft. Meet SQLite-writes, geüploade afbeeldingen, geplande taken en verkeer vanaf huishoudelijke apparaten tijdens beide geslaagde runs; onverwachte verschillen wijzen vaak op een ontbrekende cache, index, worker of datamount.

Voeg een failure drill toe: verstuur onschadelijke invoer vlak bij de resource- of formatlimiet die bij deze grens hoort: de SQLite-database kan niet schrijven of geplande taken gebruiken de verkeerde tijdzone. Grocy moet een bruikbare foutmelding geven, bestaande state behouden en herstellen zodra de geldige situatie terugkeert. Sla de tijdstippen en relevante logregels op en redigeer secrets. Die gegevens vormen de referentie voor de volgende image- of configuratiewijziging.

Bouw een vervangbare Grocy-container

Gebruik een commando waarin elke belangrijke keuze zichtbaar is. Deze baseline bindt Grocy aan de loopback van de host, voegt de bekende datamounts toe en levert de eerste vereiste instelling. Bevestig de lokale vereiste vóór je Grocy blootstelt: één duurzame config-volume en optionele toegang tot barcode-apparaten.

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

Vervang floating tags door een geteste versie of digest. Controleer na het opstarten docker logs --tail 200 grocy en bevestig dat het proces op 80 luistert. Voer daarna de acceptatietest voor Grocy uit; een response van de rootpagina bewijst niet dat het volledige scenario slaagt: vervang de standaardlogin, voeg een product toe, registreer een aankoop en verbruik, scan een barcode en activeer een herinnering voor een taak of vervaldatum.

Ontwerp het herstel van Grocy vóór de launch

Bescherm de state van Grocy voordat je de container optimaliseert. De vereiste set bestaat uit de database, geüploade bestanden, recepten en configuratie. Mount /config vóór de bootstrap, schrijf onschadelijke voorbeeldgegevens en vervang de container om te bewijzen dat dit pad daadwerkelijk persistent is. Als meerdere stores overeenstemming moeten hebben, documenteer dan de volgorde waarin writes worden gepauzeerd en back-ups worden gemaakt.

Bewaar kopieën buiten de deploymentserver en versleutel materiaal dat credentials of private content bevat. Herstel is geslaagd wanneer voorraad, recepten, taken, apparatuur en geschiedenis terugkeren en de volgende geplande herinnering de juiste datum heeft. Het verschil tussen een persistente mount en een onafhankelijke kopie wordt behandeld in persistente opslag en snapshots.

Test Grocy vanaf buiten de server

Kies de definitieve Grocy-hostnaam voordat gebruikers callbacks of clientinstellingen opslaan, publiceer de UI vervolgens via HTTPS en configureer de juiste tijdzone. De platformroute moet TLS één keer beëindigen en doorsturen naar private poort 80.

Voer de acceptatietransactie extern uit. Als de client Grocy nooit bereikt, gebruik dan de checklist voor SSL-validatie voor DNS- en certificaatcontroles. Als het request Grocy wel bereikt maar de SQLite-database niet kan schrijven of geplande taken de verkeerde tijdzone gebruiken, stop dan met het aanpassen van proxy-redirects en inspecteer in plaats daarvan de applicatiespecifieke grens.

Kies de trust boundary van Grocy

Maak een threat model van de actie die Grocy uitvoert, niet alleen van het loginformulier. In dit geval is de grootste fout dat de standaardlogin na de setup behouden blijft. Implementeer deze grens: verwijder de standaardcredentials, kies de juiste tijdzone en beperk huishoudelijke gegevens tot de bedoelde gebruikers.

Grocy heeft in deze baseline geen verplichte bootstrap-secret; bescherm in plaats daarvan het daadwerkelijke administratoraccount of upstream-authenticatie. Los een permission error niet op door de container als root uit te voeren of de host breed te mounten. Resourcelimieten maken ook deel uit van het securityontwerp wanneer gebruikers SQLite-writes, geüploade afbeeldingen, geplande taken en verkeer vanaf huishoudelijke apparaten kunnen activeren.

Ook een Dockup-deployment heeft een Grocy-acceptatietest nodig

Dockup kan de vervangbare platformonderdelen beheren: verkeer naar poort 80 routeren, het domein en certificaat uitgeven, secrets injecteren, persistente opslag koppelen en Grocy verbinden met beheerde of private gekoppelde services. Dat kan op de infrastructuur van Dockup of op een server die je koppelt.

De acceptatiewerkzaamheden voor Grocy blijven expliciet. Publiceer na de one-click deployment de UI via HTTPS en configureer de juiste tijdzone, bevestig de lokale vereiste — één duurzame config-volume en optionele toegang tot barcode-apparaten — en voer dit scenario uit: vervang de standaardlogin, voeg een product toe, registreer een aankoop en verbruik, scan een barcode en activeer een herinnering voor een taak of vervaldatum. Die verdeling is bewust: Dockup neemt repetitieve infrastructuurconfiguratie uit handen zonder te doen alsof applicatierollen, providercredentials of het herstelbeleid vanzelf worden gekozen.

Veelgestelde vragen

Wat heeft Grocy nodig voor een production deployment?

Routeer de Grocy-container via poort 80 door één HTTPS-origin. De vereiste voor de lokale runtime is één duurzame config-volume en optionele toegang tot barcode-apparaten. Verklaar Grocy pas gereed wanneer je de standaardlogin kunt vervangen, een product kunt toevoegen, een aankoop en verbruik kunt registreren, een barcode kunt scannen en een herinnering voor een taak of vervaldatum kunt activeren.

Welke Grocy-gegevens horen in een back-up?

Maak /config persistent en neem de database, geüploade bestanden, recepten en configuratie op in hetzelfde herstelmanifest. Een schone Grocy-restore is pas geslaagd wanneer voorraad, recepten, taken, apparatuur en geschiedenis terugkeren en de volgende geplande herinnering de juiste datum heeft.

Heeft Grocy HTTPS nodig achter een reverse proxy?

Gebruik HTTPS voor de publieke Grocy-origin en houd poort 80 op de interne route. Pas de Grocy-instelling correct toe: publiceer de UI via HTTPS en configureer de juiste tijdzone. Voor Grocy beschermt HTTPS credentials of gebruikerscontent tijdens transport en zorgt het voor consistent clientgedrag dat afhankelijk is van de origin.

Hoe moet een Grocy-upgrade worden getest?

Herstel de huidige Grocy-state naar een geïsoleerde deployment, pas de kandidaatversie toe en herhaal de acceptatietransactie. Let hier extra op, omdat Grocy-databasemigraties en custom extensions moeten worden geoefend op een gekopieerde config-directory. Bewaar de vorige Grocy-image totdat de grenzen voor datamigratie en rollback duidelijk zijn.