Проверен полностью13 647

Еда и кулинария

Mealie

Mealie хранит рецепты, планы питания и списки покупок в одном домашнем приложении. Сохраняйте рецепт с сайта или добавляйте свой, собирайте блюда в кулинарные книги и планируйте меню на неделю вместе с домочадцами. Этот рецепт использует SQLite и один постоянный том для базы и загруженных файлов.

Обзор

Mealie — менеджер рецептов для семьи и небольшой группы. Сохраняйте рецепты с сайтов или добавляйте вручную, собирайте их в кулинарные книги, планируйте меню и ведите общий список покупок. Рецепт использует официальный контейнер Mealie и SQLite; база данных, изображения и файлы приложения хранятся в одном постоянном томе. Это домашняя установка без PostgreSQL, почты и AI-провайдеров.

Оценка безопасности

Рецепт привязывает веб-порт к 127.0.0.1, отключает открытую регистрацию и запускает контейнер без privileged, host network и доступа к Docker socket. База SQLite и загруженные файлы находятся в одном томе; включайте его в резервные копии вне сервера и защищайте архивы.

В документации Mealie опубликованы начальные данные входа (changeme@example.com / MyPassword). Смените пароль через loopback до того, как сервис станет доступен другим. При импорте по URL сервер загружает внешние страницы; пользователь с правом импорта может обращаться к ресурсам из сети сервера, поэтому ограничьте доступ и по возможности изолируйте контейнер. При использовании reverse proxy параметр Mealie HOST_IP=* по умолчанию доверяет пересылаемым заголовкам от любого источника. Ограничьте его адресом или сетью прокси и закройте прямой доступ извне.

Скан уязвимостей образа ещё не запускался; его статус остаётся неизвестным.

Отслеживание обновлений

Это сохранённые результаты отдельных проверок, а не данные в реальном времени. Неизвестный статус означает, что проверка ещё не выполнялась.

Новые релизы

Сравнение версии рецепта с последним известным релизом upstream. Это номер версии, а не разбор изменений.

Актуальная версия v3.29.021 окт. 2026 г., 21:44 UTC

Критические уязвимости

Результат отдельного сканирования Docker-образов, а не проверки Compose.

Не провереноПроверка не выполнялась

Несовместимые обновления

Новый major находится сравнением номеров версий. Вердикт о совместимости заносится вручную после чтения release notes и порядка миграции.

Не провереноПроверка не выполнялась

compose.yaml

Изменения upstream Compose относительно проверенного рецепта.

Upstream Compose не отслеживаетсяПроверка не выполнялась

Устаревшие Docker-образы

Проверка закреплённых тегов образов на наличие новых версий.

Не провереноПроверка не выполнялась

От наблюдения к действию

План обновления

Рецепт уже закрепляет последний известный релиз. Ниже показаны сохранённые основания для этой версии.

v3.29.0v3.29.0
  1. Открыть основания релиза

    Открыть релиз на GitHub ↗ Ссылка нужна для ревизии и сама по себе не доказывает совместимость.

  2. Проверить границу версий

    Номера версий не пересекают major-границу совместимости. Вердикт о совместимости не записан.

  3. Подготовить смену тегов образов

    Смена тегов образов сейчас не планируется.

  4. Следовать документированной схеме миграции

    Смена тега и перезапуск. Шаги конкретного релиза всё равно берутся из release notes и инструкции по установке.

  5. Защитить точку отката

    Смена версии сейчас не планируется. Рецепт содержит процедуру backup. Restore проверен.

  6. Проверить обновлённый рецепт

    Точная проверка уровня «Проверен полностью» для этой версии записана 2026-10-21.

Прочитать порядок обновления в инструкции по установке ↓

Характеристики

Безопасность и публикация

Уровни установки

Статус показывает, насколько опубликованный рецепт покрывает требования каждого уровня.

Готово

Для дома

Минимальная конфигурация для локальной сети или доступа через VPN.

  • Один сервер
  • Локальный доступ
  • Минимум компонентов

Рецепт закрывает все требования этого уровня.

Готово

Для VPS

Публичная установка с защищённым доступом и резервными копиями.

  • Домен
  • HTTPS через reverse proxy
  • Backup вне сервера

Рецепт закрывает все требования этого уровня.

Частично

Надёжная

Конфигурация для предсказуемой эксплуатации и наблюдаемости.

  • Отдельная БД
  • Healthcheck
  • Внешний мониторинг
  • Лимиты CPU и памяти

