Grocy: The Self-Hosted Household Management System That Replaces a Dozen Apps
Most households run on a patchwork of apps: one for grocery lists, another for meal planning, a spreadsheet for tracking what's in the pantry, and Post-it notes for chores. Grocy replaces all of it with a single, self-hosted system that actually knows what's in your home.
Photo by Markus Winkler on Unsplash
Grocy is an open-source household management system that tracks groceries, plans meals, manages chores, inventories your belongings, and even handles battery and appliance maintenance. It's unglamorous software that solves real problems.
What Grocy Actually Does
Grocy's core feature is stock management: knowing what you have, how much of it, and when it expires. You scan products in when you buy them, scan them out when you use them, and Grocy tells you what to buy next.
From there, it branches into:
- Shopping lists — auto-populated from what you're running low on
- Meal plans — weekly menus with automatic ingredient tracking
- Recipes — store recipes, and Grocy deducts ingredients when you cook
- Chores — recurring tasks with scheduling and assignment
- Equipment — track appliances with maintenance schedules
- Battery monitor — track when to replace batteries in smoke detectors, remotes, etc.
- Userfields — add custom fields to any entity for your specific needs
Docker Setup
# docker-compose.yml
services:
grocy:
image: linuxserver/grocy
container_name: grocy
environment:
- PUID=1000
- PGID=1000
- TZ=America/Los_Angeles
volumes:
- ./grocy-data:/config
ports:
- "9283:80"
restart: unless-stopped
Start it:
docker compose up -d
Access at http://your-server:9283. Default login: admin / admin — change this immediately in Settings > Users.
Reverse Proxy (Optional)
To access Grocy with a domain name and HTTPS, add to your Nginx Proxy Manager or Traefik configuration. For a quick Caddy setup:
grocy.yourdomain.com {
reverse_proxy localhost:9283
}
Initial Configuration
After first login, go to Settings and configure:
- Currency — set your local currency
- Culture (locale) — affects date format
- Barcode lookups — choose a lookup provider (OpenFoodFacts is free and excellent)
- Locations — create your storage locations: Pantry, Fridge, Freezer, Bathroom Cabinet
- Quantity units — set up your units (pieces, grams, liters, etc.)
Like what you're reading? Subscribe to Self-Hosted Weekly — free weekly guides in your inbox.
Adding Products
There are three ways to add products:
Manual entry: Go to Stock > Products, click Add. Enter name, barcode (optional), quantity unit, and location.
Barcode scan: On mobile, use the Grocy companion app (Grocy Android or Grocy iOS) to scan a barcode. If the product exists in OpenFoodFacts, Grocy auto-fills the name and details. For unknown products, you fill them in once and it's remembered.
Import: Grocy supports bulk import via CSV if you want to pre-populate from a spreadsheet.
Stock Management in Practice
The daily workflow is simple:
When you buy groceries: Go to Stock > Purchase, scan each item, enter quantity and price. Grocy increments your stock.
When you use something: Go to Stock > Consume, scan or search, enter how much you used. Stock decrements.
When something expires: Grocy shows items expiring soon on the Stock Overview page. You can mark them consumed or dispose of them.
The stock overview gives you a live view of everything you have, sorted by expiration date, location, or category.
Shopping Lists
Grocy automatically adds items to your shopping list when stock falls below a minimum level you define. You can also add items manually or create separate lists for different stores.
The mobile apps let you check off items as you shop, and Grocy updates your stock automatically when you confirm a purchase.
Recipe and Meal Planning
Grocy's recipe system connects directly to stock:
- Create a recipe with ingredients and quantities
- Grocy checks your current stock against recipe requirements
- Missing ingredients auto-add to the shopping list
- When you cook the recipe, click "Consume ingredients" and Grocy deducts everything
For meal planning:
- Go to Meal Plan
- Assign recipes (or free-text meals) to days of the week
- Click "Add planned meals to shopping list" to aggregate all ingredient needs
This turns grocery shopping into a solved problem: plan the week, let Grocy calculate what you need, check off items while shopping.
Chore Management
Grocy's chore system handles recurring household tasks:
Chore: Clean refrigerator
Period: Every 14 days
Assigned to: anyone
The chore overview shows what's due, overdue, and upcoming. You can track who completed what and when, useful for shared households.
Chore types Grocy handles well:
- Appliance cleaning (oven, fridge, filter changes)
- Seasonal tasks (gutter cleaning, AC filter replacement)
- Regular maintenance (car oil changes, HVAC checks)
- Pet care (flea treatment schedules, vet appointments)
Battery Monitor
The battery feature is surprisingly useful. Track batteries in:
- Smoke detectors
- TV remotes
- Game controllers
- Wireless mice and keyboards
- Thermostats
Set a replacement interval, and Grocy reminds you when it's time. No more finding dead smoke detector batteries at 3 AM.
Home Assistant Integration
If you run Home Assistant, the Grocy integration surfaces Grocy data directly in HA:
- Show items expiring soon on a dashboard card
- Display overdue chores
- Create automations (e.g., announce when grocery stock is low)
- View meal plan for the week
Configuration in Home Assistant:
# configuration.yaml
grocy:
url: http://your-grocy-server:9283
api_key: your_api_key
verify_ssl: false
Get the API key from Grocy > Settings > API Keys.
Companion Apps
The official Grocy apps handle the mobile use case:
Grocy Android — Full-featured Android app with barcode scanning. Available on F-Droid (recommended) and Google Play.
Grocy iOS (Grocy-SwiftUI) — Community-maintained iOS app with barcode support. Available on the App Store.
Both apps connect to your self-hosted instance — just enter your server URL and API key.
For pure barcode scanning, the Barcode Buddy companion project auto-processes scans and passes them to Grocy, useful for bulk stock-taking.
What Grocy Won't Do
Grocy is deliberately focused. It doesn't:
- Suggest recipes based on what you have (though community plugins exist)
- Track calories or nutritional information
- Connect to grocery delivery services
- Integrate with recipe sites (you enter recipes manually or import from limited sources)
For nutritional tracking, pair Grocy with a dedicated app like Cronometer. For recipe imports, the Mealie self-hosted recipe manager integrates with Grocy and adds web scraping for recipes.
Grocy vs. Notion/Spreadsheets
The common alternative is a shared Notion database or Google Sheets for household inventory. Grocy's advantages:
| Feature | Grocy | Spreadsheet |
|---|---|---|
| Barcode scanning | Yes (mobile apps) | No |
| Expiry tracking | Auto-alerts | Manual |
| Shopping list generation | Automatic from minimums | Manual |
| Meal plan → ingredient tracking | Yes | No |
| Chore scheduling | Built-in | Manual |
| Data privacy | Self-hosted | Cloud |
The barcode scanning alone pays for the setup time. Checking in a week of groceries takes 2 minutes when you're scanning, not 10 minutes manually typing each item.
Verdict
Grocy is the rare self-hosted app that saves measurable time. Once you've been using it for a month — scanning groceries when you put them away, planning meals for the week, automatically generating shopping lists — the old way of managing a household feels chaotic.
The setup time is a few hours to configure locations, add your regular products, and set up minimum stock levels. After that, the system mostly runs itself.
If you've ever thrown out expired food, run out of something you thought you had, or spent 20 minutes figuring out what to make for dinner — Grocy is worth self-hosting.
