Indexul jurnaluluiDockup / notă de teren
Note / self-host-grocy

Cum să găzduiești Grocy pe cont propriu în 2026: datele de inventar, fusul orar și backupurile

Găzduiește Grocy pe cont propriu cu porturi corecte, stocare persistentă, HTTPS, secrete, backupuri și verificări pentru upgrade. Află cum să remediezi situația în care baza de date SQLite nu poate scrie.

Privește Grocy ca pe un sistem de mici dimensiuni, nu ca pe o imagine Docker. Obiectivul pentru utilizator al Grocy este clar: gestionarea inventarului casnic, a cumpărăturilor, treburilor și echipamentelor; implementarea este acceptabilă doar atunci când poți înlocui datele de autentificare implicite, adăuga un produs, înregistra o achiziție și un consum, scana un cod de bare și declanșa un reminder pentru o treabă sau pentru expirare.

Această distincție evidențiază situația de eroare cu care se confruntă operatorii după testarea locală: baza de date SQLite nu poate scrie sau treburile programate folosesc fusul orar greșit. De asemenea, face planul de backup și upgrade suficient de specific pentru a putea fi testat.

Porturi, procese și servicii private

O diagramă utilă pentru Grocy prezintă ruta publică, portul privat 80, limita de stare și fiecare cerință auxiliară. Marchează săgețile care transportă date de autentificare și separă-le de traficul obișnuit al utilizatorilor. Cerința locală de runtime este un singur volum de configurare durabil și acces opțional la dispozitivul pentru coduri de bare. Dimensionează și monitorizează această resursă împreună cu containerul, în loc să expui un serviciu de rețea fără legătură.

Demonstrează diagrama printr-o acțiune reală: înlocuiește datele de autentificare implicite, adaugă un produs, înregistrează o achiziție și un consum, scanează un cod de bare și declanșează un reminder pentru o treabă sau pentru expirare. Cea mai probabilă presiune vine din scrierile SQLite, imaginile încărcate, joburile programate și traficul dispozitivelor casnice; monitorizează această rută în loc să tratezi toate requesturile HTTP ca fiind echivalente.

Monitorizează volumul de lucru, nu doar containerul

Observă activitatea desfășurată de Grocy: scrierile SQLite, imaginile încărcate, joburile programate și traficul dispozitivelor casnice. Setează limite cu suficient headroom pentru această activitate și evită un liveness probe care concurează cu ea. Verificarea operatorului ar trebui totuși să încerce, conform unui program, să înlocuiască datele de autentificare implicite, să adauge un produs, să înregistreze o achiziție și un consum, să scaneze un cod de bare și să declanșeze un reminder pentru o treabă sau pentru expirare.

Pentru update-uri, reține că migrările bazei de date Grocy și extensiile custom ar trebui repetate pe un director de configurare copiat. Implementează versiunea candidată folosind o copie recuperată și repetă testul cunoscut. Dacă baza de date SQLite nu poate scrie sau treburile programate folosesc fusul orar greșit, folosește logurile de runtime și requestul efectiv din rețea pentru a identifica presupunerea care s-a schimbat.

Ce trebuie să treacă înainte să apară date reale în Grocy

Un gate de producție pentru Grocy ar trebui să poată fi executat de cineva care nu a creat implementarea. Oferă-i acelei persoane versiunea fixată, un cont de test care nu conține date sensibile și această sarcină: să înlocuiască datele de autentificare implicite, să adauge un produs, să înregistreze o achiziție și un consum, să scaneze un cod de bare și să declanșeze un reminder pentru o treabă sau pentru expirare. Dacă instrucțiunile necesită acces shell nedocumentat, serviciul nu este încă pregătit din punct de vedere operațional.

Repetă verificarea după ce înlocuiești doar containerul. Apoi restaurează baza de date, fișierele încărcate, rețetele și configurația într-o infrastructură goală și demonstrează că stocul, rețetele, treburile, echipamentele și istoricul reapar, iar următorul reminder programat are data corectă. Măsoară scrierile SQLite, imaginile încărcate, joburile programate și traficul dispozitivelor casnice în timpul ambelor rulări reușite; diferențele neașteptate indică adesea un cache, un index, un worker sau un mount de date lipsă.

Adaugă un exercițiu de gestionare a unei defecțiuni: trimite date inofensive aproape de limita de resurse sau de format asociată acestei limite: baza de date SQLite nu poate scrie sau treburile programate folosesc fusul orar greșit. Grocy ar trebui să emită o eroare utilă, să păstreze starea existentă și să se recupereze atunci când condiția validă revine. Salvează marcajele temporale și liniile relevante din loguri, cu secretele eliminate. Aceste dovezi devin referința pentru următoarea modificare de imagine sau configurație.

Creează un container Grocy care poate fi înlocuit

Folosește o comandă care expune fiecare alegere importantă. Această configurație de bază leagă Grocy de loopback-ul hostului, adaugă mounturile de date cunoscute și furnizează prima setare necesară. Confirmă cerința locală înainte de expunere: un singur volum de configurare durabil și acces opțional la dispozitivul pentru coduri de bare.

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

Înlocuiește tagurile floating cu o versiune testată sau cu un digest. După pornire, inspectează docker logs --tail 200 grocy și confirmă că procesul ascultă pe portul 80. Apoi execută acțiunea de acceptanță Grocy; un response al paginii principale nu poate demonstra că întregul scenariu reușește: înlocuiește datele de autentificare implicite, adaugă un produs, înregistrează o achiziție și un consum, scanează un cod de bare și declanșează un reminder pentru o treabă sau pentru expirare.

