Mealie или Tandoor Recipes: что выгоднее и когда
Рецепты в закладках браузера и скриншотах в галерее телефона рано или поздно достают настолько, что хочется завести один сервис для всей семьи — с поиском, планировщиком меню и списком покупок. Среди self-hosted вариантов почти сразу всплывают два имени: Mealie и Tandoor Recipes. Оба бесплатные, оба с открытым кодом, оба разворачиваются через Docker Compose за 10-15 минут. Разница не в том, «какой лучше», а в том, какой сценарий вы закрываете — и здесь легко переплатить ресурсами сервера за функции, которыми не будете пользоваться, либо наоборот упереться в ограничения там, где не ждали.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что у них общего
Обе системы решают одну и ту же базовую задачу и делают это по схожей схеме:
- парсят рецепт по ссылке с кулинарного сайта через структурированную разметку (schema.org/Recipe), заполняя ингредиенты, шаги и фото автоматически;
- строят планировщик меню — календарь, куда рецепты перетаскиваются на нужные дни;
- генерируют список покупок из выбранного на неделю меню, суммируя одинаковые ингредиенты из разных рецептов;
- поддерживают мультипользовательский доступ, чтобы вся семья заходила в один инстанс под своими логинами;
- open source (MIT-подобные лицензии), без платных «премиум»-фич и без чужого облака, которое видит содержимое вашего холодильника;
- разворачиваются через Docker Compose с отдельным контейнером под базу данных.
На уровне «зачем вообще self-hosted менеджер рецептов» они взаимозаменяемы. Расхождения начинаются там, где вы упираетесь в детали: нужен ли расчёт КБЖУ, важны ли отдельные «книги» рецептов, сколько ресурсов готов выделить сервер и сколько времени — на настройку.
Функциональные различия
Здесь и проходит главная граница выбора.
| Критерий | Mealie | Tandoor Recipes |
|---|---|---|
| КБЖУ и нутриенты | Базовый расчёт, менее гибкий | Подробный, по каждому ингредиенту с единицами измерения |
| Книги рецептов | Нет отдельной сущности, только теги | Есть — рецепты группируются в тематические книги |
| Импорт рецептов | Парсер на базе recipe-scrapers, плюс OCR из фото/скана (нужен отдельный OCR-бэкенд) | Парсер с широким списком сайтов, ручной ввод, вставка текста |
| Планировщик меню | Есть, интерфейс компактнее | Календарь + автогенерация списка покупок |
| Учёт продуктов (Pantry) | Есть, опционально | Через раздел Food/Nutrition, завязан на КБЖУ |
| Мультипользовательский доступ | Группы и роли пользователей | Пространства (spaces) — полная изоляция между группами |
| База данных | SQLite из коробки или PostgreSQL | Только PostgreSQL, SQLite-режима нет |
| Кривая освоения | Ниже, интерфейс проще и компактнее | Выше — больше разделов и настроек в UI |
Если нужно быстро завести рецепты, меню на неделю и список покупок — Mealie закрывает это с минимумом настроек. Если вы ведёте питание с расчётом калорий, собираете тематические подборки (десерты, диета, «на случай гостей») или обслуживаете на одном сервере несколько независимых семей с разграничением доступа — Tandoor удобнее именно за счёт этой детализации.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверТребования к ресурсам сервера
Разница в архитектуре напрямую бьёт по тому, что вы закладываете при аренде VPS.
Mealie — FastAPI + Vue, может работать вообще без отдельной СУБД (встроенный SQLite). Для семьи из 2-5 человек хватает 1 vCPU и 1-2 ГБ RAM. Диск стоит брать с запасом от 20 ГБ, если планируете хранить оригиналы фотографий блюд — сами фото и вложения занимают больше места, чем текст рецептов.
Tandoor — Django-бэкенд, обязательный PostgreSQL, плюс в официальном compose-файле фигурирует Redis для фоновых задач (массовый импорт, кеш сессий). Минимум — 2 ГБ RAM, комфортно — 4 ГБ, особенно если на том же хосте крутится reverse proxy и другие сервисы. CPU: 1-2 vCPU хватает для семейного использования и небольшой группы (до 10-15 активных пользователей). Redis для личного использования можно не поднимать — приложение работает и без него, просто часть фоновых операций выполняется синхронно, чуть медленнее на больших импортах.
Практический вывод: если сервер и так минимальный (1 vCPU, 1-2 ГБ RAM) и кроме менеджера рецептов на нём почти ничего нет — Mealie на SQLite впишется с запасом, а Tandoor на том же тарифе будет работать «впритык», особенно если рядом крутится ещё и reverse proxy. Мы отдельно разбирали, сколько оперативной памяти закладывать с запасом — логика применима и здесь: берите план с запасом хотя бы в полтора раза от расчётного минимума, чтобы не упираться в OOM при каждом обновлении статики.
Развёртывание: во что выливается на практике
Оба сервиса поднимаются через Docker Compose, но объём конфига заметно отличается. Минимальный Mealie на SQLite — один контейнер, ему хватает образа ghcr.io/mealie-recipes/mealie и тома под данные, без отдельной СУБД в стеке вообще. Tandoor так не умеет: SQLite-режима нет, поэтому compose-файл всегда состоит минимум из двух сервисов — web_recipes на образе vabene1111/recipes и db_recipes на postgres:16-alpine, связанных через depends_on и общий .env с паролями.
Даже когда Mealie тоже разворачивают на PostgreSQL (для нескольких активных пользователей это надёжнее SQLite), он всё равно проще конфигурационно: одна база, без Redis, без обязательного шага сборки статики при первом запуске. У Tandoor при первом старте контейнер сам прогоняет миграции Django и собирает статику — это может занять минуту-полторы, и в логах стоит дождаться строки о запуске gunicorn, прежде чем открывать интерфейс.
Полные рабочие конфиги с пояснениями к каждой переменной — в отдельных статьях: Mealie в Docker Compose: готовый файл и Tandoor Recipes в Docker Compose: готовый файл. Если нужна пошаговая инструкция с нуля, а не голый compose-файл — есть и такие разборы: Mealie на VPS и Tandoor на VPS.
Импорт, миграция и совместимость данных
Прямой миграции рецептов между Mealie и Tandoor нет ни в одну, ни в другую сторону — форматы хранения разные, готового конвертера ни один из проектов официально не предлагает. Рабочий путь при переходе — экспортировать рецепты из одной системы (JSON/Markdown, в зависимости от версии) и завести их в другой через раздел импорта вручную или через API. Для полусотни рецептов это час работы руками, для нескольких сотен разумнее написать небольшой скрипт под конкретный формат экспорта — форматы меняются между релизами, поэтому перед миграцией стоит свериться с документацией именно установленной версии, а не полагаться на память.
Если не уверены, какая система приживётся у вашей семьи, протестируйте обе на минимальном конфиге (SQLite-вариант Mealie разворачивается быстрее всего) с десятком реальных рецептов, прежде чем наполнять базу на сотни позиций — переезд между системами не бесплатен по времени.
HTTPS, домен и защита доступа
Оба сервиса по умолчанию слушают HTTP и не годятся для прямого доступа из интернета без прокси — панель Mealie, например, отдаёт логин и пароль открытым текстом при заходе не с localhost. Для обоих схема одинаковая: контейнер слушает только на localhost или внутреннюю docker-сеть, а наружу отдаёт reverse proxy по HTTPS с сертификатом Let's Encrypt.
Выбор между Traefik и Nginx Proxy Manager от менеджера рецептов не зависит — это общий вопрос инфраструктуры сервера, который мы разбирали отдельно: Traefik или Nginx Proxy Manager — что выбрать для сервера. Если на сервере уже настроен Traefik под другие docker-контейнеры, добавить к нему ещё и Mealie или Tandoor — вопрос пары labels, техника разобрана в статье Traefik как reverse proxy для Docker.
Для чисто семейного использования без выхода в публичный интернет есть и более закрытый вариант — не пробрасывать порт наружу вовсе, а поднять WireGuard между устройствами домочадцев и сервером. Это добавляет шаг настройки клиентов, зато полностью убирает сервис из зоны видимости сканеров портов.
Бэкапы и обслуживание
Здесь разница между системами минимальна — оба хранят данные в двух местах: база данных (рецепты, пользователи, планы меню) и папка с медиафайлами (фото блюд).
# Mealie на PostgreSQL
docker compose exec mealie-db pg_dump -U mealie mealie | gzip > /opt/mealie/backups/mealie-$(date +%F).sql.gz
# Tandoor
docker compose exec -T db_recipes pg_dump -U tandoor tandoor | gzip > ~/tandoor/backups/db_$(date +%F).sql.gz
tar czf ~/tandoor/backups/media_$(date +%F).tar.gz mediafiles
Добавьте нужную команду в cron раз в сутки и храните копии не только на самом сервере, но и снаружи — иначе бэкап и оригинал упадут вместе с одним и тем же диском. Готовая схема с дедупликацией и ретеншеном вместо простых gzip-архивов есть в статье про BorgBackup в Docker Compose — её несложно направить на директории с данными любого из двух сервисов.
Автообновление образов через Watchtower для домашнего сервиса — разумный компромисс между свежестью версии и риском сломать вход при смене мажорной версии, но перед его включением стоит знать типичные грабли — они разобраны в статье автообновление Watchtower на сервере: частые ошибки и решения. Для обоих менеджеров рецептов надёжнее обновлять образ руками: посмотреть changelog релиза, снять дамп базы и только потом docker compose pull && docker compose up -d.
Когда выбрать Mealie, а когда Tandoor
Сведём выбор в практическую таблицу — по сценарию использования, а не по абстрактным «плюсам».
| Сценарий | Выбор | Почему |
|---|---|---|
| Просто хранить рецепты, меню на неделю, список покупок | Mealie | Меньше настроек, можно вообще без отдельной СУБД |
| Минимальный VPS (1 vCPU, 1-2 ГБ RAM) без запаса | Mealie | На SQLite укладывается в ресурсы с запасом, Tandoor будет впритык |
| Ведёте питание, считаете калории и БЖУ по каждому продукту | Tandoor | Детальный расчёт нутриентов — не базовая прикидка, а фактический учёт |
| Нужны тематические подборки рецептов (книги, а не просто теги) | Tandoor | Отдельная сущность «книга», рецепт может входить сразу в несколько |
| Сервер обслуживает несколько независимых семей/групп | Tandoor | Пространства (spaces) дают полную изоляцию данных между группами |
| Хочется поднять сервис за 10 минут и забыть про настройки | Mealie | Компактный интерфейс, меньше разделов в UI |
| Уже есть PostgreSQL-инфраструктура на сервере для других сервисов | Tandoor | Не нужно поднимать SQLite отдельно, PostgreSQL и так обязателен |
Если сомневаетесь — начните с Mealie: минимальный конфиг разворачивается за 10 минут даже без отдельной базы, и уже через пару недель реального использования станет понятно, упираетесь ли вы в отсутствие книг рецептов или подробного КБЖУ. Если да — миграция на Tandoor обойдётся в час-два ручного переноса рецептов, а не в потерянные месяцы привыкания к системе, которая оказалась избыточной.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли держать оба сервиса на одном VPS одновременно?
Технически да, они не конфликтуют — у каждого свой порт и своя база. Но на минимальном тарифе это лишняя нагрузка: два стека с базами данных будут конкурировать за 1-2 ГБ RAM. Для сравнения вживую разумнее временный тестовый запуск, а не постоянное сосуществование.
Что проще мигрировать с телефонного приложения для рецептов?
Оба опираются на импорт по URL через парсинг разметки страниц, а не на прямую миграцию из мобильных приложений — готового коннектора к популярным приложениям нет ни у одного. Рецепты либо переимпортируются по ссылкам заново, либо переносятся вручную через экспорт, если приложение его вообще предоставляет.
Какой из двух активнее развивается?
Оба проекта живые, с регулярными релизами и открытым репозиторием на GitHub. Конкретную частоту релизов и текущий статус лучше смотреть непосредственно в репозитории перед установкой — эти цифры меняются быстрее, чем успевает устареть статья.
Работают ли оба на ARM (Raspberry Pi)?
Образ Tandoor (vabene1111/recipes) собирается под arm64 и запускается штатно, хотя миниатюры фото и импорт будут заметно медленнее, чем на x86. У Mealie тоже есть мультиарх-сборки — уточняйте актуальность arm64-тега перед установкой.
Нужен ли GPU?
Нет, оба рассчитаны на CPU — парсинг рецептов и планировщик не используют нейросети в базовой поставке. GPU понадобится только при самостоятельном подключении сторонних OCR/AI-модулей сверху.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →