Päiväkirjan hakemistoDockup / kenttämuistio
Note / self-host-grocy

Grocyn itsehostaus vuonna 2026: varastotiedot, aikavyöhyke ja varmuuskopiot

Itsehostaa Grocy oikein määritetyillä porteilla, pysyvällä tallennustilalla, HTTPS:llä, salaisuuksilla, varmuuskopioilla ja päivitystarkistuksilla. Opi korjaamaan tilanne, jossa SQLite-tietokantaan ei voi kirjoittaa.

Käsittele Grocya pienenä järjestelmänä, älä Docker-imagena. Grocyn käyttäjälle näkyvä tavoite on selkeä: kodin varastojen, ostosten, askareiden ja laitteiden seuranta. Käyttöönotto on hyväksyttävä vasta, kun voit vaihtaa oletuskirjautumistiedot, lisätä tuotteen, kirjata ostoksen ja kulutuksen, skannata viivakoodin sekä käynnistää askare- tai vanhenemismuistutuksen.

Tämä erottelu paljastaa ongelman, johon ylläpitäjät törmäävät paikallisen testauksen jälkeen: SQLite-tietokantaan ei voi kirjoittaa tai ajastetut askareet käyttävät väärää aikavyöhykettä. Samalla varmuuskopiointi- ja päivityssuunnitelmasta tulee riittävän täsmällinen testattavaksi.

Portit, prosessit ja yksityiset palvelut

Hyödyllinen Grocy-kaavio näyttää julkisen reitin, yksityisen portin 80, tilarajan ja kaikki tarvittavat tukikomponentit. Merkitse, mitkä nuolet välittävät tunnistetietoja ja mitkä ovat tavallista käyttäjäliikennettä. Paikallinen runtime-vaatimus on yksi pysyvä config volume sekä valinnainen pääsy viivakoodilaitteisiin. Resursoi ja valvo tätä kokonaisuutta yhdessä kontin kanssa sen sijaan, että paljastaisit verkkoon siihen liittymättömän palvelun.

Todista kaavion toimivuus yhdellä oikealla toiminnolla: vaihda oletuskirjautumistiedot, lisää tuote, kirjaa ostos ja kulutus, skannaa viivakoodi sekä käynnistä askare- tai vanhenemismuistutus. Todennäköinen kuormitus syntyy SQLite-kirjoituksista, ladatuista kuvista, ajastetuista töistä ja kodin laitteiden liikenteestä. Valvo tätä reittiä sen sijaan, että käsittelisit kaikkia HTTP-pyyntöjä samanarvoisina.

Valvo työkuormaa, älä vain konttia

Seuraa Grocyn suorittamaa työtä: SQLite-kirjoituksia, ladattuja kuvia, ajastettuja töitä ja kodin laitteiden liikennettä. Aseta rajat niin, että tälle työlle jää riittävästi kapasiteettia, ja vältä liveness probea, joka kilpailee samoista resursseista. Ylläpitäjän tarkistuksen pitää edelleen yrittää vaihtaa oletuskirjautumistiedot, lisätä tuote, kirjata ostos ja kulutus, skannata viivakoodi sekä käynnistää askare- tai vanhenemismuistutus aikataulun mukaisesti.

Muista päivityksissä, että Grocyn tietokantamigraatiot ja custom extensionit kannattaa harjoitella kopioidussa config-hakemistossa. Ota ehdokasversio käyttöön palautetun kopion kanssa ja toista tunnettu testi. Jos SQLite-tietokantaan ei voi kirjoittaa tai ajastetut askareet käyttävät väärää aikavyöhykettä, selvitä runtime-lokien ja todellisen verkkopyynnön avulla, mikä oletus muuttui.

Mitkä tarkistukset on läpäistävä ennen oikeiden Grocy-tietojen käyttöönottoa?

Grocyn tuotantokäyttöön siirtymisen tarkistuksen pitää olla sellainen, että sen voi suorittaa henkilö, joka ei rakentanut käyttöönottoa. Anna hänelle lukittu versio, ei-arkaluonteinen testitili ja tämä tehtävä: vaihda oletuskirjautumistiedot, lisää tuote, kirjaa ostos ja kulutus, skannaa viivakoodi sekä käynnistä askare- tai vanhenemismuistutus. Jos ohjeet edellyttävät dokumentoimatonta shell-yhteyttä, palvelu ei ole vielä operatiivisesti valmis.

