Mealie на Ubuntu 24.04: пошаговая установка
Если рецепты у вас разбросаны по закладкам браузера, скриншотам из чатов и десятку сохранённых видео — рано или поздно захочется навести порядок. Mealie решает эту задачу: это self-hosted менеджер рецептов с автоматическим импортом по ссылке, планировщиком меню на неделю и генератором списка покупок. Ставится на Ubuntu 24.04 через Docker за 15-20 минут, дальше работает как обычный веб-сервис в вашей сети или в интернете — под собственным доменом с HTTPS.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Mealie и зачем он нужен
Mealie — open-source приложение на FastAPI (бэкенд) и Vue.js (фронтенд), которое хранит рецепты, теги, категории и позволяет строить план питания на неделю или месяц. Из плюсов, которые реально ощущаются в быту:
- Импорт рецептов по URL — вставляете ссылку на страницу с рецептом, Mealie парсит структурированные данные (schema.org/Recipe) и сохраняет ингредиенты, шаги, время готовки и фото. Работает на большинстве кулинарных сайтов, где разметка соблюдена.
- Список покупок — при добавлении рецептов в план питания ингредиенты автоматически собираются в список покупок с группировкой по категориям.
- Мультипользовательский режим — можно завести отдельные аккаунты для членов семьи, у каждого свои избранные рецепты и права.
- API и мобильный доступ — есть REST API и неофициальные мобильные клиенты, plus сам веб-интерфейс адаптивен под телефон.
- Импорт из других форматов — поддерживается загрузка из Paprika, Nextcloud Cookbook, Chowdown и через Open Recipe Format.
Проект активно развивается, релизы выходят регулярно — на момент написания статьи (конец августа 2026) актуальна вторая мажорная ветка (v2.x), которая принесла переписанный бэкенд и более быстрый импорт. Точную последнюю версию смотрите на странице релизов на GitHub — тут я не буду фиксировать номер версии, чтобы статья не устарела через месяц.
Разворачивать Mealie на собственном железе дома не всегда удобно — нужен статический IP, проброс портов через провайдера (что не всегда возможно), белый список открытых портов не радует безопасников. Аренда VPS снимает эти проблемы: статический IP есть сразу, домен привязывается за пять минут, а ресурсов для Mealie нужно немного — сервис лёгкий и комфортно живёт даже на 1-2 vCPU и 2 ГБ RAM.
Требования к серверу и подготовка
Для личного использования (семья из 3-5 человек, пара сотен рецептов) достаточно:
| Параметр | Минимум | Комфортно |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 1 ГБ | 2 ГБ |
| Диск | 10 ГБ | 20+ ГБ (с запасом под фото рецептов) |
| ОС | Ubuntu 24.04 LTS | Ubuntu 24.04 LTS |
Если вы уже добавляли много рецептов с фотографиями высокого разрешения, диск стоит взять с запасом — фото не сжимаются автоматически. Для семейного использования 20 ГБ хватит на годы вперёд.
Первым делом подключаемся по SSH и обновляем систему:
ssh root@your-server-ip
apt update && apt upgrade -y
apt install -y curl ca-certificates gnupg ufw
Сразу заведите отдельного пользователя вместо работы под root — это базовая гигиена для любого сервера, смотрящего в интернет:
adduser mealie
usermod -aG sudo mealie
su - mealie
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка Docker и Docker Compose
Mealie официально распространяется в виде Docker-образа, и это самый простой и предсказуемый способ его развернуть — обновления сводятся к смене тега образа, откат тоже тривиален. Если у вас ещё нет Docker на сервере, разверните его с нуля — подробный разбор есть в статье Ubuntu 24.04: установка Docker с нуля.
Коротко, официальный скрипт установки:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker
docker --version
docker compose version
Проверьте, что обе команды выводят версии без ошибок — значит, Docker и встроенный Compose plugin установлены и доступны текущему пользователю без sudo.
Docker Compose файл для Mealie
Создаём рабочую директорию и файл docker-compose.yml:
mkdir -p ~/mealie/data
cd ~/mealie
nano docker-compose.yml
Базовая конфигурация с постоянным хранилищем данных:
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:latest
container_name: mealie
restart: unless-stopped
ports:
- "127.0.0.1:9925:9000"
volumes:
- ./data:/app/data/
environment:
TZ: Europe/Moscow
MAX_WORKERS: 1
WEB_CONCURRENCY: 1
BASE_URL: https://recipes.example.com
ALLOW_SIGNUP: "false"
Разберём ключевые параметры:
ports— сознательно привяжите порт только к127.0.0.1, а не открывайте9925:9000наружу. Внешний доступ пойдёт через reverse proxy с HTTPS — так безопаснее, порт контейнера не торчит в интернет напрямую.TZ— обязательно выставьте свой часовой пояс, иначе время создания рецептов и планировщик меню будут путать даты.MAX_WORKERS/WEB_CONCURRENCY— на слабых VPS (1-2 vCPU) лучше держать 1, иначе несколько воркеров FastAPI начнут конкурировать за память и CPU без реального выигрыша в скорости при low-traffic нагрузке.BASE_URL— укажите итоговый домен, под которым Mealie будет доступен. Это нужно для корректных ссылок в письмах (сброс пароля) и в некоторых внутренних редиректах.ALLOW_SIGNUP— по умолчанию оставьтеfalseи создавайте пользователей вручную через админку, чтобы случайный посетитель не мог зарегистрироваться сам.
Запускаем:
docker compose up -d
docker compose logs -f
В логах дождитесь строки о готовности приложения (Uvicorn/FastAPI сообщает о старте на порту 9000), затем Ctrl+C для выхода из просмотра логов — контейнер продолжит работать в фоне.
Первый вход: откройте http://127.0.0.1:9925 изнутри сервера (например через SSH-туннель ssh -L 9925:127.0.0.1:9925 mealie@your-server-ip с локальной машины) и создайте администратора. Данные для входа по умолчанию — changeme@example.com / MyPassword — их обязательно нужно сменить сразу после первого входа в разделе настроек профиля.
Настройка HTTPS через reverse proxy
Открывать Mealie напрямую по HTTP небезопасно — пароли и сессионные токены будут идти в открытом виде. Нужен reverse proxy с автоматическим TLS-сертификатом. Вариантов два, оба рабочие: Caddy проще в настройке (сертификат Let's Encrypt получает сам, без дополнительных шагов), Nginx привычнее и гибче для сложных конфигураций.
Для одного сервиса вроде Mealie я обычно советую Caddy — конфиг короче, а сертификат обновляется без cron-заданий. Установка Caddy с нуля описана в пошаговой установке Caddy на Ubuntu 24.04. После установки конфиг сводится к одному блоку в /etc/caddy/Caddyfile:
recipes.example.com {
reverse_proxy 127.0.0.1:9925
}
Перезапускаем:
sudo systemctl reload caddy
Caddy сам получит сертификат Let's Encrypt при первом обращении к домену (домен должен уже указывать A-записью на IP сервера) и дальше будет продлевать его автоматически.
Не забудьте открыть порты 80 и 443 в файрволе (порт с Mealie наружу открывать не нужно — он слушает только на loopback):
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Если раньше не настраивали ufw — базовый разбор правил и частые ошибки есть в статье про firewall UFW на Ubuntu 24.04.
Импорт рецептов и планирование меню
После первого входа стоит настроить несколько вещей, которые сразу дают эффект:
- Группы и категории — в разделе настроек создайте базовые теги (завтрак, обед, ужин, десерт, вегетарианское) — это упростит поиск позже.
- Импорт рецепта по ссылке — на главной странице есть кнопка добавления рецепта, вставьте URL страницы с рецептом. Mealie попробует распарсить структурированные данные. Если сайт не поддерживает schema.org разметку, можно добавить рецепт вручную или через закладку-парсер (bookmarklet), который Mealie генерирует в настройках профиля — он вытаскивает данные прямо с открытой страницы браузера.
- Массовый импорт — если у вас есть экспорт из Paprika, Nextcloud Cookbook или ORF (Open Recipe Format), в разделе администрирования есть инструмент миграции — загружаете файл, Mealie сам разбирает и создаёт рецепты.
- Планировщик меню (Meal Planner) — перетаскиваете рецепты на дни недели, дальше жмёте "Add to shopping list" — все ингредиенты выбранных рецептов собираются в единый список покупок с учётом количества порций.
Практический нюанс: если увеличиваете количество порций для рецепта в плане меню, Mealie автоматически пересчитывает количество ингредиентов пропорционально — удобно, когда готовите не на двоих, а на всю семью или на компанию.
Резервное копирование данных
Все данные Mealie (база SQLite или PostgreSQL, если подключали внешнюю, фотографии, вложения) лежат в примонтированной директории ./data. Это упрощает бэкап до банального архивирования папки:
cd ~/mealie
docker compose stop mealie
tar czf ~/mealie-backup-$(date +%F).tar.gz data/
docker compose start mealie
Короткая остановка контейнера на момент архивации гарантирует консистентность файла базы данных — с SQLite это особенно важно, так как БД представляет собой один файл и при записи "на лету" архив может получиться повреждённым.
Для регулярных бэкапов удобнее вынести это в cron-задание и сразу копировать архив за пределы сервера (в объектное хранилище или на другую машину) — если сервер выйдет из строя, локальная копия бэкапа на нём самом не спасёт. Общие принципы регулярного резервного копирования Docker-томов разобраны в статье бэкап Docker volume на сервере: частые ошибки и решения.
Обновление Mealie до новой версии сводится к смене тега образа (если фиксировали конкретную версию) или простому пересозданию контейнера при использовании latest:
docker compose pull
docker compose up -d
Перед крупными обновлениями (сменой мажорной версии, например с v1 на v2) обязательно сделайте свежий бэкап — в release notes на GitHub обычно явно предупреждают о breaking changes и миграциях схемы БД.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли использовать PostgreSQL вместо SQLite?
Да, Mealie поддерживает PostgreSQL как альтернативную БД — это полезно при большом количестве пользователей и рецептов, где SQLite начинает быть узким местом на конкурентной записи. Подключается через переменные окружения DB_ENGINE=postgres и параметры подключения; для домашнего использования на 1-5 человек штатной SQLite вполне достаточно.
Импорт рецепта не сработал — что делать?
Не все сайты соблюдают структурированную разметку schema.org/Recipe. В таком случае используйте bookmarklet-парсер из настроек профиля (он читает уже отрендеренную DOM-страницу в браузере) или добавьте рецепт вручную — это займёт пару минут.
Нужен ли мощный сервер под Mealie?
Нет, сервис лёгкий по нагрузке. 1-2 vCPU и 1-2 ГБ RAM достаточно даже для активного семейного использования с сотнями рецептов и фотографиями.
Как ограничить регистрацию новых пользователей?
Держите ALLOW_SIGNUP: "false" в docker-compose.yml и создавайте пользователей вручную через панель администратора — это стандартный способ для приватного использования в кругу семьи.
Как перенести Mealie на новый сервер?
Достаточно скопировать директорию data/ целиком (можно через rsync или scp после остановки контейнера) на новый сервер и запустить тот же docker-compose.yml — Mealie подхватит существующую базу и файлы без дополнительных шагов.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →