Skip to main content

Mealie

Mealie

Information

Mealie is a free and open source recipe manager and cookbook utility. It can import and scrape receipes and strip out ads from the internet. This is probably its most powerful feature.

  • Just Mealie Commands
TypeCommand
Startdocker compose up mealie -d
Shutdowndocker compose down mealie
mealie
  • Once started, mealie should be hit from this url:
URL
Non-SSL (Web UI)http://localhost:9925
Imagehkotel/mealie(Docker Hub)

Mealie Example Docker Compose

services:
mealie:
image: ghcr.io/mealie-recipes/mealie:${MEALIE_VERSION_TAG:-latest} #
container_name: ${MEALIE_CONTAINER_NAME}
restart: unless-stopped
ports:
- "${MEALIE_HOST_PORT:-9925}:9000" #
deploy:
resources:
limits:
memory: ${MEALIE_MEMORY_LIMIT:-512M} #
networks:
- homelab
- mealie
labels:
- "traefik.enable=true"
- "traefik.docker.network=home-media-docker_homelab"
- "traefik.http.routers.${MEALIE_CONTAINER_NAME}.rule=Host(`${MEALIE_CONTAINER_NAME}.${PROJECT_HOSTNAME}`)"
- "traefik.http.routers.${MEALIE_CONTAINER_NAME}.entrypoints=https"
- "traefik.http.routers.${MEALIE_CONTAINER_NAME}.tls=true"
- "traefik.http.services.${MEALIE_CONTAINER_NAME}.loadbalancer.server.port=9000"
volumes:
- ${DEFAULT_CONTAINER_DATA_LOCATION}/Mealie/app:/app/data/
env_file:
- ./.env
- ../../.env
environment:
# Set Backend ENV Variables Here
ALLOW_SIGNUP: ${MEALIE_ALLOW_SIGNUP:-false}
PUID: ${UID}
PGID: ${GID}
TZ: ${TIMEZONE}
MAX_WORKERS: ${MEALIE_MAX_WORKERS:-1}
WEB_CONCURRENCY: ${MEALIE_MAX_WEB_CONCURRENCY:-2}
BASE_URL: https://${MEALIE_CONTAINER_NAME}.${PROJECT_HOSTNAME}
# Database Settings
DB_ENGINE: ${MEALIE_DB_ENGINE:-postgres}
POSTGRES_USER: ${MEALIE_DB_USER:-mealie}
POSTGRES_PASSWORD: ${MEALIE_DB_PASSWORD:-mealie}
POSTGRES_SERVER: ${MEALIE_POSTGRES_CONTAINER_NAME:-mealie-postgres}
POSTGRES_PORT: 5432
POSTGRES_DB: ${MEALIE_DB_NAME:-mealie}
SMTP_HOST: ${MEALIE_SMTP_HOST}
SMTP_FROM_EMAIL: ${MEALIE_SMTP_FROM_EMAIL}
SMTP_USER: ${MEALIE_SMTP_USER}
SMTP_PASSWORD: ${MEALIE_SMTP_PASSWORD}
depends_on:
mealie-postgres:
condition: service_healthy
profiles:
- all
- mealie

mealie-postgres:
container_name: ${MEALIE_POSTGRES_CONTAINER_NAME:-mealie-postgres}
networks:
- mealie
image: postgres:15
restart: unless-stopped
volumes:
- ${DEFAULT_CONTAINER_DATA_LOCATION}/Mealie/db:/var/lib/postgresql/data
env_file:
- ./.env
- ../../.env
environment:
POSTGRES_PASSWORD: ${MEALIE_DB_PASSWORD:-mealie}
POSTGRES_USER: ${MEALIE_DB_USER:-mealie}
healthcheck:
test: ["CMD", "pg_isready"]
interval: 30s
timeout: 20s
retries: 3
profiles:
- all
- mealie

Mealie Example .env file

MEALIE_HOST_PORT="9925"
MEALIE_CONTAINER_NAME="mealie"
MEALIE_POSTGRES_CONTAINER_NAME="mealie-postgres"
##### MEALIE
MEALIE_VERSION_TAG="latest"
MEALIE_MEMORY_LIMIT="512M"
MEALIE_ALLOW_SIGNUP="false"
MEALIE_MAX_WORKERS=1
MEALIE_MAX_WEB_CONCURRENCY=2

### MEALIE SMTP SETTINGS
MEALIE_SMTP_HOST=smtp.gmail.com
MEALIE_SMTP_FROM_EMAIL=example@gmail.com
MEALIE_SMTP_USER=example@gmail.com
MEALIE_SMTP_PASSWORD=test1234