Proiectează restaurarea Grocy înainte de lansare

Protejează starea Grocy înainte să optimizezi containerul. Setul necesar include baza de date, fișierele încărcate, rețetele și configurația. Montează /config înainte de bootstrap, scrie date de exemplu inofensive și înlocuiește containerul pentru a demonstra că ruta este într-adevăr persistentă. Dacă mai multe store-uri trebuie să rămână sincronizate, documentează ordinea în care sunt oprite scrierile și sunt efectuate backupurile.

Păstrează copii în afara serverului de deployment și criptează materialele care conțin date de autentificare sau conținut privat. Recuperarea este reușită atunci când stocul, rețetele, treburile, echipamentele și istoricul reapar, iar următorul reminder programat are data corectă. Diferența dintre un mount persistent și o copie independentă este explicată în stocarea persistentă și snapshoturile.

Testează Grocy din afara serverului

Alege hostname-ul final pentru Grocy înainte ca utilizatorii să salveze callback-uri sau setări de client, apoi publică interfața prin HTTPS și configurează fusul orar corect. Ruta platformei ar trebui să încheie TLS o singură dată și să țintească portul privat 80.

Execută tranzacția de acceptanță din exterior. Dacă clientul nu ajunge niciodată la Grocy, folosește lista de verificare pentru validarea SSL pentru verificările DNS și ale certificatului. Dacă requestul ajunge la Grocy, dar baza de date SQLite nu poate scrie sau treburile programate folosesc fusul orar greșit, nu mai modifica redirecturile proxy și inspectează limita specifică aplicației.

Alege limita de încredere pentru Grocy

Modelează amenințările pentru acțiunea efectuată de Grocy, nu doar pentru formularul de autentificare. În acest caz, greșeala cu risc ridicat este păstrarea datelor de autentificare implicite după configurare. Implementează această limită: elimină datele de autentificare implicite, alege fusul orar corect și limitează datele casnice la utilizatorii vizați.

Grocy nu are un secret de bootstrap obligatoriu în această configurație de bază; protejează în schimb contul său real de administrator sau autentificarea upstream. Nu rezolva o eroare de permisiuni rulând containerul ca root sau montând extensiv hostul. Limitele de resurse fac parte și ele din proiectarea securității atunci când utilizatorii pot declanșa scrieri SQLite, imagini încărcate, joburi programate și trafic al dispozitivelor casnice.

Și un deployment Dockup are nevoie de un test de acceptanță Grocy

Dockup poate gestiona componentele platformei care pot fi înlocuite: direcționarea traficului către portul 80, emiterea domeniului și certificatului, injectarea secretelor, atașarea stocării persistente și conectarea Grocy la servicii gestionate sau atașate privat. Acest lucru se poate face pe infrastructura Dockup sau pe un server pe care îl atașezi.

Activitatea de acceptanță pentru Grocy rămâne explicită. După deployment-ul one-click, publică interfața prin HTTPS și configurează fusul orar corect, confirmă cerința locală — un singur volum de configurare durabil și acces opțional la dispozitivul pentru coduri de bare — și rulează acest scenariu: înlocuiește datele de autentificare implicite, adaugă un produs, înregistrează o achiziție și un consum, scanează un cod de bare și declanșează un reminder pentru o treabă sau pentru expirare. Această împărțire este intenționată: Dockup elimină configurarea repetitivă a infrastructurii fără să pretindă că rolurile aplicației, datele de autentificare ale furnizorului sau politica de restaurare se aleg singure.

Întrebări frecvente

De ce are nevoie Grocy pentru un deployment de producție?

Direcționează containerul Grocy de pe portul 80 printr-un singur origin HTTPS. Cerința locală de runtime este un singur volum de configurare durabil și acces opțional la dispozitivul pentru coduri de bare. Nu considera Grocy pregătit până când nu poți înlocui datele de autentificare implicite, adăuga un produs, înregistra o achiziție și un consum, scana un cod de bare și declanșa un reminder pentru o treabă sau pentru expirare.

Ce date Grocy trebuie incluse într-un backup?

Persistă /config și include baza de date, fișierele încărcate, rețetele și configurația în același manifest de recuperare. O restaurare Grocy curată reușește doar atunci când stocul, rețetele, treburile, echipamentele și istoricul reapar, iar următorul reminder programat are data corectă.

Are Grocy nevoie de HTTPS în spatele unui reverse proxy?

Folosește HTTPS pentru origin-ul public Grocy și păstrează portul 80 pe ruta internă. Aplică setarea Grocy corect: publică interfața prin HTTPS și configurează fusul orar corect. Pentru Grocy, HTTPS protejează datele de autentificare sau conținutul utilizatorilor în tranzit și menține consecvent comportamentul clientului dependent de origin.

Cum ar trebui testat un upgrade Grocy?

Restaurează starea curentă Grocy într-un deployment izolat, aplică versiunea candidată și repetă tranzacția de acceptanță. Acordă o atenție deosebită acestui aspect, deoarece migrările bazei de date Grocy și extensiile custom ar trebui repetate pe un director de configurare copiat. Păstrează imaginea Grocy anterioară până când limitele de migrare a datelor și de rollback sunt înțelese.