Take Control of Your Kitchen Without Handing Data to a Subscription App
Recipe apps come and go. Paprika raised its prices. Yummly got acquired. Whisk pivoted. If you have spent any time building a digital recipe collection, you already know how fragile that investment feels when it lives inside someone else’s platform. Mealie changes that equation entirely – it is a self-hosted recipe manager and meal planner that runs on your own hardware, stores your data in your own database, and answers to nobody’s pricing team.
What makes Mealie worth setting up is not just the privacy argument, though that matters. The app is genuinely polished. It imports recipes automatically from URLs, supports household meal planning with a shared shopping list, and exposes a full REST API if you want to automate anything. For home server enthusiasts who already run tools like Jellyfin as a private Netflix, Mealie fits the same philosophy: own your content, own your experience.

What You Need Before You Start
Mealie runs as a Docker container, so the prerequisites are minimal. You need a Linux machine, a NAS, or even a Raspberry Pi 4 with Docker and Docker Compose installed. The app is lightweight enough to run alongside other services without causing resource conflicts. A modern Pi 4 with 4GB of RAM handles it without complaint, and on an x86 home server it barely registers on CPU graphs during normal use.
You will also want a reverse proxy – Nginx Proxy Manager or Caddy are the most common choices among self-hosters – if you plan to access Mealie from outside your local network. This is optional if you only care about local access, but having a domain name with HTTPS makes the mobile experience far smoother, especially when you are standing in a grocery store trying to check your shopping list. Make sure your server can reach the internet during setup so Docker can pull the image without issues.
Before writing your compose file, decide where you want Mealie to store its data. The app uses a SQLite database by default, which is fine for individuals and small households. If you want to run PostgreSQL instead for better performance or easier backups, Mealie supports that with a few extra environment variables. For most people starting out, SQLite is the right call – you can migrate later if your needs change, and the default setup involves significantly less configuration.
Deploying with Docker Compose
Create a directory for Mealie and a docker-compose.yml file inside it. The core service block needs only a handful of settings. Set the image to ghcr.io/mealie-recipes/mealie:latest, map port 9000 on the host to port 9000 in the container, and define a volume that points a local path – something like ./mealie-data – to /app/data inside the container. Under the environment section, set ALLOW_SIGNUP=false if you do not want open registration, BASE_URL to your domain or local IP, and DEFAULT_GROUP to whatever you want the default household group to be called. Run docker compose up -d and within about thirty seconds the container will be ready.
The default admin credentials on first launch are changeme@example.com and MyPassword – change both immediately after logging in. From the admin panel you can create user accounts for other household members, each of whom gets their own login but shares the same recipe library and meal plan by default. Group permissions let you control who can add or delete recipes if that matters in your setup.

Importing Recipes and Building Your Library
The fastest way to understand why Mealie is worth the effort is to paste a recipe URL into the import field and watch what happens. Mealie sends a request to the page, parses the structured data embedded in most modern food blogs, and pulls out the title, ingredients, steps, cook time, and an image – usually in under five seconds. It works reliably on the major recipe sites and fails gracefully on the ones that do not publish structured data, falling back to a manual entry form instead.
Bulk imports are handled through a zip file of recipe JSONs or through Mealie’s own backup format, which is useful if you are migrating from an older Mealie instance or from another app that can export structured data. There is also an open-source browser extension that adds a one-click save button to recipe pages, which is the most natural way to build your library over time without thinking about it. After a few weeks of casual cooking, most people find they have accumulated enough recipes to make the meal planning feature genuinely useful.
Meal planning in Mealie works on a weekly calendar view. You assign recipes to specific meals – breakfast, lunch, dinner, or custom categories you define – and the app aggregates all ingredients into a single shopping list. That shopping list can be shared with household members through their own accounts, and it updates in real time. If your partner adds something to the list from their phone while you are already at the store, it appears immediately. There is no sync delay, no account linking required, and no subscription gate on the feature.
The shopping list also understands ingredient merging. If Monday’s dinner calls for two garlic cloves and Thursday’s recipe calls for three, the list shows five cloves total rather than two separate line items. You can check off items as you shop, and checked items persist until you manually clear the list. This sounds like a small thing until you have spent years working around apps that reset your list the moment you close the tab.

Keeping Mealie Running and Backed Up
Mealie generates its own backup archives from the admin panel under the maintenance section. You can trigger a manual backup or configure automated backups on a schedule, and the output is a zip file you can download and store anywhere. If you are already running an automated backup solution for your home server – something like Duplicati or Restic pointed at your Docker volumes – the Mealie data directory will be included automatically without any extra configuration.
Updates are straightforward. Pull the latest image with docker compose pull, then bring the stack down and back up. Mealie handles database migrations automatically on startup, so you do not need to run any manual scripts between versions. The project publishes a changelog on GitHub, and it is worth scanning before major version bumps to catch any breaking changes to environment variables or volume paths. The development team has been active, with updates shipping roughly every few weeks, which means the recipe scraper stays current with site changes that would otherwise break URL imports.
One area worth watching is the API. Mealie’s REST API is fully documented and includes endpoints for recipes, meal plans, shopping lists, and user management. Some users pipe it into Home Assistant automations – a dinner reminder that reads the evening meal from the meal plan, for instance, or a shopping list that syncs to a smart display in the kitchen. The API uses token-based authentication, so you can generate long-lived API keys from your user profile without exposing your main account credentials. Whether you build anything with it depends entirely on how deep you want to go, but the option being there at no extra cost is the kind of thing that separates self-hosted tools from their commercial counterparts.





