Günlük diziniDockup / saha notu
Note / self-host-grocy

2026'da Grocy'yi Self-Host Etme: Envanter Verileri, Saat Dilimi ve Yedekler

Grocy'yi doğru portlar, kalıcı depolama, HTTPS, secret'lar, yedekler ve yükseltme kontrolleriyle self-host edin. SQLite veritabanı yazamadığında sorunu nasıl çözeceğinizi öğrenin.

Grocy'yi bir Docker image'ı olarak değil, küçük bir sistem olarak ele alın. Grocy'nin kullanıcıya sunduğu amaç nettir: ev envanterini, market alışverişlerini, işleri ve ekipmanları takip etmek. Dağıtım ancak varsayılan giriş bilgilerini değiştirebildiğinizde, ürün ekleyebildiğinizde, satın alma ve tüketim kaydı oluşturabildiğinizde, barkod tarayabildiğinizde ve bir iş ya da son kullanma tarihi hatırlatıcısını tetikleyebildiğinizde kabul edilebilir.

Bu ayrım, operatörlerin yerel testlerden sonra karşılaştığı arıza modunu ortaya çıkarır: SQLite veritabanı yazamaz veya zamanlanmış işler yanlış saat dilimini kullanır. Ayrıca yedekleme ve yükseltme planını test edilebilecek kadar somut hâle getirir.

Portlar, process'ler ve private servisler

Kullanışlı bir Grocy diyagramı public route'u, private port 80'i, state sınırını ve gerekli tüm destek bileşenlerini gösterir. Hangi okların credential taşıdığını, hangilerinin normal kullanıcı trafiği olduğunu işaretleyin. Yerel runtime gereksinimi, kalıcı bir config volume'ü ve isteğe bağlı barkod cihazı erişimidir. Bu kaynağı, ilgisiz bir network servisini dışa açmak yerine container ile birlikte boyutlandırın ve izleyin.

Diyagramı gerçek bir işlemle doğrulayın: varsayılan giriş bilgilerini değiştirin, ürün ekleyin, satın alma ve tüketim kaydı oluşturun, barkod tarayın ve bir iş ya da son kullanma tarihi hatırlatıcısını tetikleyin. Muhtemel yük SQLite yazma işlemlerinden, yüklenen görsellerden, zamanlanmış job'lar ve ev cihazı trafiğinden gelir; tüm HTTP isteklerini eşit kabul etmek yerine bu akışı izleyin.

Yalnızca container'ı değil, workload'u izleyin

Grocy'nin gerçekleştirdiği işleri gözlemleyin: SQLite yazma işlemleri, yüklenen görseller, zamanlanmış job'lar ve ev cihazı trafiği. Limitleri bu işler için yeterli headroom bırakacak şekilde belirleyin ve workload ile rekabet eden bir liveness probe kullanmaktan kaçının. Operatör kontrolü yine belirli bir programa göre varsayılan giriş bilgilerini değiştirmeyi, ürün eklemeyi, satın alma ve tüketim kaydı oluşturmayı, barkod taramayı ve bir iş ya da son kullanma tarihi hatırlatıcısını tetiklemeyi denemelidir.

Güncellemeler için Grocy veritabanı migration'larının ve custom extension'ların kopyalanmış bir config dizininde prova edilmesi gerektiğini unutmayın. Aday sürümü geri yüklenmiş bir kopya üzerinde çalıştırın ve bilinen testi tekrarlayın. SQLite veritabanı yazamıyorsa veya zamanlanmış işler yanlış saat dilimini kullanıyorsa, hangi varsayımın değiştiğini bulmak için runtime log'larını ve gerçek network request'ini kullanın.

Gerçek Grocy verileri gelmeden önce geçmesi gerekenler

Grocy için production gate, deployment'ı oluşturmamış biri tarafından çalıştırılabilir olmalıdır. Bu kişiye sabitlenmiş sürümü, hassas olmayan bir test hesabını ve şu görevi verin: varsayılan giriş bilgilerini değiştirin, ürün ekleyin, satın alma ve tüketim kaydı oluşturun, barkod tarayın ve bir iş ya da son kullanma tarihi hatırlatıcısını tetikleyin. Talimatlar belgelenmemiş shell erişimi gerektiriyorsa servis henüz operasyonel olarak hazır değildir.