Toista tarkistus sen jälkeen, kun vaihdat ainoastaan kontin. Palauta tietokanta, ladatut tiedostot, reseptit ja asetukset tyhjään infrastruktuuriin ja varmista, että varastot, reseptit, askareet, laitteet ja historia palautuvat ja seuraavalla ajastetulla muistutuksella on oikea päivämäärä. Mittaa SQLite-kirjoituksia, ladattuja kuvia, ajastettuja töitä ja kodin laitteiden liikennettä molempien onnistuneiden suoritusten aikana. Odottamattomat erot paljastavat usein puuttuvan cachen, indeksin, workerin tai datamountin.

Lisää mukaan häiriöharjoitus: lähetä vaaratonta syötettä lähellä tähän rajaan liittyvää resurssi- tai muotorajaa: SQLite-tietokantaan ei voi kirjoittaa tai ajastetut askareet käyttävät väärää aikavyöhykettä. Grocyn pitää tuottaa hyödyllinen virheilmoitus, säilyttää nykyinen tila ja palautua, kun kelvollinen ehto palaa voimaan. Tallenna aikaleimat ja olennaiset lokirivit sekä poista salaisuudet. Tästä aineistosta tulee vertailukohta seuraavalle image- tai asetusten muutokselle.

Rakenna vaihdettava Grocy-kontti

Käytä komentoa, joka tuo kaikki tärkeät valinnat näkyviin. Tämä perusmääritys sitoo Grocyn hostin loopback-osoitteeseen, lisää tunnetut datamountit ja välittää ensimmäisen tarvittavan asetuksen. Varmista paikallinen vaatimus ennen julkaisemista: yksi pysyvä config volume sekä valinnainen pääsy viivakoodilaitteisiin.

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

Korvaa kelluvat tagit testatulla versiolla tai digestillä. Käynnistyksen jälkeen tarkista docker logs --tail 200 grocy ja varmista, että prosessi kuuntelee porttia 80. Suorita sen jälkeen Grocyn hyväksymistesti. Root-sivun vastaus ei todista koko skenaarion onnistumista: vaihda oletuskirjautumistiedot, lisää tuote, kirjaa ostos ja kulutus, skannaa viivakoodi sekä käynnistä askare- tai vanhenemismuistutus.

Suunnittele Grocyn palautus ennen käyttöönottoa

Suojaa Grocyn tila ennen kontin optimointia. Tarvittava kokonaisuus sisältää tietokannan, ladatut tiedostot, reseptit ja asetukset. Liitä /config ennen bootstrapia, kirjoita vaaratonta esimerkkidataa ja vaihda kontti varmistaaksesi, että polku on todella pysyvä. Jos useiden tallennussijaintien on pysyttävä yhdenmukaisina, dokumentoi järjestys, jossa kirjoitukset keskeytetään ja varmuuskopiot otetaan.

Säilytä kopiot käyttöönotton ulkopuolella olevalla palvelimella ja salaa tunnistetietoja tai yksityistä sisältöä sisältävä aineisto. Palautus onnistuu, kun varastot, reseptit, askareet, laitteet ja historia palautuvat ja seuraavalla ajastetulla muistutuksella on oikea päivämäärä. Pysyvän mountin ja erillisen kopion välistä eroa käsitellään artikkelissa persistent storage and snapshots.

Testaa Grocy palvelimen ulkopuolelta

Valitse lopullinen Grocy-hostname ennen kuin käyttäjät tallentavat callbackeja tai client-asetuksia. Julkaise käyttöliittymä HTTPS:n kautta ja määritä oikea aikavyöhyke. Platform-reitin tulee päättää TLS-yhteys kerran ja ohjata liikenne yksityiseen porttiin 80.

Suorita hyväksymistapahtuma ulkoisesti. Jos client ei koskaan tavoita Grocya, käytä SSL validation checklistiä DNS- ja sertifikaattitarkistuksiin. Jos pyyntö saavuttaa Grocyn, mutta SQLite-tietokantaan ei voi kirjoittaa tai ajastetut askareet käyttävät väärää aikavyöhykettä, lopeta proxy-uudelleenohjausten muuttaminen ja tarkista sen sijaan sovelluskohtainen raja.

Valitse Grocyn trust boundary

