Встановлення 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-конфіг потрібен для цього завдання
Для встановлення 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 та домен.