Нужно добавить вручную: отдельная бд, внешний мониторинг, лимиты cpu и памяти.

Скриншоты

Быстрый запуск

Сначала прочитайте полную инструкцию: в ней описаны доступ извне, backup и расположение данных.

Подготовить настройкиcp .env.example .env
Запуститьdocker compose up -d
Проверить состояниеdocker compose ps

Пошаговая инструкция

Требования

Нужен 64-разрядный сервер Ubuntu 22.04+ или Debian 12+ с Docker Engine и Compose v2.24+. Официальный образ поддерживает amd64 и arm64; 32-разрядный ARM не поддерживается. Минимальный ориентир — 1 CPU, 1 ГБ RAM и 5 ГБ свободного места для приложения и изображений. Загружаемые фотографии потребуют дополнительного диска.

Подготовка

mkdir -p ~/services/mealie
cd ~/services/mealie
# Скопируйте сюда compose.yaml, .env.example, backup.sh, restore.sh и proxy/.
cp .env.example .env
chmod 600 .env

До первого запуска измените .env:

  • MEALIE_VERSION — закреплённая версия upstream. Перед обновлением читайте примечания к выпуску.
  • MEALIE_PORT — порт на хосте, по умолчанию 9925; Compose привязывает его к 127.0.0.1.
  • MEALIE_BASE_URL — адрес для ссылок и callback. При домене укажите публичный HTTPS URL.
  • PUID и PGID задают ID владельца файлов в томе данных.
  • TZ задаёт часовой пояс.
  • MEALIE_DEFAULT_LOCALE задаёт начальный язык интерфейса: en или ru.
  • MEALIE_DATA_VOLUME — имя тома с базой SQLite, изображениями рецептов и другими данными.

Запуск и вход

docker compose config --quiet
docker compose pull
docker compose up -d --wait --wait-timeout 300
docker compose ps
curl --fail http://127.0.0.1:9925/api/app/about

Откройте на сервере http://127.0.0.1:9925 и войдите в начальную учётную запись (changeme@example.com / MyPassword). Сразу смените опубликованный пароль по умолчанию в настройках учётной записи, до предоставления доступа другим. Регистрация в этом рецепте отключена. Приглашайте участников домохозяйства через Mealie, не включая открытую регистрацию.

VPS

Оставьте порт хоста на loopback. Направьте домен на сервер, настройте один из HTTPS-прокси ниже, разрешите в firewall SSH/HTTP/HTTPS и не открывайте наружу порт 9925. Сначала войдите локально и замените опубликованный начальный пароль, лишь затем открывайте домен. До первого запуска задайте MEALIE_BASE_URL=https://recipes.example.com, чтобы ссылки и callback авторизации использовали правильный адрес. Импорт рецептов требует исходящего доступа в интернет.

Доступ из доверенной локальной сети

Для временного доступа используйте SSH-туннель:

ssh -L 9925:127.0.0.1:9925 user@server

Затем откройте http://localhost:9925. Чтобы дать доступ в локальной сети, поместите Mealie за доверенным HTTPS-прокси либо измените привязку порта на конкретный приватный IP и ограничьте её firewall. Не публикуйте приложение напрямую в интернете по обычному HTTP.

Домен и HTTPS

Укажите MEALIE_BASE_URL=https://recipes.example.com, направьте DNS на прокси и используйте подходящий пример Caddy, Nginx или Traefik из proxy/. Оставьте соединение до приложения на loopback. Конфигурация Nginx разрешает загрузки до 20 МБ; увеличивайте предел осознанно, если нужны фотографии большего размера.

Резервная копия

В постоянном томе находятся база и загруженные файлы. Остановите Mealie, чтобы SQLite и файлы попали в согласованный снимок:

./backup.sh

Архив появится в backups/ рядом с рецептами. В нём могут находиться личные рецепты и данные домохозяйства. Защитите его как персональные данные и скопируйте за пределы сервера. Файл .env тоже сохраните отдельно в защищённом месте: начальные данные администратора и публичный адрес нужны для работы восстановленного экземпляра.

Восстановление

Восстановление заменяет текущий том данных. Перед этим скрипт создаёт страховочную копию текущего состояния:

./restore.sh ./backups/mealie-YYYYMMDDTHHMMSSZ.tar.gz

Проверьте сервис и войдите:

docker compose up -d --wait --wait-timeout 300
curl --fail http://127.0.0.1:9925/api/app/about
docker compose logs --tail=100 mealie

Smoke-тест проверяет этот сценарий backup и restore на amd64. Для архива нужны совместимая версия образа и файл .env.

Обновление

Прочитайте примечания Mealie к выпуску и сохраните копию за пределами сервера. Укажите в .env точную проверенную версию MEALIE_VERSION, затем выполните:

./backup.sh
docker compose pull
docker compose up -d --wait --wait-timeout 300
docker compose logs --tail=100 mealie

Не используйте latest. Миграция базы проходит при запуске; дождитесь успешного healthcheck.

Откат

Не запускайте старую версию на данных, которые уже мигрировала новая. Верните в MEALIE_VERSION предыдущий тег и восстановите архив, созданный до обновления:

docker compose down
./restore.sh ./backups/mealie-BEFORE-UPDATE.tar.gz
docker compose up -d --wait --wait-timeout 300

Остановка и удаление

Остановить сервис, сохранив данные:

docker compose down

Чтобы удалить приложение вместе с данными, сначала проверьте резервную копию вне сервера, затем выполните:

docker compose down --volumes
rm -rf ~/services/mealie

Это удалит рецепты, учётные записи, планы питания, списки покупок и загруженные изображения.

Безопасность

Функция импорта по ссылке выполняет исходящие запросы с сервера. Давайте доступ только доверенным пользователям и по возможности изолируйте приложение от важных внутренних сервисов. У начальной учётной записи пароль опубликован в документации upstream; смените его до доступа извне loopback. Отключённая регистрация не заменяет отдельные учётные записи: приглашайте членов домохозяйства и задавайте уникальные пароли. Значение Mealie HOST_IP=* по умолчанию доверяет пересылаемым заголовкам от любого источника. При использовании прокси ограничьте его IP-адресом или сетью прокси и закройте прямой доступ к приложению.

Источники: установка с SQLite, вопросы безопасности, резервное копирование и восстановление и выпуск v3.29.0.

Сообщить о проблеме с рецептом

Рассказать, как прошло на вашем сервере

Откроется предзаполненный issue на GitHub. Нужен аккаунт GitHub; после отправки сообщение будет публичным.

Диагностика

Страница не открывается

Проверьте состояние контейнера и доступность порта:

docker compose ps
docker compose logs --tail=100 mealie
curl --fail http://127.0.0.1:9925/api/app/about

По умолчанию порт доступен только на loopback. Для удалённого сервера используйте HTTPS-прокси или SSH-туннель, а не открывайте его в интернет.

Не удаётся войти

Начальные учётные данные changeme@example.com / MyPassword опубликованы в документации Mealie. Смените пароль до предоставления доступа извне. После инициализации базы простой перезапуск или изменение переменных окружения его не изменит. Сбросьте пароль через административный интерфейс или следуйте официальной инструкции восстановления.

После обновления пропали изображения или изменения

Убедитесь, что volume mealie-data подключён в /app/data, а в .env указано ожидаемое имя тома. Не выполняйте docker compose down --volumes: команда удалит базу данных и загруженные файлы.

Не импортируется рецепт

Импорт по ссылке требует исходящего DNS и HTTPS-доступа из контейнера. Некоторые сайты блокируют автоматические запросы; рецепт можно добавить вручную. Давайте доступ только доверенным пользователям, потому что сервер сам загружает страницы по указанному URL.

Не запускается обновлённая версия

Перед сменой MEALIE_VERSION читайте примечания к выпуску. Для отката верните предыдущий тег и восстановите архив, созданный до обновления. Посмотрите логи:

docker compose logs --tail=200 mealie

Официальные источники

Последний релиз: 2026-10-17 · GitHub Stars: 13 647 · данные проверены 21 окт. 2026 г., 21:44 UTC

Отказ от ответственности

Fossary — независимый информационный каталог, не связанный с разработчиками представленных приложений. Мы собираем сведения из открытых источников и проверяем опубликованные рецепты, но не разрабатываем, не распространяем и не контролируем эти приложения.

Публикация карточки или статус проверки не являются требованием, навязыванием либо персональной рекомендацией использовать приложение. Вы самостоятельно решаете, подходит ли оно вам, и используете его на свой риск. Мы не гарантируем безопасность, доступность или пригодность приложения и, в пределах, допускаемых законом, не отвечаем за вызванные им потери или ущерб. До установки проверьте лицензию, настройки безопасности, обработку данных и резервное копирование.