Tee threat model Grocyn suorittamasta toiminnosta, älä pelkästään sen kirjautumislomakkeesta. Tässä suurin riski on oletuskirjautumistietojen säilyttäminen käyttöönoton jälkeen. Toteuta tämä raja: poista oletustunnistetiedot, valitse oikea aikavyöhyke ja rajoita kotitalouden tiedot tarkoitetuille käyttäjille.

Grocyn perusmääritys ei edellytä pakollista bootstrap-salaisuutta. Suojaa sen todellinen ylläpitäjätili tai upstream authentication sen sijaan. Älä ratkaise käyttöoikeusvirhettä suorittamalla konttia root-käyttäjänä tai liittämällä hostin tiedostojärjestelmää laajasti. Resource limitit kuuluvat myös tietoturvasuunnitteluun, kun käyttäjät voivat käynnistää SQLite-kirjoituksia, kuvien latauksia, ajastettuja töitä ja kodin laitteiden liikennettä.

Myös Dockup-käyttöönotto tarvitsee Grocy-hyväksymistestin

Dockup voi hallita vaihdettavia platform-komponentteja: ohjata liikenteen porttiin 80, julkaista domainin ja sertifikaatin, välittää salaisuudet, liittää pysyvän tallennustilan ja yhdistää Grocyn hallittuihin tai yksityisesti liitettyihin palveluihin. Tämä voidaan tehdä Dockup-infrastruktuurissa tai liittämässäsi palvelimessa.

Grocyn hyväksymistesti on edelleen määriteltävä erikseen. One-click-käyttöönoton jälkeen julkaise käyttöliittymä HTTPS:n kautta ja määritä oikea aikavyöhyke, varmista paikallinen vaatimus — yksi pysyvä config volume sekä valinnainen pääsy viivakoodilaitteisiin — ja suorita tämä skenaario: vaihda oletuskirjautumistiedot, lisää tuote, kirjaa ostos ja kulutus, skannaa viivakoodi sekä käynnistä askare- tai vanhenemismuistutus. Tämä jako on tarkoituksellinen: Dockup poistaa toistuvan infrastruktuurin määritystyön teeskentelemättä, että sovellusroolit, palveluntarjoajan tunnistetiedot tai palautuskäytäntö valikoituisivat itsestään.

Usein kysytyt kysymykset

Mitä Grocy tarvitsee tuotantokäyttöön?

Ohjaa Grocy-kontti portissa 80 yhden HTTPS-originin kautta. Paikallinen runtime-vaatimus on yksi pysyvä config volume sekä valinnainen pääsy viivakoodilaitteisiin. Älä pidä Grocya valmiina, ennen kuin voit vaihtaa oletuskirjautumistiedot, lisätä tuotteen, kirjata ostoksen ja kulutuksen, skannata viivakoodin sekä käynnistää askare- tai vanhenemismuistutuksen.

Mitkä Grocyn tiedot kuuluvat varmuuskopioon?

Säilytä /config ja sisällytä tietokanta, ladatut tiedostot, reseptit ja asetukset samaan palautusmanifestiin. Puhdas Grocy-palautus onnistuu vain, kun varastot, reseptit, askareet, laitteet ja historia palautuvat ja seuraavalla ajastetulla muistutuksella on oikea päivämäärä.

Edellyttääkö Grocy HTTPS:ää reverse proxyn takana?

Käytä julkisessa Grocy-originissa HTTPS:ää ja pidä portti 80 sisäisessä reitissä. Määritä Grocyn asetus oikein: julkaise käyttöliittymä HTTPS:n kautta ja määritä oikea aikavyöhyke. Grocyn tapauksessa HTTPS suojaa tunnistetietoja tai käyttäjäsisältöä siirron aikana ja pitää originista riippuvan client-käyttäytymisen yhdenmukaisena.

Miten Grocyn päivitys pitäisi testata?

Palauta Grocyn nykyinen tila eristettyyn käyttöönottoon, ota ehdokasversio käyttöön ja toista sen hyväksymistapahtuma. Kiinnitä erityistä huomiota siihen, että Grocyn tietokantamigraatiot ja custom extensionit kannattaa harjoitella kopioidussa config-hakemistossa. Säilytä edellinen Grocy-image, kunnes sen datamigraation ja rollbackin rajat on ymmärretty.