Mealie: self-hosted recipe manager with Docker Compose
Mealie imports recipes from any website by URL, plans meals and builds shopping lists. How to install it with Docker Compose.
Mealie is a recipe manager for a household. Paste a link to a recipe and it pulls out the ingredients and the steps without the story around them. On top of the collection it has a meal planner, shopping lists that are built from planned recipes, and separate households and users.
What you need
- A server with Docker and the Compose plugin
- A local disk for the data volume. The documentation warns that SQLite on network storage can corrupt the database; use the PostgreSQL setup from the docs in that case.
Install
Create a folder and a docker-compose.yaml. This is the SQLite setup from the Mealie documentation, which the project recommends for up to about 20 users. The timezone and address are replaced by examples:
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:v3.30.0
container_name: mealie
restart: always
ports:
- "9925:9000"
deploy:
resources:
limits:
memory: 1000M
volumes:
- mealie-data:/app/data/
environment:
ALLOW_SIGNUP: "false"
PUID: 1000
PGID: 1000
TZ: Europe/Berlin
BASE_URL: https://mealie.example.com
volumes:
mealie-data:
- The image tag is the release that was current on the day this post was written. Check the releases page and use the latest
vX.Y.Z. The project advises pinning a version and updating on purpose rather than usinglatest. 9925is the port on the host; change it freely. Inside the container Mealie listens on 9000.- The memory limit is recommended by the documentation: without it Python may hold on to more RAM than it needs.
BASE_URLis the address you will use to open Mealie. It is used in links and notifications.
Start it:
docker compose up -d
First run
Open http://<host>:9925 and log in with the default account:
- Username:
changeme@example.com - Password:
MyPassword
Then try the main feature: create a recipe by importing it from a URL.
Backup
Mealie has a backup tool in the admin settings that writes an archive into the data volume. Copy those archives off the server, or back up the mealie-data volume itself.
Updating
Change the image tag to the new release, then:
docker compose pull && docker compose up -d