I had recipes everywhere, handwritten cards from my grandmother and screenshots from Instagram and links to blog posts that might disappear and a notes app with random cooking ideas scattered across folders. Mealie is a self-hosted recipe manager that organizes all of it with search and meal planning and nutritional info and grocery lists, and it even imports recipes from URLs automatically so you never have to scroll through a food blogger’s life story to find the actual recipe.
The Docker setup is one service with a data volume and a few environment variables for user ID and signup permissions. You run docker compose up, open the port, create an account, and you are looking at an empty recipe collection. The quickest way to populate it is pasting a URL from any food blog into the import from URL feature, which scrapes the page and extracts the ingredients and instructions and saves them cleanly. I have also been manually entering my grandmother’s handwritten cards, which takes a few minutes each but preserves them digitally forever.
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:latest
ports:
- "9925:9000"
volumes:
- data:/app/data
environment:
TZ: UTC
ALLOW_SIGNUP: "true"
restart: unless-stopped
volumes:
data:
The TZ variable makes timestamps show in your local time which matters more than you would think when recipes reference “added yesterday” or when you are planning meals across a week. Setting ALLOW_SIGNUP to true lets you create the first account, and after that you can flip it to false from the admin settings to keep your instance private.
Meal planning is where Mealie becomes genuinely useful for daily life. You drag recipes onto days of the week in the meal planner, and Mealie generates a grocery list from the planned meals grouped by category like produce and dairy and meat. I plan my dinners for the week on Sunday and go to the store with a precise list, which means less food waste and fewer impulse purchases and more actual cooking instead of ordering delivery.
The nutritional information feature estimates calories and protein and fat and carbs based on ingredient quantities, which is rough but useful for a general sense of what you are eating. I discovered my healthy pasta recipe had nine hundred calories per serving through this feature, which explained a lot.
Setting up a reverse proxy to your recipe domain lets you access Mealie from your phone while cooking. The mobile UI is responsive and I prop my phone against the kitchen backsplash and follow along without printing recipes or getting sauce on my laptop.
Mealie turned my chaotic collection of recipes into something I actually use every week, and my grandmother’s cards are preserved forever in a format that will not fade or get lost.
If you have thoughts on this do email me or subscribe to the newsletter.