Mealie Recipe Manager
Mealie self-hosted recipe manager and meal planner with shopping lists.
Overview
Mealie is a modern, self-hosted recipe manager and meal planning application built with Vue.js and FastAPI that transforms how households organize their culinary life. Developed as an open-source alternative to commercial meal planning services, Mealie allows users to import recipes from websites, create custom recipes with rich formatting, plan meals on a calendar, and automatically generate shopping lists. The application features a clean, responsive interface that works seamlessly across desktop and mobile devices, making it accessible from the kitchen or grocery store. This deployment pairs Mealie with PostgreSQL 16 to provide enterprise-grade data reliability and performance for recipe storage, meal plans, and user data. PostgreSQL's ACID compliance ensures meal plans and shopping lists remain consistent even during concurrent access, while its full-text search capabilities enable fast recipe discovery across ingredients, titles, and instructions. The combination delivers a robust foundation for households serious about meal planning, offering the data integrity needed for reliable shopping list generation and the performance required for searching through large recipe collections. This stack is ideal for families looking to centralize their recipe collection, reduce food waste through better meal planning, and streamline grocery shopping with automated list generation.
Key Features
- Automatic recipe import from URLs with intelligent parsing of ingredients and instructions
- Interactive meal planning calendar with drag-and-drop recipe scheduling
- Smart shopping list generation that consolidates ingredients across multiple planned meals
- Full-text search across recipe titles, ingredients, and cooking instructions using PostgreSQL's advanced search capabilities
- Recipe scaling calculator that automatically adjusts ingredient quantities for different serving sizes
- Custom recipe categories and tags with filtering and organization tools
- User authentication system supporting multiple household members with shared recipe access
- Nutritional information tracking and dietary restriction filtering for health-conscious meal planning
Common Use Cases
- 1Family meal planning with automated grocery list generation to reduce food waste and shopping time
- 2Recipe collection digitization for households transitioning from physical cookbooks and printed recipes
- 3Dietary management for families with food allergies or specific nutritional requirements
- 4Meal prep coordination for busy professionals planning weekly batch cooking sessions
- 5Shared recipe management for multi-generational households with different cooking preferences
- 6Budget-conscious meal planning with ingredient cost tracking and shopping optimization
- 7Entertainment planning for hosts who frequently cook for guests and need scalable recipe management
Prerequisites
- Docker Engine and Docker Compose installed on the host system
- Minimum 1GB RAM available for PostgreSQL database operations and recipe indexing
- Port 9925 available on the host for Mealie web interface access
- Basic understanding of environment variable configuration for database credentials
- Sufficient storage space for recipe images and PostgreSQL data (minimum 5GB recommended)
- Network connectivity for importing recipes from external websites and downloading recipe images
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 mealie: 3 image: ghcr.io/mealie-recipes/mealie:latest4 container_name: mealie5 environment: 6 - ALLOW_SIGNUP=true7 - PUID=10008 - PGID=10009 - TZ=${TZ}10 - MAX_WORKERS=111 - WEB_CONCURRENCY=112 - BASE_URL=${BASE_URL}13 - DB_ENGINE=postgres14 - POSTGRES_USER=${POSTGRES_USER}15 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}16 - POSTGRES_SERVER=postgres17 - POSTGRES_PORT=543218 - POSTGRES_DB=mealie19 volumes: 20 - mealie_data:/app/data21 ports: 22 - "9925:9000"23 depends_on: 24 - postgres25 networks: 26 - mealie-network2728 postgres: 29 image: postgres:16-alpine30 container_name: mealie-db31 environment: 32 - POSTGRES_USER=${POSTGRES_USER}33 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}34 - POSTGRES_DB=mealie35 volumes: 36 - postgres_data:/var/lib/postgresql/data37 networks: 38 - mealie-network3940volumes: 41 mealie_data: 42 postgres_data: 4344networks: 45 mealie-network: 46 driver: bridge.env Template
.env
1# Mealie2TZ=UTC3BASE_URL=http://localhost:99254POSTGRES_USER=mealie5POSTGRES_PASSWORD=mealie_passwordUsage Notes
- 1UI at http://localhost:9925
- 2Default login: changeme@example.com / MyPassword
- 3Import recipes from URLs
- 4Meal planning calendar
- 5Shopping list generation
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
mealie
mealie:
image: ghcr.io/mealie-recipes/mealie:latest
container_name: mealie
environment:
- ALLOW_SIGNUP=true
- PUID=1000
- PGID=1000
- TZ=${TZ}
- MAX_WORKERS=1
- WEB_CONCURRENCY=1
- BASE_URL=${BASE_URL}
- DB_ENGINE=postgres
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_SERVER=postgres
- POSTGRES_PORT=5432
- POSTGRES_DB=mealie
volumes:
- mealie_data:/app/data
ports:
- "9925:9000"
depends_on:
- postgres
networks:
- mealie-network
postgres
postgres:
image: postgres:16-alpine
container_name: mealie-db
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=mealie
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- mealie-network
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 mealie:5 image: ghcr.io/mealie-recipes/mealie:latest6 container_name: mealie7 environment:8 - ALLOW_SIGNUP=true9 - PUID=100010 - PGID=100011 - TZ=${TZ}12 - MAX_WORKERS=113 - WEB_CONCURRENCY=114 - BASE_URL=${BASE_URL}15 - DB_ENGINE=postgres16 - POSTGRES_USER=${POSTGRES_USER}17 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}18 - POSTGRES_SERVER=postgres19 - POSTGRES_PORT=543220 - POSTGRES_DB=mealie21 volumes:22 - mealie_data:/app/data23 ports:24 - "9925:9000"25 depends_on:26 - postgres27 networks:28 - mealie-network2930 postgres:31 image: postgres:16-alpine32 container_name: mealie-db33 environment:34 - POSTGRES_USER=${POSTGRES_USER}35 - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}36 - POSTGRES_DB=mealie37 volumes:38 - postgres_data:/var/lib/postgresql/data39 networks:40 - mealie-network4142volumes:43 mealie_data:44 postgres_data:4546networks:47 mealie-network:48 driver: bridge49EOF5051# 2. Create the .env file52cat > .env << 'EOF'53# Mealie54TZ=UTC55BASE_URL=http://localhost:992556POSTGRES_USER=mealie57POSTGRES_PASSWORD=mealie_password58EOF5960# 3. Start the services61docker compose up -d6263# 4. View logs64docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/mealie-recipes/run | bashTroubleshooting
- Database connection failed errors: Verify POSTGRES_USER and POSTGRES_PASSWORD match in both Mealie and PostgreSQL containers
- Recipe import failing from websites: Check that the host has outbound internet access and the target website allows scraping
- Slow search performance with large recipe collections: Increase PostgreSQL shared_buffers and effective_cache_size in database configuration
- Shopping list not generating ingredients: Ensure recipes have properly formatted ingredient lists with quantities and units
- Unable to access web interface: Verify port 9925 is not blocked by firewall and container is binding to correct network interface
- Image uploads failing or not displaying: Check that mealie_data volume has sufficient disk space and proper permissions for PUID/PGID user
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
mealiepostgres
Tags
#mealie#recipes#meal-planning#cooking#shopping-list
Category
Home Lab & Self-HostingAd Space
Shortcuts: C CopyF FavoriteD Download