
Что такое Mealie#
Mealie - это открытое, self-hosted веб-приложение для управления рецептами, планирования питания и составления списка покупок.
Сайт проекта: mealie.io
Документация: docs.mealie.io
Главные особенности:
- Установка на собственном сервере или домашней инфраструктуре - без зависимости от облачных сервисов.
- Импорт рецептов с веб-страниц с помощью встроенного «скрепера».
- Современный интерфейс на Vue.js, backend с REST API.
- Планировщик питания (meal planner) и списки покупок (shopping list).
- Поддержка нескольких пользователей и групп.
- Организация рецептов в коллекции, теги, категории.
Основные возможности Mealie#
Импорт рецептов
Можно вводить вручную или передавать ссылку на веб-страницу, и Mealie извлечет ингредиенты и инструкции.
Подробнее на GitHub: github.com/mealie-recipes/mealieРедактор рецептов
Полное редактирование ингредиентов, инструкций, фото и описаний.Планировщик питания
Распределение блюд по дням недели/месяца.Список покупок
Автоматическое формирование списка на основе выбранных рецептов, с возможностью группировки по отделам магазина.Организация рецептов
Теги, категории, коллекции (cookbooks) для удобного поиска.API и интеграции
REST API, вебхуки, поддержка Home Assistant и других систем.Локализация
Интерфейс доступен на многих языках.
Почему Mealie интересен домашним энтузиастам#
Если у вас уже есть домашний сервер или кластер (например, Proxmox и мини ПК), Mealie идеально впишется:
- Запуск в контейнере Docker или LXC.
- Полный контроль над данными - ваши рецепты, планы питания и списки покупок остаются у вас.
- Возможность использовать как контент-базу для блога или YouTube-канала.
- Интеграция с домашней автоматизацией: уведомления о запланированных блюдах, списки ингредиентов на холодильнике и др.
Возможные ограничения#
- Масштабирование порций (recipe scaling) может быть неидеальным.
Источник обсуждения на Reddit - Требуются базовые навыки self-hosting: подготовка сервера/контейнера, резервное копирование, безопасность.
- Мобильные приложения сторонние, основное использование через веб-интерфейс.
Пример мобильного клиента для iOS
Что нового в Mealie с момента публикации статьи#
Актуализация. Статья была написана для Mealie версии, актуальной на октябрь 2025 года. С тех пор вышло несколько релизов (текущая на август 2026 - v3.22.0), и в проекте появились функции, которых не было на момент написания. Разберу самые заметные и покажу, как ими пользоваться.
Стандартизация единиц измерения#
Раньше список покупок мог продублировать один и тот же ингредиент разными единицами (например, «1 pint молока» и «2 cups молока» из разных рецептов не объединялись в одну позицию). Теперь единицы можно стандартизировать, и Mealie автоматически сводит совместимые величины в одну позицию списка покупок. Стандартные единицы настраиваются на странице управления данными (Data Management) в настройках группы - там же можно добавить свои.
Отдельная ремарка для тех, кто привык готовить по граммам и миллилитрам, как это в основном принято у нас в России. Стандартизация в Mealie сводит совместимые единицы одного типа (объём к объёму: pint → cups, вес к весу: oz → lb), но не умеет надёжно конвертировать объём в вес - то есть «1 cup муки» сам по себе не превратится в корректные граммы, потому что для этого нужна плотность конкретного продукта, которой в базе Mealie попросту нет. Большинство импортируемых с англоязычных сайтов рецептов используют кружки/чашки (cups), унции (oz) и градусы Фаренгейта - при импорте такого рецепта стоит вручную проверять и при необходимости пересчитывать граммы/миллилитры/градусы Цельсия самостоятельно, автоматика тут не всегда спасёт.
Более надёжный веб-скрапер#
Парсер рецептов с обычных сайтов заметно доработали - многие сайты, с которых импорт раньше ломался (потому что приходилось руками копировать HTML-код страницы), теперь снова импортируются просто по ссылке.
Announcements - объявления от разработчиков#
В интерфейсе появился отдельный канал объявлений от мейнтейнеров проекта - туда попадают важные новости о функциях, которые требуют действий пользователя, в дополнение к обычным release notes.
ИИ-функции в Mealie#
Это, пожалуй, самое существенное дополнение к Mealie за последнее время, поэтому разберу его отдельно и подробно.
Какие провайдеры поддерживаются#
Важный момент для homelab-аудитории: Mealie не привязан к OpenAI намертво. Он работает с любым OpenAI-совместимым API, а именно:
- OpenAI - самый простой вариант, но платный (по токенам и по минутам аудио для Whisper);
- Azure OpenAI - если у вас корпоративная подписка Azure;
- Ollama - self-hosted вариант, который можно поднять у себя на том же Proxmox-хосте или мини-ПК и не платить вообще ничего, ценой того, что качество распознавания будет зависеть от выбранной локальной модели;
- любой другой кастомный endpoint, реализующий OpenAI-совместимый API.
Для тех, кто принципиально не хочет отправлять свои рецепты и видео куда-то во внешний сервис - Ollama здесь выглядит наиболее логичным выбором именно для homelab: и приватность соблюдена, и денег не нужно.
Что именно умеет ИИ в Mealie#
- Import with AI - главная фича. Позволяет создать рецепт из: обычного текста, HTML, JSON (в том числе разметки schema.org/Recipe), фотографии рецепта (напечатанного или даже рукописного) и ссылки на видео (YouTube, TikTok, Instagram) - в последнем случае аудиодорожка распознаётся через Whisper-совместимую модель и превращается в текст, из которого уже собирается структурированный рецепт. Есть и опциональный перевод результата на нужный язык.
- Резервный парсер для скрапинга сайтов - если обычный скрапер не смог разобрать страницу (нестандартная вёрстка, JS-рендеринг и т.д.), ИИ подключается как fallback и пытается вытащить рецепт из содержимого страницы напрямую.
- ИИ-парсер ингредиентов - альтернатива встроенным NLP- и brute-force-парсерам при разборе списка ингредиентов на количество/единицу/продукт.
- Автоматическое сопоставление тегов, категорий и инструментов - ИИ сам предлагает подходящие теги и категории для нового рецепта на основе его содержимого.
Как настроить#
Всё настраивается в Group Settings (настройки группы), а не глобально для всего сервера - это удобно, если Mealie используется несколькими семьями/группами с разными провайдерами.
- Укажите провайдера по умолчанию (Default provider) - без этого шага ни одна ИИ-функция работать не будет, кнопки просто останутся скрытыми.
- Если хотите распознавать фото рецептов - провайдер должен поддерживать работу с изображениями (у OpenAI это модели вроде gpt-4o/gpt-5, у Ollama - vision-модели вроде llava).
- Если хотите импортировать рецепты из видео - нужен отдельный аудио-провайдер (audio provider), например
whisper-1. - Ключ и адрес эндпоинта можно задать либо через переменные окружения в
docker-compose.yml(OPENAI_API_KEY- см. пример compose-файла выше), либо прямо в интерфейсе через Group Settings - второй способ удобнее, если группам нужны разные провайдеры.
Пример для Ollama: в качестве base_url указывается что-то вроде http://ollama:11434/v1 (адрес вашего контейнера/хоста с Ollama), а поле API-ключа можно заполнить любым значением - Ollama его просто игнорирует, но поле обязательно к заполнению в форме Mealie.
Если вы используете OpenAI, бесплатного тарифа для этих функций не хватит - нужен хотя бы один платёж (обычно достаточно 5$), после которого аккаунт переходит на Tier 1 с лимитами, достаточными для домашнего использования.
Все перечисленные ИИ-функции - опциональные надстройки. Без единого настроенного провайдера Mealie как работал полностью бесплатно и без ИИ (обычный скрапинг ссылок, ручной ввод рецептов), так и продолжает работать - ничего в базовом функционале не отваливается.
Как начать использовать Mealie#
- Подготовить сервер или контейнер (Docker Compose или LXC в Proxmox).
- Установить Mealie: загрузить Docker-образ, настроить базу данных и переменные окружения.
- Подключиться через браузер и создать пользователя.
- Импортировать несколько рецептов (ссылки, вручную, а при настроенном OpenAI-ключе - ещё и из видео или фото).
- Создать план питания на неделю и проверить список покупок.
- Настроить резервное копирование.
- (Опционально) Интегрировать с Home Assistant для уведомлений о блюдах.
Mealie - отличный инструмент для домашних кулинаров и тех, кто ценит полный контроль над своими данными.
Если у вас есть сервер или кластер Proxmox, его запуск - вопрос нескольких минут.
Примерный docker compose файл, который использовался в ролике#
---
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:v3.22.0 # не используйте :latest - зафиксируйте версию явно, актуальную смотрите на https://github.com/mealie-recipes/mealie/releases
container_name: mealie
#ports:
# - "9925:9000" #
deploy:
resources:
limits:
memory: 1000M #
volumes:
- /home/user/docker/mealie/mealie-data:/app/data/
environment:
# Set Backend ENV Variables Here
- ALLOW_SIGNUP=false
- PUID=1000
- PGID=1000
- TZ=Europe/Moscow
- MAX_WORKERS=1
- WEB_CONCURRENCY=1
- BASE_URL=https://mealie.user.ru
- DEFAULT_GROUP=Home
- DEFAULT_HOUSEHOLD=Family
#AI-функции (импорт рецептов из видео, распознавание фото и т.д.) - опционально
# - OPENAI_API_KEY=sk-...
#Email Configuration
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=465
- SMTP_FROM_NAME=mail@gmail.com
- SMTP_AUTH_STRATEGY=SSL # Options: 'TLS', 'SSL', 'NONE'
- SMTP_FROM_EMAIL=mail@gmail.com
- SMTP_USER=mail@gmail.com
- SMTP_PASSWORD=app_password
#OIDC credentials
- OIDC_AUTH_ENABLED=true
- OIDC_SIGNUP_ENABLED=true
- OIDC_CONFIGURATION_URL=https://authentik.domain.ru/application/o/mealie/.well-known/openid-configuration
- OIDC_CLIENT_ID=secret
- OIDC_CLIENT_SECRET=big secret
- OIDC_REMEMBER_ME=true
# - OIDC_AUTO_REDIRECT=false
# - OIDC_USER_CLAIM=email
# - OIDC_GROUPS_CLAIM=groups
# - OIDC_USER_GROUP=my_family
# - OIDC_ADMIN_GROUP=mealie_Admins
# - OIDC_USER_GROUP=mealie_users
# - OIDC_PROVIDER_NAME=Authentik
# - LOG_LEVEL=DEBUG
restart: unless-stopped
networks:
proxy:
security_opt:
- no-new-privileges:true
labels:
- "traefik.enable=true"
- "traefik.http.routers.mealie.entrypoints=web"
- "traefik.http.routers.mealie.rule=Host(`mealie.domain.ru`)"
- "traefik.http.middlewares.mealie-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.mealie.middlewares=mealie-https-redirect"
- "traefik.http.routers.mealie-secure.entrypoints=websecure"
- "traefik.http.routers.mealie-secure.rule=Host(`mealie.domain.ru`)"
- "traefik.http.routers.mealie-secure.tls=true"
- "traefik.http.routers.mealie-secure.service=mealie"
- "traefik.http.services.mealie.loadbalancer.server.port=9000"
- "traefik.docker.network=proxy"
networks:
proxy:
external: true



