↓ Перейти к основному содержимому
  1. Posts/
  2. Self-Hosting/

Mealie: self-hosted приложение для рецептов, планирования питания и списка покупок

··1314 слов·7 минут· loading · loading · ·
Stilicho2011
Автор
Stilicho2011
Пишу о homelab, self-hosting, автоматизации и open-source решениях
Оглавление
Self-Hosting - This article is part of a series.
Part : This Article
Интерфейс Mealie на десктопе, планшете и смартфоне - сетка рецептов

Что такое Mealie
#

Mealie - это открытое, self-hosted веб-приложение для управления рецептами, планирования питания и составления списка покупок.
Сайт проекта: mealie.io
Документация: docs.mealie.io

Главные особенности:

  • Установка на собственном сервере или домашней инфраструктуре - без зависимости от облачных сервисов.
  • Импорт рецептов с веб-страниц с помощью встроенного «скрепера».
  • Современный интерфейс на Vue.js, backend с REST API.
  • Планировщик питания (meal planner) и списки покупок (shopping list).
  • Поддержка нескольких пользователей и групп.
  • Организация рецептов в коллекции, теги, категории.

Основные возможности Mealie
#

  1. Импорт рецептов
    Можно вводить вручную или передавать ссылку на веб-страницу, и Mealie извлечет ингредиенты и инструкции.
    Подробнее на GitHub: github.com/mealie-recipes/mealie

  2. Редактор рецептов
    Полное редактирование ингредиентов, инструкций, фото и описаний.

  3. Планировщик питания
    Распределение блюд по дням недели/месяца.

  4. Список покупок
    Автоматическое формирование списка на основе выбранных рецептов, с возможностью группировки по отделам магазина.

  5. Организация рецептов
    Теги, категории, коллекции (cookbooks) для удобного поиска.

  6. API и интеграции
    REST API, вебхуки, поддержка Home Assistant и других систем.

  7. Локализация
    Интерфейс доступен на многих языках.


Почему Mealie интересен домашним энтузиастам
#

Если у вас уже есть домашний сервер или кластер (например, Proxmox и мини ПК), Mealie идеально впишется:

  • Запуск в контейнере Docker или LXC.
  • Полный контроль над данными - ваши рецепты, планы питания и списки покупок остаются у вас.
  • Возможность использовать как контент-базу для блога или YouTube-канала.
  • Интеграция с домашней автоматизацией: уведомления о запланированных блюдах, списки ингредиентов на холодильнике и др.

Возможные ограничения
#

  • Масштабирование порций (recipe scaling) может быть неидеальным.
    Источник обсуждения на Reddit
  • Требуются базовые навыки self-hosting: подготовка сервера/контейнера, резервное копирование, безопасность.
  • Мобильные приложения сторонние, основное использование через веб-интерфейс.
    Пример мобильного клиента для iOS

Что нового в Mealie с момента публикации статьи
#

Note

Актуализация. Статья была написана для Mealie версии, актуальной на октябрь 2025 года. С тех пор вышло несколько релизов (текущая на август 2026 - v3.22.0), и в проекте появились функции, которых не было на момент написания. Разберу самые заметные и покажу, как ими пользоваться.

Стандартизация единиц измерения
#

Раньше список покупок мог продублировать один и тот же ингредиент разными единицами (например, «1 pint молока» и «2 cups молока» из разных рецептов не объединялись в одну позицию). Теперь единицы можно стандартизировать, и Mealie автоматически сводит совместимые величины в одну позицию списка покупок. Стандартные единицы настраиваются на странице управления данными (Data Management) в настройках группы - там же можно добавить свои.

Warning

Отдельная ремарка для тех, кто привык готовить по граммам и миллилитрам, как это в основном принято у нас в России. Стандартизация в 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 используется несколькими семьями/группами с разными провайдерами.

  1. Укажите провайдера по умолчанию (Default provider) - без этого шага ни одна ИИ-функция работать не будет, кнопки просто останутся скрытыми.
  2. Если хотите распознавать фото рецептов - провайдер должен поддерживать работу с изображениями (у OpenAI это модели вроде gpt-4o/gpt-5, у Ollama - vision-модели вроде llava).
  3. Если хотите импортировать рецепты из видео - нужен отдельный аудио-провайдер (audio provider), например whisper-1.
  4. Ключ и адрес эндпоинта можно задать либо через переменные окружения в docker-compose.yml (OPENAI_API_KEY - см. пример compose-файла выше), либо прямо в интерфейсе через Group Settings - второй способ удобнее, если группам нужны разные провайдеры.

Пример для Ollama: в качестве base_url указывается что-то вроде http://ollama:11434/v1 (адрес вашего контейнера/хоста с Ollama), а поле API-ключа можно заполнить любым значением - Ollama его просто игнорирует, но поле обязательно к заполнению в форме Mealie.

Note

Если вы используете OpenAI, бесплатного тарифа для этих функций не хватит - нужен хотя бы один платёж (обычно достаточно 5$), после которого аккаунт переходит на Tier 1 с лимитами, достаточными для домашнего использования.

Все перечисленные ИИ-функции - опциональные надстройки. Без единого настроенного провайдера Mealie как работал полностью бесплатно и без ИИ (обычный скрапинг ссылок, ручной ввод рецептов), так и продолжает работать - ничего в базовом функционале не отваливается.


Как начать использовать Mealie
#

  1. Подготовить сервер или контейнер (Docker Compose или LXC в Proxmox).
  2. Установить Mealie: загрузить Docker-образ, настроить базу данных и переменные окружения.
  3. Подключиться через браузер и создать пользователя.
  4. Импортировать несколько рецептов (ссылки, вручную, а при настроенном OpenAI-ключе - ещё и из видео или фото).
  5. Создать план питания на неделю и проверить список покупок.
  6. Настроить резервное копирование.
  7. (Опционально) Интегрировать с 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
Self-Hosting - This article is part of a series.
Part : This Article

Related

Diun: уведомления об обновлениях Docker-образов

··931 слово·5 минут· loading · loading
Подробная инструкция по установке и настройке Diun для отслеживания обновлений Docker-образов. Рассмотрены шаги по развертыванию, интеграции с уведомлениями и автоматизации мониторинга, чтобы своевременно обновлять контейнеры и повышать безопасность системы.

Vaultwarden: установка на сервере, альтернатива Bitwarden

··3178 слов·15 минут· loading · loading
Пошаговая инструкция по установке Vaultwarden -лёгкой self-hosted версии Bitwarden. От базового docker-compose до продвинутой конфигурации с SSO и push-уведомлениями.