bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка Mealie на VPS: организация и управление вашей коллекцией рецептов

calendar_month Sep 05, 2026 schedule 21 мин. чтения visibility 20 просмотров
Установка Mealie на VPS: организация и управление вашей коллекцией рецептов
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка Mealie на VPS: организация и управление вашей коллекцией рецептов

TL;DR

В этом подробном руководстве мы шаг за шагом настроим Mealie — современную self-hosted платформу для управления рецептами — на вашем виртуальном приватном сервере (VPS). Вы узнаете, как подготовить сервер, установить Docker, развернуть Mealie с помощью Docker Compose, настроить безопасный доступ через HTTPS с использованием Caddy и реализовать стратегию резервного копирования, чтобы ваша коллекция рецептов всегда была под контролем.

  • Мы настроим Mealie 2.x (актуальная версия на 2026 год) на Ubuntu 24.04 LTS.
  • Используем Docker и Docker Compose для легкого развертывания и управления приложением.
  • Обеспечим безопасный доступ через HTTPS с автоматическим получением сертификатов Let's Encrypt с помощью Caddy.
  • Разработаем простую, но эффективную стратегию резервного копирования данных Mealie.
  • Подробно рассмотрим минимальные требования к VPS и базовую подготовку сервера.
  • Предоставим практические команды и примеры конфигурационных файлов, готовые к использованию.

Что мы настраиваем и зачем

Схема: Что мы настраиваем и зачем
Схема: Что мы настраиваем и зачем

Mealie — это современная self-hosted платформа для управления рецептами, разработанная для тех, кто хочет организовать свою кулинарную коллекцию, планировать приемы пищи и генерировать списки покупок. Она предоставляет интуитивно понятный веб-интерфейс, возможность импорта рецептов с различных сайтов, а также функции для совместного использования и комментирования. В условиях постоянно растущего числа кулинарных сайтов и источников рецептов, Mealie становится незаменимым инструментом для централизованного хранения и удобного доступа к вашим любимым блюдам.

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

Существуют различные подходы к управлению рецептами. Вы можете использовать облачные сервисы, такие как Paprika, AnyList или BigOven, которые предлагают удобство использования без необходимости настройки сервера. Однако, они обычно требуют подписки и хранят ваши данные на сторонних серверах, что может вызывать вопросы конфиденциальности. Альтернативой являются десктопные приложения или даже простые текстовые файлы.

Выбор в пользу self-hosted решения на VPS, такого как Mealie, обоснован несколькими ключевыми преимуществами. Во-первых, это полный контроль над вашими данными и их конфиденциальностью. Вы сами решаете, где и как хранятся ваши рецепты. Во-вторых, self-hosted решения часто предлагают большую гибкость в настройке и интеграции с другими домашними сервисами. В-третьих, это экономически выгодно в долгосрочной перспективе, поскольку вы платите только за VPS, а не за ежемесячную подписку. Наконец, для разработчиков и технических энтузиастов это отличная возможность расширить свои навыки в администрировании серверов и развертывании приложений.

Какой VPS-конфиг нужен под эту задачу

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Какой VPS-конфиг нужен под эту задачу

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

Минимальные требования (для 1-5 пользователей):

  • CPU: 1 ядро (x86-64 архитектура). Современные VPS-процессоры достаточно мощные для обработки запросов Mealie.
  • RAM: 1 GB. Этого будет достаточно для операционной системы, Docker-контейнеров Mealie и Caddy. Если планируете использовать PostgreSQL вместо SQLite, возможно, потребуется немного больше.
  • Диск: 20-30 GB SSD. Mealie хранит базу данных (по умолчанию SQLite) и загруженные изображения. SSD значительно ускорит операции ввода-вывода.
  • Сеть: 100 Mbps порт с неограниченным трафиком (или достаточным объемом для вашего использования). Mealie не является высоконагруженным сервисом, поэтому требования к пропускной способности сети минимальны.
  • Операционная система: Ubuntu 24.04 LTS (или любой другой современный дистрибутив Linux).

Рекомендуемый VPS-план под задачу (для 5-20 пользователей или с запасом):

Для более комфортной работы, с учетом будущих обновлений и возможности запуска дополнительных сервисов на том же VPS, рекомендуется следующая конфигурация:

  • CPU: 2 ядра.
  • RAM: 2 GB.
  • Диск: 50 GB SSD.
  • Сеть: 1 Gbps порт, желательно с неограниченным трафиком.

Такой VPS с указанными характеристиками обеспечит стабильную работу Mealie и позволит вам не беспокоиться о нехватке ресурсов в ближайшем будущем. При выборе провайдера обращайте внимание на возможность гибкого масштабирования ресурсов.

Когда нужен dedicated сервер, а не VPS:

Для Mealie dedicated сервер обычно не требуется. Его имеет смысл рассматривать только в исключительных случаях:

  • Если вы планируете обслуживать сотни или тысячи пользователей (что маловероятно для Mealie).
  • Если вы уже используете dedicated сервер для других высоконагруженных сервисов и хотите разместить Mealie рядом.
  • Если у вас есть очень специфические требования к аппаратному обеспечению или безопасности, которые не могут быть удовлетворены на VPS.

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

Локация: на что влияет

Выбор локации VPS влияет на несколько факторов:

  • Задержка (Latency): Чем ближе сервер к вашим основным пользователям, тем ниже задержка и быстрее отклик веб-интерфейса Mealie. Для личного использования выбирайте локацию, близкую к вам.
  • Законодательство: В некоторых юрисдикциях могут быть более строгие законы о хранении данных. Убедитесь, что выбранная локация соответствует вашим требованиям к конфиденциальности.
  • Стоимость: Цены на VPS могут незначительно различаться в зависимости от региона.
  • Доступность сервисов: Некоторые провайдеры предлагают разные пакеты услуг в разных дата-центрах.

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

Подготовка сервера

Схема: Подготовка сервера
Схема: Подготовка сервера

После того как вы арендовали VPS и получили доступ, необходимо выполнить базовую настройку для повышения безопасности и удобства дальнейшей работы. Мы будем предполагать, что вы используете Ubuntu 24.04 LTS (Lunar Lobster), которая будет актуальна и поддерживаться до 2029 года.

1. Подключение к серверу по SSH

Используйте SSH-клиент для подключения к вашему серверу. Замените your_username на имя пользователя, предоставленное провайдером (часто root или ubuntu), и your_vps_ip на IP-адрес вашего VPS.


ssh your_username@your_vps_ip
    

2. Обновление системы

Первым делом всегда обновляйте пакеты до актуальных версий.


sudo apt update && sudo apt upgrade -y # Обновляем список пакетов и устанавливаем доступные обновления
    

3. Создание нового пользователя с правами sudo (если вы работаете под root)

Работать под учетной записью root небезопасно. Создайте нового пользователя и предоставьте ему права sudo.


sudo adduser newuser # Создаем нового пользователя
sudo usermod -aG sudo newuser # Добавляем пользователя в группу sudo
    

Затем выйдите из текущей сессии root и войдите под новым пользователем.


exit # Выходим из root-сессии
ssh newuser@your_vps_ip # Входим под новым пользователем
    

4. Настройка SSH-ключей (рекомендуется)

Для повышения безопасности и удобства рекомендуется использовать SSH-ключи вместо паролей. Если у вас еще нет пары ключей, сгенерируйте их на локальной машине:


ssh-keygen -t rsa -b 4096 # Генерируем новый SSH-ключ на локальной машине
    

Затем скопируйте публичный ключ на ваш VPS:


ssh-copy-id newuser@your_vps_ip # Копируем публичный ключ на сервер
    

После успешной настройки SSH-ключей, вы можете отключить аутентификацию по паролю в файле /etc/ssh/sshd_config для повышения безопасности. Найдите строки PasswordAuthentication yes и PermitRootLogin yes и измените их на no.


sudo nano /etc/ssh/sshd_config # Открываем конфигурационный файл SSH-сервера
    

Измените:


#PasswordAuthentication yes
PasswordAuthentication no
#PermitRootLogin yes
PermitRootLogin no
    

Сохраните файл (Ctrl+O, Enter) и выйдите (Ctrl+X). Затем перезапустите SSH-сервис:


sudo systemctl restart sshd # Перезапускаем SSH-сервис для применения изменений
    

Важно: Убедитесь, что вы можете войти по SSH-ключу, прежде чем отключать аутентификацию по паролю!

5. Настройка брандмауэра (UFW)

UFW (Uncomplicated Firewall) — это удобный инструмент для настройки правил брандмауэра. Разрешите SSH и HTTP/HTTPS трафик.


sudo ufw allow ssh # Разрешаем SSH-трафик (порт 22)
sudo ufw allow http # Разрешаем HTTP-трафик (порт 80)
sudo ufw allow https # Разрешаем HTTPS-трафик (порт 443)
sudo ufw enable # Включаем брандмауэр
sudo ufw status # Проверяем статус брандмауэра
    

6. Установка Fail2Ban

Fail2Ban помогает защититься от атак по подбору паролей, блокируя IP-адреса, с которых совершаются неудачные попытки входа.


sudo apt install fail2ban -y # Устанавливаем Fail2Ban
sudo systemctl enable fail2ban # Включаем автозапуск Fail2Ban при старте системы
sudo systemctl start fail2ban # Запускаем сервис Fail2Ban
    

Fail2Ban по умолчанию защищает SSH. Дополнительные настройки можно выполнить в файлах /etc/fail2ban/jail.conf или, лучше, в /etc/fail2ban/jail.local.

Теперь ваш сервер готов к установке Mealie.

Установка ПО — пошагово

Схема: Установка ПО — пошагово
Схема: Установка ПО — пошагово

Mealie лучше всего развертывать с использованием Docker и Docker Compose, что обеспечивает изоляцию приложения, упрощает управление зависимостями и облегчает обновления. Мы будем использовать актуальные версии Docker Engine и Docker Compose, ориентируясь на 2026 год.

1. Установка Docker Engine

Удалим старые версии Docker, если они есть:


for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg; done # Удаляем все старые пакеты Docker
    

Установим необходимые пакеты для установки Docker через HTTPS:


sudo apt update # Обновляем список пакетов
sudo apt install ca-certificates curl gnupg -y # Устанавливаем необходимые утилиты
    

Добавим официальный GPG-ключ Docker:


sudo install -m 0755 -d /etc/apt/keyrings # Создаем директорию для GPG-ключей
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # Загружаем и сохраняем GPG-ключ Docker
sudo chmod a+r /etc/apt/keyrings/docker.gpg # Устанавливаем права доступа к ключу
    

Добавим репозиторий Docker в APT-источники:


echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Добавляем репозиторий Docker
    

Установим Docker Engine (версия 25.x или новее, актуальная на 2026 год):


sudo apt update # Обновляем список пакетов с учетом нового репозитория
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y # Устанавливаем Docker Engine и плагины
    

Добавим вашего пользователя в группу docker, чтобы не использовать sudo для каждой команды Docker:


sudo usermod -aG docker $USER # Добавляем текущего пользователя в группу docker
newgrp docker # Применяем изменения для текущей сессии (или переподключитесь по SSH)
    

Проверим установку Docker:


docker run hello-world # Запускаем тестовый контейнер для проверки установки Docker
    

Если вы видите сообщение "Hello from Docker!", значит Docker успешно установлен.

2. Подготовка директории для Mealie

Создадим директорию, где будут храниться конфигурационные файлы Mealie и Docker Compose:


mkdir -p ~/mealie # Создаем директорию для Mealie в домашней папке пользователя
cd ~/mealie # Переходим в созданную директорию
    

3. Загрузка конфигурации Docker Compose для Mealie

Mealie предоставляет официальные файлы Docker Compose. Мы загрузим их напрямую.

На 2026 год Mealie активно развивается, и мы будем использовать актуальную версию 2.x, которая предлагает улучшенную архитектуру и функции. Если вы хотите использовать более старую версию, обратитесь к документации Mealie.


curl -o docker-compose.yml https://raw.githubusercontent.com/mealie-recipes/mealie/v2.0/docker-compose.yml # Загружаем актуальный docker-compose.yml для Mealie 2.x
curl -o .env-example https://raw.githubusercontent.com/mealie-recipes/mealie/v2.0/.env-example # Загружаем пример файла .env
cp .env-example .env # Копируем пример в актуальный файл .env
    

4. Настройка файла .env

Файл .env содержит переменные окружения для Mealie и Docker Compose. Откройте его для редактирования:


nano .env # Открываем файл .env для редактирования
    

Вам необходимо настроить следующие параметры:

  • TZ: Установите ваш часовой пояс, например, Europe/Moscow.
  • PUID и PGID: ID пользователя и группы, от которых будут работать контейнеры. Это обеспечивает правильные права доступа к файлам. Вы можете получить их с помощью команды id $USER.
  • APP_HOST: Установите IP-адрес вашего сервера или доменное имя, если вы уже настроили DNS.
  • DB_TYPE: По умолчанию используется sqlite, что подходит для большинства небольших установок. Если вам нужна более мощная база данных (например, PostgreSQL), измените этот параметр и настройте соответствующий сервис в docker-compose.yml. Для простоты мы оставим sqlite.
  • SECRET_KEY: Сгенерируйте длинный, случайный ключ. Например, можно использовать openssl rand -hex 32.
  • MEDIA_LOCATION: Директория для хранения медиафайлов. По умолчанию /app/data/media, но можно изменить на что-то вроде /var/lib/mealie/media, если вы хотите вынести данные за пределы контейнера. В данном случае мы будем использовать монтирование томов Docker, так что путь внутри контейнера останется по умолчанию.

Пример части файла .env после редактирования:


TZ=Europe/Moscow
PUID=1000 # Замените на ваш PUID
PGID=1000 # Замените на ваш PGID
APP_HOST=your.domain.com # Замените на ваш домен или IP
PORT=9000
DB_TYPE=sqlite
SECRET_KEY=ВАШ_СЛУЧАЙНЫЙ_СЕКРЕТНЫЙ_КЛЮЧ_ДЛИНОЙ_64_СИМВОЛА
MEDIA_LOCATION=/app/data/media
    

Сгенерировать SECRET_KEY можно прямо на сервере:


openssl rand -hex 32 # Генерирует 64-символьный шестнадцатеричный ключ
    

Скопируйте полученный ключ и вставьте его в файл .env.

5. Запуск Mealie с Docker Compose

После настройки .env файла, вы можете запустить Mealie:


docker compose up -d # Запускаем контейнеры Mealie в фоновом режиме
    

Это загрузит необходимые Docker-образы и запустит Mealie. Процесс может занять несколько минут при первом запуске.

6. Проверка статуса контейнеров

Убедитесь, что все контейнеры запущены и работают:


docker compose ps # Проверяем статус запущенных контейнеров
    

Вы должны увидеть контейнеры Mealie в статусе "running".

Теперь Mealie запущен и доступен на порту 9000 вашего VPS (http://your_vps_ip:9000). Однако, пока он доступен только по HTTP и не имеет красивого доменного имени. В следующем разделе мы настроим HTTPS и домен.

Конфигурация

Схема: Конфигурация
Схема: Конфигурация

После успешного запуска Mealie с помощью Docker Compose, следующим шагом будет настройка безопасного доступа через HTTPS с использованием вашего доменного имени. Мы будем использовать Caddy — современный веб-сервер, который автоматически получает и обновляет SSL/TLS-сертификаты от Let's Encrypt.

1. Настройка DNS

Прежде чем настраивать Caddy, убедитесь, что ваш домен или поддомен (например, recipes.yourdomain.com) указывает на IP-адрес вашего VPS. Для этого создайте или измените A-запись в настройках DNS вашего доменного регистратора:

Тип записиИмяЗначениеTTL
Arecipes (или @ если Mealie будет на основном домене)YOUR_VPS_IP_ADDRESSAutomatic / 3600

Подождите некоторое время, пока изменения DNS вступят в силу (это может занять от нескольких минут до нескольких часов).

2. Установка Caddy

Мы запустим Caddy как отдельный Docker-контейнер, чтобы он мог служить обратным прокси для Mealie.

Создайте директорию для конфигурации Caddy:


mkdir -p ~/caddy/data ~/caddy/config # Создаем директории для данных и конфигурации Caddy
    

Создайте файл Caddyfile в директории ~/caddy:


nano ~/caddy/Caddyfile # Открываем файл Caddyfile для редактирования
    

Вставьте следующую конфигурацию, заменив recipes.yourdomain.com на ваш домен:


recipes.yourdomain.com {
    # Включаем сжатие gzip для ускорения загрузки
    encode gzip

    # Устанавливаем заголовки безопасности
    header {
        Strict-Transport-Security max-age=31536000;
        X-Frame-Options DENY
        X-Content-Type-Options nosniff
        X-XSS-Protection "1; mode=block"
        Referrer-Policy strict-origin-when-cross-origin
    }

    # Проксируем все запросы к Mealie Docker-контейнеру
    reverse_proxy mealie:9000 {
        # Добавляем заголовки для правильной работы WebSocket и HTTP/2
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Включаем логирование (опционально)
    log {
        output file /var/log/caddy/access.log
    }
}
    

Сохраните файл (Ctrl+O, Enter) и выйдите (Ctrl+X).

3. Добавление Caddy в Docker Compose

Теперь отредактируем файл docker-compose.yml, чтобы добавить сервис Caddy. Откройте его:


nano ~/mealie/docker-compose.yml # Открываем docker-compose.yml
    

Добавьте следующий блок caddy в конец файла, на том же уровне отступа, что и mealie:


  caddy:
    image: caddy:2.7.6-alpine # Актуальная версия Caddy на 2026 год
    restart: unless-stopped
    ports:
      - "80:80" # HTTP для Let's Encrypt
      - "443:443" # HTTPS
    volumes:
      - ~/caddy/Caddyfile:/etc/caddy/Caddyfile # Монтируем наш Caddyfile
      - ~/caddy/data:/data # Для сертификатов Let's Encrypt
      - ~/caddy/config:/config # Для конфигурации Caddy
      - ~/caddy/logs:/var/log/caddy # Для логов Caddy
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
    networks:
      - default # Подключаем к той же сети, что и Mealie
    depends_on:
      - mealie # Caddy должен запускаться после Mealie
    

Убедитесь, что mealie и caddy находятся в одной Docker-сети (по умолчанию это сеть, созданная Docker Compose, названная по имени директории, например, mealie_default). В данном случае, networks: - default достаточно.

Сохраните изменения в docker-compose.yml.

4. Запуск Caddy и обновление Mealie

Перезапустите Docker Compose, чтобы Caddy запустился и Mealie переподключился к новой конфигурации:


cd ~/mealie # Убедитесь, что вы находитесь в директории с docker-compose.yml
docker compose down # Останавливаем все текущие контейнеры
docker compose up -d # Запускаем все контейнеры (Mealie и Caddy)
    

Caddy автоматически запросит и установит SSL/TLS-сертификат для вашего домена. Это может занять несколько секунд.

5. Проверка работоспособности

Откройте ваш домен (например, https://recipes.yourdomain.com) в веб-браузере. Вы должны увидеть страницу входа Mealie с активным HTTPS-соединением.

Вы также можете проверить доступность с помощью curl:


curl -v https://recipes.yourdomain.com # Проверяем доступность и сертификат
    

В выводе вы должны увидеть информацию о сертификате Let's Encrypt и код ответа HTTP 200 OK.

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

Бэкапы и обслуживание

Схема: Бэкапы и обслуживание
Схема: Бэкапы и обслуживание

Регулярное резервное копирование и своевременное обслуживание являются критически важными для любой self-hosted службы. Это гарантирует сохранность ваших данных и стабильную работу Mealie.

1. Что бэкапить

Для Mealie основными компонентами, которые необходимо резервировать, являются:

  • База данных: Если вы используете SQLite (по умолчанию), это файл mealie.db. Если PostgreSQL, то это дамп базы данных. Этот файл или дамп содержит все ваши рецепты, категории, пользователей и другую структурированную информацию.
  • Медиафайлы: Загруженные изображения, такие как фотографии блюд, хранятся в отдельной директории. Убедитесь, что вы резервируете эту директорию целиком.
  • Конфигурационные файлы: Файл .env и docker-compose.yml. Они содержат важные настройки и секреты, необходимые для восстановления сервиса.
  • Конфигурация Caddy: Файл Caddyfile и директории data/config (для сертификатов Let's Encrypt).

2. Простой скрипт автобэкапа

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

Создайте директорию для бэкапов на VPS:


mkdir -p ~/backups/mealie # Создаем директорию для бэкапов Mealie
    

Создайте файл скрипта backup_mealie.sh:


nano ~/backup_mealie.sh # Создаем скрипт бэкапа
    

Вставьте следующее содержимое:


#!/bin/bash

# Пути к директориям
MEALIE_DIR="/home/$USER/mealie"
CADDY_DIR="/home/$USER/caddy"
BACKUP_DIR="/home/$USER/backups/mealie"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="$BACKUP_DIR/mealie_backup_$TIMESTAMP.tar.gz"

echo "Starting Mealie backup at $TIMESTAMP..."

# 1. Останавливаем Mealie для обеспечения целостности БД (если используется SQLite)
# Для Mealie 2.x с SQLite, обычно можно обойтись без остановки, но для гарантии можно остановить.
# Если вы используете PostgreSQL, лучше сделать дамп через pg_dump, не останавливая Mealie.
# docker compose -f $MEALIE_DIR/docker-compose.yml stop mealie # Опционально: останавливаем сервис mealie

# 2. Копируем файл базы данных SQLite
# Путь к файлу mealie.db внутри контейнера, если он не вынесен в отдельный том
# Если mealie.db находится в томе, который монтируется, то он будет доступен на хосте.
# В нашем docker-compose.yml Mealie 2.x использует Named Volume 'mealie_data'.
# Чтобы получить путь к файлу на хосте, нужно найти путь к этому тому.
# Проще всего сделать дамп из контейнера или скопировать файл, если том доступен.

# Получаем путь к тому mealie_data на хосте
MEALIE_VOLUME_PATH=$(docker volume inspect mealie_mealie_data --format '{{ .Mountpoint }}')

if [ -z "$MEALIE_VOLUME_PATH" ]; then
    echo "Error: Could not find mealie_data volume mountpoint. Exiting."
    exit 1
fi

echo "Backing up Mealie data from $MEALIE_VOLUME_PATH..."

# Создаем временную директорию для сбора файлов
TEMP_BACKUP_DIR=$(mktemp -d)

# Копируем базу данных (если SQLite)
cp "$MEALIE_VOLUME_PATH/mealie.db" "$TEMP_BACKUP_DIR/mealie.db"
echo "Copied mealie.db"

# Копируем медиафайлы
cp -R "$MEALIE_VOLUME_PATH/media" "$TEMP_BACKUP_DIR/media"
echo "Copied media files"

# Копируем конфигурационные файлы Mealie
cp "$MEALIE_DIR/.env" "$TEMP_BACKUP_DIR/mealie_env"
cp "$MEALIE_DIR/docker-compose.yml" "$TEMP_BACKUP_DIR/mealie_docker-compose.yml"
echo "Copied Mealie config files"

# Копируем конфигурационные файлы Caddy
cp "$CADDY_DIR/Caddyfile" "$TEMP_BACKUP_DIR/caddy_Caddyfile"
# Caddy данные и конфиги (сертификаты)
cp -R "$CADDY_DIR/data" "$TEMP_BACKUP_DIR/caddy_data"
cp -R "$CADDY_DIR/config" "$TEMP_BACKUP_DIR/caddy_config"
echo "Copied Caddy config and data"

# 3. Архивируем все в один файл
tar -czf "$BACKUP_FILE" -C "$TEMP_BACKUP_DIR" . # Архивируем содержимое временной директории
echo "Created backup archive: $BACKUP_FILE"

# 4. Удаляем временную директорию
rm -rf "$TEMP_BACKUP_DIR"
echo "Cleaned up temporary directory."

# 5. Запускаем Mealie снова (если останавливали)
# docker compose -f $MEALIE_DIR/docker-compose.yml start mealie # Опционально: запускаем сервис mealie

# 6. Удаляем старые бэкапы (например, старше 7 дней)
find "$BACKUP_DIR" -type f -name 'mealie_backup_.tar.gz' -mtime +7 -delete # Удаляем бэкапы старше 7 дней
echo "Removed old backups."

echo "Mealie backup completed."
    

Сделайте скрипт исполняемым:


chmod +x ~/backup_mealie.sh # Делаем скрипт исполняемым
    

3. Куда складывать бэкапы

Хранить бэкапы на том же сервере, что и основной сервис, небезопасно. В случае выхода из строя VPS, вы потеряете и данные, и бэкапы. Рекомендуется использовать одно из следующих решений:

  • Внешнее S3-совместимое хранилище: Например, Amazon S3, DigitalOcean Spaces, Backblaze B2. Для этого можно использовать утилиты вроде rclone или s3cmd в вашем скрипте.
  • Отдельный VPS: Вы можете настроить второй, более дешевый VPS и синхронизировать бэкапы туда с помощью rsync по SSH.
  • Локальное хранилище: Если у вас есть NAS или другой сервер дома, можно настроить rsync для копирования бэкапов туда.

Для примера, если вы хотите копировать бэкапы на другой сервер по SSH, добавьте в скрипт после создания архива:


# Копирование бэкапа на удаленный сервер
REMOTE_USER="backupuser"
REMOTE_HOST="your_backup_vps_ip"
REMOTE_PATH="/path/to/remote/mealie_backups"

rsync -avz "$BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" # Копируем архив на удаленный сервер
echo "Backup copied to remote server."
    

Не забудьте настроить SSH-ключи для беспарольного доступа к удаленному серверу.

4. Настройка Cron для автоматического запуска бэкапа

Откройте таблицу Cron для текущего пользователя:


crontab -e # Открываем crontab для текущего пользователя
    

Добавьте следующую строку, чтобы скрипт запускался ежедневно в 03:00 ночи:


0 3    /home/$USER/backup_mealie.sh > /dev/null 2>&1 # Запускать скрипт бэкапа ежедневно в 03:00
    

Сохраните и выйдите. Теперь бэкапы будут создаваться автоматически.

5. Обновления: rolling vs maintenance window

  • Обновления Mealie: Поскольку Mealie развернут через Docker Compose, обновления очень просты. Вам нужно лишь получить новые образы и перезапустить контейнеры.
    
    cd ~/mealie
    docker compose pull # Загружаем новые версии образов
    docker compose up -d # Пересоздаем контейнеры с новыми образами
                
    Рекомендуется выполнять эти обновления в "maintenance window" (окно обслуживания), когда активность пользователей минимальна, так как сервис будет кратковременно недоступен. Проверяйте официальный репозиторий Mealie на предмет критических изменений или процедур миграции перед обновлением.
  • Обновления системы: Регулярно обновляйте операционную систему и установленные пакеты:
    
    sudo apt update && sudo apt upgrade -y # Обновляем системные пакеты
                
    Это можно делать раз в неделю или раз в месяц. После крупных обновлений ядра или системных библиотек может потребоваться перезагрузка сервера (sudo reboot). Планируйте эти перезагрузки также в окно обслуживания.
  • Обновления Docker: Обновление Docker Engine также производится через apt upgrade. После обновления Docker Engine рекомендуется перезапустить все контейнеры.

Поддерживайте журнал изменений и версий для всех компонентов, это поможет при поиске и устранении неполадок.

Troubleshooting + FAQ

Mealie не запускается, контейнеры постоянно перезагружаются. Что делать?

Это частая проблема. Сначала проверьте логи контейнера Mealie. Перейдите в директорию, где находится docker-compose.yml (~/mealie), и выполните: docker compose logs mealie. Ищите ошибки, такие как проблемы с базой данных, отсутствующие переменные окружения, ошибки файловой системы или неверные права доступа. Убедитесь, что файл .env корректно настроен, особенно SECRET_KEY и PUID/PGID.

Не могу получить доступ к Mealie по HTTPS через домен.

Проверьте несколько вещей: 1) Правильно ли настроена A-запись в DNS для вашего домена и указывает ли она на IP вашего VPS? Используйте dig your.domain.com или онлайн-инструменты. 2) Работает ли Caddy? Проверьте логи Caddy: docker compose logs caddy. Ищите ошибки при получении сертификата Let's Encrypt (например, "certificate acquisition failed"). Убедитесь, что порты 80 и 443 открыты в UFW (sudo ufw status). Возможно, Caddy не может связаться с Mealie, проверьте имя сервиса в Caddyfile (должно быть mealie:9000).

Какой VPS-конфиг минимально подойдёт для Mealie?

Для Mealie, используемого одним человеком или небольшой семьей, минимально достаточно VPS с 1 ядром CPU, 1 GB RAM и 20-30 GB SSD. Этого хватит для операционной системы, Docker и самого Mealie с SQLite. Однако, для более комфортной работы и запаса на будущее, рекомендуется 2 ядра CPU, 2 GB RAM и 50 GB SSD.

Что выбрать — VPS или dedicated сервер для этой задачи?

Для Mealie практически всегда достаточно VPS. Dedicated серверы избыточны по мощности и стоимости для такого приложения, если только вы не планируете обслуживать очень большое количество пользователей (сотни или тысячи, что нетипично для Mealie) или если у вас уже есть dedicated сервер для других высоконагруженных задач и вы хотите разместить Mealie на нем. VPS предлагает лучшую гибкость и экономичность для большинства случаев.

Как обновить Mealie до новой версии?

Для обновления Mealie, запущенного через Docker Compose, перейдите в директорию ~/mealie. Затем выполните docker compose pull, чтобы загрузить новые образы. После этого запустите docker compose up -d, чтобы пересоздать контейнеры с новыми образами. Перед обновлением всегда рекомендуется просмотреть официальную документацию Mealie на GitHub, так как могут быть критические изменения или шаги миграции между мажорными версиями.

Я забыл пароль администратора Mealie. Как его сбросить?

В Mealie 2.x вы можете сбросить пароль администратора, используя утилиту командной строки внутри контейнера. Сначала найдите имя или ID запущенного контейнера Mealie: docker ps | grep mealie. Затем выполните команду сброса пароля, заменив mealie-container-name на имя вашего контейнера и new_password на желаемый новый пароль:


docker exec -it mealie-container-name python src/app/main.py users reset-password admin --new-password new_password
    

Убедитесь, что вы используете правильное имя контейнера и имя пользователя (admin по умолчанию).

Как изменить порт, на котором работает Mealie внутри Docker?

По умолчанию Mealie слушает порт 9000. Если вам нужно изменить этот порт, вы можете отредактировать файл docker-compose.yml. Найдите сервис mealie и измените порт, который он слушает, в секции ports или в переменной окружения PORT в файле .env. Если вы измените внутренний порт Mealie, вам также нужно будет обновить конфигурацию Caddy (reverse_proxy mealie:НОВЫЙ_ПОРТ), чтобы он указывал на новый порт.

Выводы и следующие шаги

Схема: Выводы и следующие шаги
Схема: Выводы и следующие шаги

Поздравляем! Вы успешно установили и настроили Mealie на вашем VPS, обеспечив безопасный доступ через HTTPS и реализовав стратегию резервного копирования. Теперь у вас есть мощный и гибкий инструмент для управления вашей коллекцией рецептов, полностью под вашим контролем. Это не только упорядочит ваши кулинарные заметки, но и даст ценный опыт в администрировании серверов и развертывании приложений с использованием Docker.

В качестве следующих шагов вы можете рассмотреть:

  • Настройка мониторинга: Интегрируйте ваш VPS с системами мониторинга, такими как Prometheus + Grafana, для отслеживания использования ресурсов и производительности Mealie.
  • Оптимизация производительности: Если ваша коллекция рецептов значительно вырастет, рассмотрите возможность миграции на PostgreSQL для базы данных, что может улучшить производительность по сравнению с SQLite.
  • Интеграция с другими сервисами: Изучите возможности интеграции Mealie с другими домашними сервисами, такими как планировщики задач или умные ассистенты, для автоматизации кулинарных процессов.
  • Усиление безопасности: Добавьте двухфакторную аутентификацию для доступа к Mealie, если это доступно в будущих версиях, или рассмотрите настройку VPN для доступа к VPS.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

установка mealie на vps: организация и управление вашей коллекцией рецептов
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.