Indeks dziennikaDockup / notatka terenowa
Note / self-host-grocy

Jak hostować Grocy samodzielnie w 2026 roku: dane magazynowe, strefa czasowa i kopie zapasowe

Dowiedz się, jak samodzielnie hostować Grocy z prawidłowymi portami, trwałym magazynem danych, HTTPS, sekretami, kopiami zapasowymi i kontrolą aktualizacji. Sprawdź, jak naprawić problem, gdy baza SQLite nie może zapisywać danych.

Traktuj Grocy jak niewielki system, a nie obraz Docker. Cel Grocy z perspektywy użytkownika jest jasny: zarządzanie zapasami domowymi, zakupami spożywczymi, obowiązkami i wyposażeniem. Wdrożenie można uznać za poprawne dopiero wtedy, gdy da się zmienić domyślne dane logowania, dodać produkt, zarejestrować zakup i zużycie, zeskanować kod kreskowy oraz uruchomić przypomnienie o obowiązku lub terminie ważności.

To rozróżnienie pozwala wychwycić problem, z którym operatorzy spotykają się po lokalnych testach: baza SQLite nie może zapisywać danych albo zaplanowane obowiązki używają niewłaściwej strefy czasowej. Dzięki temu plan tworzenia kopii zapasowych i aktualizacji jest wystarczająco konkretny, aby można go było przetestować.

Porty, procesy i usługi prywatne

Przydatny diagram Grocy pokazuje publiczną trasę, prywatny port 80, granicę stanu oraz wszystkie wymagania pomocnicze. Zaznacz, które strzałki przenoszą dane logowania, a które zwykły ruch użytkowników. Lokalne środowisko uruchomieniowe wymaga jednego trwałego wolumenu konfiguracji oraz opcjonalnego dostępu do urządzenia skanującego kody kreskowe. Dobierz rozmiar tego zasobu i monitoruj go razem z kontenerem, zamiast wystawiać niezwiązaną usługę sieciową.

Zweryfikuj diagram za pomocą jednego rzeczywistego działania: zmień domyślne dane logowania, dodaj produkt, zarejestruj zakup i zużycie, zeskanuj kod kreskowy oraz uruchom przypomnienie o obowiązku lub terminie ważności. Największe obciążenie prawdopodobnie będą generować zapisy SQLite, przesyłane obrazy, zaplanowane zadania i ruch z urządzeń domowych. Monitoruj tę ścieżkę, zamiast traktować wszystkie żądania HTTP tak samo.

Monitoruj obciążenie, a nie tylko kontener

Obserwuj zadania wykonywane przez Grocy: zapisy SQLite, przesyłane obrazy, zaplanowane zadania i ruch z urządzeń domowych. Ustaw limity z odpowiednim zapasem i unikaj liveness probe, który konkuruje z tym obciążeniem. Kontrola operatorska nadal powinna według harmonogramu próbować zmienić domyślne dane logowania, dodać produkt, zarejestrować zakup i zużycie, zeskanować kod kreskowy oraz uruchomić przypomnienie o obowiązku lub terminie ważności.

Podczas aktualizacji pamiętaj, że migracje bazy Grocy i niestandardowe rozszerzenia należy przećwiczyć na skopiowanym katalogu konfiguracji. Wdróż wersję kandydującą na odtworzonej kopii i powtórz znany test. Jeśli baza SQLite nie może zapisywać danych albo zaplanowane obowiązki używają niewłaściwej strefy czasowej, wykorzystaj logi środowiska uruchomieniowego i rzeczywiste żądanie sieciowe, aby ustalić, które założenie uległo zmianie.

Co musi działać, zanim pojawią się prawdziwe dane Grocy

Bramka produkcyjna dla Grocy powinna być możliwa do wykonania przez osobę, która nie tworzyła wdrożenia. Przekaż jej przypiętą wersję, nietrażliwe konto testowe oraz następujące zadanie: zmień domyślne dane logowania, dodaj produkt, zarejestruj zakup i zużycie, zeskanuj kod kreskowy oraz uruchom przypomnienie o obowiązku lub terminie ważności. Jeśli instrukcje wymagają niedokumentowanego dostępu do powłoki, usługa nie jest jeszcze gotowa operacyjnie.

Powtórz bramkę po wymianie wyłącznie kontenera. Następnie odtwórz bazę danych, przesłane pliki, przepisy i konfigurację w pustej infrastrukturze oraz potwierdź, że wracają zapasy, przepisy, obowiązki, wyposażenie i historia, a kolejne zaplanowane przypomnienie ma prawidłową datę. Mierz zapisy SQLite, przesyłane obrazy, zaplanowane zadania i ruch z urządzeń domowych podczas obu udanych przebiegów. Nieoczekiwane różnice często ujawniają brak pamięci podręcznej, indeksu, workera lub montowania danych.

Dodaj test awarii: prześlij nieszkodliwe dane w pobliżu limitu zasobów lub formatu powiązanego z tą granicą: baza SQLite nie może zapisywać danych albo zaplanowane obowiązki używają niewłaściwej strefy czasowej. Grocy powinien wygenerować przydatny błąd, zachować istniejący stan i odzyskać sprawność po przywróceniu prawidłowych warunków. Zapisz znaczniki czasu i odpowiednie wiersze logów, usuwając z nich sekrety. Te dowody będą punktem odniesienia przy następnej zmianie obrazu lub konfiguracji.

Zbuduj wymienny kontener Grocy

Użyj polecenia, które pokazuje wszystkie istotne ustawienia. Ta konfiguracja bazowa wiąże Grocy z lokalną pętlą zwrotną hosta, dodaje znane montowania danych i przekazuje pierwsze wymagane ustawienie. Przed wystawieniem usługi potwierdź wymaganie lokalne: jeden trwały wolumen konfiguracji oraz opcjonalny dostęp do urządzenia skanującego kody kreskowe.

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

Zastąp pływające tagi przetestowaną wersją lub digestem. Po uruchomieniu sprawdź docker logs --tail 200 grocy i potwierdź, że proces nasłuchuje na porcie 80. Następnie wykonaj scenariusz akceptacyjny Grocy. Odpowiedź strony głównej nie potwierdza, że cały scenariusz działa: zmień domyślne dane logowania, dodaj produkt, zarejestruj zakup i zużycie, zeskanuj kod kreskowy oraz uruchom przypomnienie o obowiązku lub terminie ważności.

Zaprojektuj odtwarzanie Grocy przed uruchomieniem

Zabezpiecz stan Grocy, zanim zaczniesz optymalizować jego kontener. Wymagany zestaw obejmuje bazę danych, przesłane pliki, przepisy i konfigurację. Zamontuj /config przed bootstrapem, zapisz przykładowe, nieszkodliwe dane i wymień kontener, aby potwierdzić, że ta ścieżka jest rzeczywiście trwała. Jeśli kilka magazynów musi zachować spójność, opisz kolejność wstrzymywania zapisów i tworzenia kopii zapasowych.

Przechowuj kopie poza serwerem wdrożeniowym i szyfruj materiały zawierające dane logowania lub prywatne treści. Odtwarzanie kończy się powodzeniem, gdy wracają zapasy, przepisy, obowiązki, wyposażenie i historia, a kolejne zaplanowane przypomnienie ma prawidłową datę. Różnicę między trwałym montowaniem a niezależną kopią opisano w artykule persistent storage and snapshots.

Testuj Grocy spoza serwera

Wybierz docelową nazwę hosta Grocy, zanim użytkownicy zapiszą callbacki lub ustawienia klientów, a następnie udostępnij interfejs przez HTTPS i skonfiguruj prawidłową strefę czasową. Trasa platformy powinna kończyć TLS jednokrotnie i kierować ruch do prywatnego portu 80.

Wykonaj transakcję akceptacyjną z zewnątrz. Jeśli klient nigdy nie dociera do Grocy, skorzystaj z listy kontrolnej walidacji SSL, aby sprawdzić DNS i certyfikat. Jeśli żądanie dociera do Grocy, ale baza SQLite nie może zapisywać danych albo zaplanowane obowiązki używają niewłaściwej strefy czasowej, przestań zmieniać przekierowania proxy i sprawdź granicę właściwą dla aplikacji.

Wybierz granicę zaufania Grocy