Yalnızca container'ı değiştirdikten sonra gate'i tekrarlayın. Ardından veritabanını, yüklenen dosyaları, tarifleri ve configuration'ı boş bir altyapıya geri yükleyin; stokların, tariflerin, işlerin, ekipmanların ve geçmişin geri geldiğini ve bir sonraki zamanlanmış hatırlatıcının doğru tarihe sahip olduğunu kanıtlayın. Her iki başarılı çalıştırma sırasında SQLite yazma işlemlerini, yüklenen görselleri, zamanlanmış job'ları ve ev cihazı trafiğini ölçün; beklenmeyen farklılıklar çoğunlukla eksik bir cache, index, worker veya data mount olduğunu gösterir.

Bir failure drill ekleyin: bu sınırla ilişkili kaynak ya da format limitine yakın zararsız bir girdi gönderin: SQLite veritabanı yazamıyor veya zamanlanmış işler yanlış saat dilimini kullanıyor. Grocy kullanışlı bir hata üretmeli, mevcut state'i korumalı ve geçerli koşul geri geldiğinde toparlanmalıdır. Secret'ları redakte ederek timestamp'leri ve ilgili log satırlarını kaydedin. Bu kanıt, sonraki image veya configuration değişikliği için referans olur.

Değiştirilebilir bir Grocy container'ı oluşturun

Her önemli tercihi açıkça gösteren bir komut kullanın. Bu temel yapılandırma Grocy'yi host loopback'e bağlar, bilinen data mount'larını ekler ve gereken ilk ayarı sağlar. Dışa açmadan önce yerel gereksinimi doğrulayın: kalıcı bir config volume'ü ve isteğe bağlı barkod cihazı erişimi.

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

Değişken tag'leri test edilmiş bir sürüm veya digest ile değiştirin. Başlangıçtan sonra docker logs --tail 200 grocy komutunu inceleyin ve process'in 80 portunu dinlediğini doğrulayın. Ardından Grocy kabul işlemini gerçekleştirin; root sayfasından alınan yanıt, senaryonun tamamının başarılı olduğunu kanıtlayamaz: varsayılan giriş bilgilerini değiştirin, ürün ekleyin, satın alma ve tüketim kaydı oluşturun, barkod tarayın ve bir iş ya da son kullanma tarihi hatırlatıcısını tetikleyin.

Başlatmadan önce Grocy restore sürecini tasarlayın

Container'ı optimize etmeden önce Grocy state'ini koruyun. Gerekli set; veritabanı, yüklenen dosyalar, tarifler ve configuration'dır. Bootstrap işleminden önce /config'i mount edin, zararsız örnek veriler yazın ve bu yolun gerçekten kalıcı olduğunu kanıtlamak için container'ı değiştirin. Birden fazla store'un uyumlu olması gerekiyorsa, yazmaların duraklatılacağı ve yedeklerin alınacağı sırayı belgeleyin.

Kopyaları deployment server'ın dışında tutun ve credential ya da private content içeren materyalleri encrypt edin. Recovery; stokların, tariflerin, işlerin, ekipmanların ve geçmişin geri gelmesi ve bir sonraki zamanlanmış hatırlatıcının doğru tarihe sahip olması durumunda başarılıdır. Kalıcı bir mount ile bağımsız bir kopya arasındaki ayrım kalıcı depolama ve snapshot'lar başlıklı yazıda ele alınmıştır.

Grocy'yi server'ın dışından test edin

Kullanıcılar callback'leri veya client ayarlarını kaydetmeden önce nihai Grocy hostname'ini seçin; ardından UI'ı HTTPS üzerinden yayınlayın ve doğru saat dilimini yapılandırın. Platform route'u TLS'i bir kez sonlandırmalı ve private port 80'i hedeflemelidir.

Acceptance transaction'ını dışarıdan çalıştırın. Client Grocy'ye hiç ulaşamıyorsa DNS ve certificate kontrolleri için SSL doğrulama kontrol listesini kullanın. Request Grocy'ye ulaşıyor ancak SQLite veritabanı yazamıyor veya zamanlanmış işler yanlış saat dilimini kullanıyorsa proxy redirect'lerini değiştirmeyi bırakın ve bunun yerine uygulamaya özgü sınırı inceleyin.

Grocy trust boundary'sini seçin

