Recipes are scattered everywhere. Bookmarked tabs, screenshot folders, handwritten cards, that one blog post buried under 2,000 words of life story. You just want the ingredients and steps.

Mealie is a self-hosted recipe manager that pulls recipes from any URL, strips out the fluff, and stores them in a clean, searchable format. It also handles meal planning and shopping lists.

What Mealie Does

  • Import recipes from any URL — paste a link, Mealie scrapes the recipe automatically
  • Meal planning — drag and drop recipes into a weekly calendar
  • Shopping lists — auto-generated from your meal plan
  • Household sharing — multiple users, shared cookbooks
  • Nutritional info — automatic calculation from ingredients
  • Mobile-friendly — works great on a phone or tablet in the kitchen
  • API-first — everything is accessible via REST API

Docker Setup

mkdir -p ~/mealie && cd ~/mealie
# docker-compose.yml
version: "3.8"

services:
  mealie:
    image: ghcr.io/mealie-recipes/mealie:latest
    container_name: mealie
    restart: unless-stopped
    ports:
      - "9925:9000"
    volumes:
      - mealie_data:/app/data
    environment:
      ALLOW_SIGNUP: "true"
      PUID: 1000
      PGID: 1000
      TZ: America/New_York
      MAX_WORKERS: 1
      WEB_CONCURRENCY: 1
      BASE_URL: http://192.168.1.100:9925

volumes:
  mealie_data:
docker compose up -d

Visit http://your-server:9925. The default credentials are:

Change these immediately after first login.

Importing Your First Recipe

From a URL

This is Mealie’s killer feature. Find a recipe online, copy the URL, and:

  1. Click the + button
  2. Select Import from URL
  3. Paste the URL
  4. Click Import

Mealie uses the Recipe Schema standard (used by most food blogs) to extract:

  • Title
  • Ingredients list
  • Step-by-step instructions
  • Prep and cook time
  • Servings
  • Nutritional info (when available)
  • Image

No more scrolling past someone’s childhood memories to find the ingredient list.

Manual Entry

For grandma’s recipes that aren’t online:

  1. Click +Create Recipe
  2. Fill in title, ingredients, and instructions
  3. Upload a photo if you have one

Bulk Import

Moving from another service? Mealie supports import from:

  • Nextcloud Cookbook
  • Chowdown
  • Paprika
  • Plain JSON/ZIP exports

Organizing Recipes

Categories and Tags

Set up categories that match how you cook:

Categories (broad):

  • Breakfast
  • Lunch
  • Dinner
  • Dessert
  • Snacks
  • Meal Prep

Tags (specific):

  • Quick (under 30 min)
  • Vegetarian
  • Gluten-Free
  • Kid-Friendly
  • Freezer-Friendly
  • One-Pot

Cookbooks

Group recipes into themed collections:

  • “Weeknight Dinners” — meals ready in 30 minutes
  • “Holiday Baking” — seasonal favorites
  • “Meal Prep Sunday” — batch cooking recipes

Meal Planning

The meal planner is a weekly calendar where you drag recipes into days:

  1. Go to Meal Planner
  2. Click on a day
  3. Search and add recipes for breakfast, lunch, and dinner
  4. Repeat for the week

Once your week is planned, you can generate a shopping list with one click.

Shopping Lists

Mealie creates shopping lists from your meal plan:

  1. Plan your meals for the week
  2. Click Generate Shopping List
  3. Mealie combines all ingredients, merging duplicates
  4. Check off items as you shop

You can also create standalone shopping lists for non-recipe items.

The shopping list works on your phone — pull it up at the grocery store and check items off as you go.

Multi-User Setup

Mealie supports households. Set it up for your family:

  1. Go to Settings → Users
  2. Create accounts for family members
  3. Everyone shares the same recipe library
  4. Each person can have their own meal plan

Set ALLOW_SIGNUP: "false" in your compose file after creating all accounts to prevent unwanted signups.

Recipe Scaling

Need to double a recipe for a dinner party? Click the servings number and adjust. All ingredient quantities update automatically. This alone saves constant mental math.

API and Integrations

Mealie has a full REST API. Some useful automations:

Random Recipe Suggestion

curl -s http://192.168.1.100:9925/api/recipes/summary \
  -H "Authorization: Bearer YOUR_TOKEN" | \
  jq '.[rand | floor].name'

Add to Home Assistant

Display today’s dinner on your Home Assistant dashboard:

# configuration.yaml
rest:
  - resource: http://192.168.1.100:9925/api/meal-plans/today
    headers:
      Authorization: "Bearer YOUR_TOKEN"
    sensor:
      - name: "Tonight's Dinner"
        value_template: "{{ value_json[0].recipe.name }}"

Backup

Back up the Mealie data volume:

# Stop, backup, restart
docker compose stop
tar czf mealie-backup-$(date +%Y%m%d).tar.gz -C /var/lib/docker/volumes/ mealie_mealie_data
docker compose start

Or use Mealie’s built-in export:

  1. Go to Settings → Backups
  2. Click Create Backup
  3. Download the ZIP file

Schedule automatic backups:

0 3 * * 0 cd ~/mealie && docker compose exec -T mealie python /app/mealie/scripts/backup.py

Performance Notes

Mealie is lightweight:

  • RAM: ~200MB
  • CPU: Minimal (spikes during URL imports for scraping)
  • Storage: ~1MB per recipe (including images)

A Raspberry Pi 4 runs it comfortably with hundreds of recipes.

Putting It Behind a Reverse Proxy

For HTTPS access:

server {
    server_name recipes.yourdomain.com;

    location / {
        proxy_pass http://localhost:9925;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Update BASE_URL in your compose file to match: https://recipes.yourdomain.com

Why Self-Host Your Recipes?

  • No ads — recipe blogs are notoriously ad-heavy
  • No tracking — your meal habits are private
  • Offline access — works on your LAN even without internet
  • Permanent — recipes don’t disappear when a blog shuts down
  • Shareable — your whole household uses the same library

Wrapping Up

Mealie turns recipe chaos into an organized, searchable, meal-planning system. Import from URLs, plan your week, generate shopping lists, and access everything from your phone in the kitchen.

Setup takes five minutes. Importing your favorite recipes takes an evening. Having every recipe you’ve ever loved in one searchable place? That lasts forever.