Przeprowadź analizę zagrożeń dla działania wykonywanego przez Grocy, a nie tylko dla formularza logowania. W tym przypadku największym ryzykiem jest pozostawienie domyślnych danych logowania po konfiguracji. Zaimplementuj następującą granicę: usuń domyślne dane logowania, wybierz prawidłową strefę czasową i ogranicz dane gospodarstwa domowego do wybranych użytkowników.

Grocy nie wymaga sekretu bootstrapowego w tej konfiguracji bazowej. Zamiast tego zabezpiecz rzeczywiste konto administratora lub uwierzytelnianie upstream. Nie rozwiązuj błędu uprawnień, uruchamiając kontener jako root lub szeroko montując system hosta. Limity zasobów również należą do projektu bezpieczeństwa, gdy użytkownicy mogą wywoływać zapisy SQLite, przesyłanie obrazów, zaplanowane zadania i ruch z urządzeń domowych.

Wdrożenie w Dockup nadal wymaga testu akceptacyjnego Grocy

Dockup może zarządzać wymiennymi elementami platformy: kierować ruch do portu 80, wystawiać domenę i certyfikat, wstrzykiwać sekrety, podłączać trwały magazyn oraz łączyć Grocy z zarządzanymi lub prywatnie dołączonymi usługami. Może to robić na infrastrukturze Dockup albo na podłączonym przez Ciebie serwerze.

Testy akceptacyjne Grocy nadal muszą być wykonane jawnie. Po wdrożeniu jednym kliknięciem udostępnij interfejs przez HTTPS i skonfiguruj prawidłową strefę czasową, potwierdź wymaganie lokalne — jeden trwały wolumen konfiguracji oraz opcjonalny dostęp do urządzenia skanującego kody kreskowe — i uruchom następujący scenariusz: zmień domyślne dane logowania, dodaj produkt, zarejestruj zakup i zużycie, zeskanuj kod kreskowy oraz uruchom przypomnienie o obowiązku lub terminie ważności. Ten podział jest zamierzony: Dockup usuwa powtarzalną konfigurację infrastruktury, nie udając, że role aplikacyjne, dane dostępowe dostawcy lub zasady odtwarzania wybierają się same.

Najczęściej zadawane pytania

Czego Grocy potrzebuje do wdrożenia produkcyjnego?

Skieruj kontener Grocy działający na porcie 80 przez jeden origin HTTPS. Lokalne środowisko uruchomieniowe wymaga jednego trwałego wolumenu konfiguracji oraz opcjonalnego dostępu do urządzenia skanującego kody kreskowe. Nie uznawaj Grocy za gotowe, dopóki nie możesz zmienić domyślnych danych logowania, dodać produktu, zarejestrować zakupu i zużycia, zeskanować kodu kreskowego oraz uruchomić przypomnienia o obowiązku lub terminie ważności.

Które dane Grocy powinny znaleźć się w kopii zapasowej?

Utrwal /config i uwzględnij bazę danych, przesłane pliki, przepisy oraz konfigurację w tym samym manifeście odtwarzania. Czyste odtwarzanie Grocy kończy się powodzeniem tylko wtedy, gdy wracają zapasy, przepisy, obowiązki, wyposażenie i historia, a kolejne zaplanowane przypomnienie ma prawidłową datę.

Czy Grocy wymaga HTTPS za reverse proxy?

Używaj HTTPS dla publicznego originu Grocy, a port 80 pozostaw na trasie wewnętrznej. Zastosuj prawidłowe ustawienie Grocy: udostępnij interfejs przez HTTPS i skonfiguruj prawidłową strefę czasową. W przypadku Grocy HTTPS chroni dane logowania lub treści użytkowników podczas przesyłania i zapewnia spójne działanie klienta zależne od originu.

Jak należy testować aktualizację Grocy?

Odtwórz bieżący stan Grocy w odizolowanym wdrożeniu, zastosuj wersję kandydującą i powtórz transakcję akceptacyjną. Zwróć szczególną uwagę na to, że migracje bazy Grocy i niestandardowe rozszerzenia należy przećwiczyć na skopiowanym katalogu konfiguracji. Zachowaj poprzedni obraz Grocy, dopóki nie poznasz granicy migracji danych i wycofywania zmian.