Yalnızca login formunu değil, Grocy'nin gerçekleştirdiği işlemi threat model'e dahil edin. Buradaki yüksek riskli hata, kurulumdan sonra varsayılan giriş bilgilerini korumaktır. Şu sınırı uygulayın: varsayılan credential'ları kaldırın, doğru saat dilimini seçin ve ev verilerini amaçlanan kullanıcılarla sınırlayın.

Bu temel yapılandırmada Grocy için zorunlu bir bootstrap secret yoktur; bunun yerine gerçek administrator hesabını veya upstream authentication'ı koruyun. Bir permission hatasını container'ı root olarak çalıştırarak veya host'u geniş kapsamlı mount ederek çözmeye çalışmayın. SQLite yazma işlemleri, yüklenen görseller, zamanlanmış job'lar ve ev cihazı trafiği kullanıcılar tarafından tetiklenebildiğinde resource limit'leri de security design'ın bir parçasıdır.

Dockup deployment'ı yine de bir Grocy acceptance test'i gerektirir

Dockup, değiştirilebilir platform parçalarını üstlenebilir: trafiği port 80'e yönlendirmek, domain ve certificate sağlamak, secret'ları inject etmek, kalıcı storage bağlamak ve Grocy'yi managed ya da private olarak bağlanmış servislerle ilişkilendirmek. Bunu Dockup altyapısında veya bağladığınız bir server'da yapabilir.

Grocy acceptance çalışması açıkça tanımlı kalır. One-click deployment'ın ardından UI'ı HTTPS üzerinden yayınlayın ve doğru saat dilimini yapılandırın, yerel gereksinimi doğrulayın — kalıcı bir config volume'ü ve isteğe bağlı barkod cihazı erişimi — ve şu senaryoyu çalıştırın: varsayılan giriş bilgilerini değiştirin, ürün ekleyin, satın alma ve tüketim kaydı oluşturun, barkod tarayın ve bir iş ya da son kullanma tarihi hatırlatıcısını tetikleyin. Bu ayrım bilinçlidir: Dockup, uygulama rollerinin, provider credential'larının veya restore politikasının kendiliğinden seçildiğini varsaymadan tekrarlanan altyapı kurulumunu ortadan kaldırır.

Sık sorulan sorular

Production deployment için Grocy'nin neye ihtiyacı var?

Grocy container'ını port 80 üzerinden tek bir HTTPS origin'ine route edin. Yerel runtime gereksinimi, kalıcı bir config volume'ü ve isteğe bağlı barkod cihazı erişimidir. Varsayılan giriş bilgilerini değiştirebildiğinizde, ürün ekleyebildiğinizde, satın alma ve tüketim kaydı oluşturabildiğinizde, barkod tarayabildiğinizde ve bir iş ya da son kullanma tarihi hatırlatıcısını tetikleyebildiğinizde Grocy'yi hazır kabul edin.

Hangi Grocy verileri yedeğe dahil edilmeli?

/config'i kalıcı hâle getirin ve veritabanını, yüklenen dosyaları, tarifleri ve configuration'ı aynı recovery manifest'ine dahil edin. Temiz bir Grocy restore'u yalnızca stoklar, tarifler, işler, ekipmanlar ve geçmiş geri geldiğinde ve bir sonraki zamanlanmış hatırlatıcının doğru tarihe sahip olduğu doğrulandığında başarılıdır.

Reverse proxy arkasında Grocy için HTTPS gerekli mi?

Public Grocy origin'i için HTTPS kullanın ve port 80'i internal route üzerinde tutun. Grocy ayarını doğru uygulayın: UI'ı HTTPS üzerinden yayınlayın ve doğru saat dilimini yapılandırın. Grocy için HTTPS, credential'ları veya kullanıcı içeriğini aktarım sırasında korur ve origin'e duyarlı client davranışının tutarlı kalmasını sağlar.

Grocy yükseltmesi nasıl test edilmeli?

Mevcut Grocy state'ini izole bir deployment'a restore edin, aday sürümü uygulayın ve acceptance transaction'ını tekrarlayın. Grocy veritabanı migration'larının ve custom extension'ların kopyalanmış bir config dizininde prova edilmesi gerektiğinden özellikle dikkatli olun. Data migration ve rollback sınırları anlaşılana kadar önceki Grocy image'ını saklayın.