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 using latest.
  • 9925 is 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_URL is 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