Mealie:部署在 VPS 上的个人食谱库、菜单规划器与购物清单
一道食谱留在浏览器书签里,另一道藏在聊天记录中,第三道保存在截图里,而第四道还得再次进入网站,在广告和冗长的开场白之间寻找。Mealie 可以把这些内容集中到一个地方:粘贴链接,就能得到包含食材、步骤和图片的食谱卡片。之后还可以把菜品加入日历,并将所需食材转入共享购物清单。
下面将介绍 Mealie 能做什么、适合哪些人、需要什么样的服务器,以及如何通过 Docker Compose 在 VPS 上运行自己的食谱管理器。
什么是 Mealie
Mealie 是一款免费的自托管应用,用于保存食谱、规划餐食和管理购物清单。服务运行在你自己的服务器上,因此数据库存放在哪里、谁能够访问以及如何创建备份,都由你自己决定。
界面可以通过电脑或手机的浏览器打开。你可以手动创建食谱、从网站导入食谱、将其整理到分类和食谱书中、加入每周菜单,并与家人共同使用。
Mealie 与普通笔记文件夹最大的区别在于各项内容彼此关联。食谱可以加入餐食计划、关联购物清单、按标签筛选,还能通过 API 用于自动化流程。
Mealie 的主要功能
通过一个链接导入食谱
用户粘贴 URL 后,Mealie 会尝试提取菜名、份数、食材、制作步骤和图片。最终留下的不再是又一个书签,而是一张可以编辑和保存的整洁食谱卡片。
这一功能尤其适合那些被广告和无关文字包围的食谱网站。如果页面采用了非标准结构,有些数据可能仍需手动修正。
Mealie 还可以从 Paprika、Tandoor、Nextcloud Cookbooks 以及其他多种食谱管理器迁移收藏,无需从空白食谱库开始。
从照片、文字或视频导入
可选的 AI 集成功能可以根据文字、食谱书页面的照片或视频链接整理出食谱。对于视频,服务会先获取语音转录,再从中提取食材和操作顺序。
该功能需要兼容的 AI 服务商。你可以连接外部 API,也可以接入自己的 OpenAI 兼容服务,例如 Ollama。启用前应考虑请求成本,以及所选服务商的数据处理政策。
菜单规划器与购物清单
菜品可以按照日期和餐次进行安排。你可以添加食谱、类似“昨天的剩菜”这样的备注,或者按照规则随机选择一道菜,例如每周五只选择快速晚餐。
食谱中的食材可以转入购物清单。用户能够在手机上勾选条目,并按商店区域进行分类。这样一来,Mealie 不再只是食谱档案,而会成为贯穿整周的实用工具。
家庭访问与自动化
Mealie 支持用户、群组和家庭空间。一家人可以共同使用同一套食谱收藏,同时在需要时保留各自独立的餐食计划和购物清单。
REST API、通知和 Webhook 可以让服务与其他系统连接。例如,官方 Home Assistant 集成能够在日历中显示即将安排的餐食,并与购物清单配合使用。
Mealie 适合哪些人
如果食谱分散在网站、笔记和照片中;每次都要重新规划菜单;多人共同使用一份购物清单;你希望掌控自己的数据库;或者需要自动化功能,那么 Mealie 会很有用。
如果你只做几道固定菜品,又不想维护 Docker,这项服务可能会显得过于复杂。自托管可以摆脱对第三方云账户的依赖,但服务器仍然需要更新、防护和备份。
Mealie 需要什么样的服务器
在官方 Docker Compose 配置中,容器的内存限制为 1000 MB。小型部署使用 1 vCPU 和 1 GB RAM 即可运行,但配备 2 GB RAM 的 VPS 能为 Linux、Docker、反向代理和更新留出余量。磁盘空间主要用于保存图片和备份。
| 使用场景 | CPU | RAM | 磁盘 |
|---|---|---|---|
| 使用 SQLite 的个人食谱库 | 1 vCPU | 1 GB | 10–20 GB SSD |
| 家庭使用、HTTPS 和其他容器 | 1–2 vCPU | 2 GB | 20 GB 以上 SSD |
| PostgreSQL 或大量用户 | 2 vCPU | 2–4 GB | 20 GB 以上 SSD |
这些是实用的起步配置,并不是严格的官方最低要求。如果 AI 通过外部 API 运行,计算不会在 VPS 上完成。本地模型所需资源需要另行计算。
SQLite 还是 PostgreSQL
SQLite 更简单,Mealie 文档建议将其用于 1–20 名用户且并发操作较少的环境。对于个人或家庭部署,它通常是最佳起点。
如果并发负载较高、需要模糊搜索,或者数据存放在网络存储上,则更适合选择 PostgreSQL。不建议在 NAS 上使用 SQLite,否则可能出现数据库锁定和数据损坏。
使用 Docker Compose 在 VPS 上安装 Mealie
下面的示例使用 SQLite。服务器上需要事先安装 Docker Engine 和 Docker Compose。可使用运行于 amd64 或 arm64 架构上的 64 位 Ubuntu 或 Debian。
1. 创建目录
sudo mkdir -p /opt/mealie
cd /opt/mealie
sudo nano docker-compose.yml2. 添加配置
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:v3.24.0
container_name: mealie
restart: unless-stopped
ports:
- "9925:9000"
deploy:
resources:
limits:
memory: 1000M
volumes:
- mealie-data:/app/data/
environment:
ALLOW_SIGNUP: "false"
PUID: "1000"
PGID: "1000"
TZ: "Etc/UTC"
BASE_URL: "https://recipes.example.com"
volumes:
mealie-data:将 TZ 和 BASE_URL 替换为你自己的值。截至 2026 年 8 月 29 日,当前版本为 v3.24.0。安装前请检查最新版本,并使用明确的版本标签代替 latest,避免发生意外更新。
3. 启动 Mealie
sudo docker compose up -d
sudo docker compose ps打开 http://服务器IP:9925。默认登录名为 [email protected],密码为 MyPassword。请立即修改管理员凭据。
4. 启用 HTTPS
如需长期访问,请绑定域名,在 Mealie 前部署 Nginx、Caddy 或 Traefik,并签发 TLS 证书。之后将端口限制到 localhost:
ports:
- "127.0.0.1:9925:9000"如果服务只在家中使用,可以不将其暴露到互联网,而是通过 VPN 访问。
启动后需要进行哪些设置
修改密码,确认开放注册已经关闭,并为家庭成员创建账户。然后添加几个简单标签,例如“快速”“可冷冻”和“晚餐”。一开始就建立过于复杂的结构只会增加使用负担。
导入几道真实食谱,检查份数和计量单位,把菜品加入规划器,并创建第一份购物清单。通过这些步骤,一个晚上就能理解 Mealie 的核心使用流程。
安全与备份
公开部署需要强密码、HTTPS、关闭注册以及定期更新。文档还特别提醒了用于导入 URL 的 API 方法:如果不限制请求频率,可能会产生不必要的负载。最好在反向代理上配置请求频率限制。
由于导入过程会让容器连接外部地址,在安全要求较高的家庭网络中,应将 Mealie 与内部服务隔离。
管理面板可以创建、下载和恢复完整备份。不过,Mealie 已不再执行自动定时备份。对于 SQLite,更稳妥的做法是将整个 /app/data 卷复制到外部存储。保存在同一台 VPS 上的备份无法防止服务器丢失带来的损失。
Mealie 的局限性
导入效果取决于网站的页面结构,因此有些食谱卡片需要手动修正。如果原始食谱使用自由文本而不是标准单位,按比例调整食材数量时也可能出错。
主要客户端是 Web 界面。它在手机浏览器中使用方便,但原生应用由其他项目单独开发。此外,所有者需要自行负责 Docker、HTTPS、更新和备份。
Mealie 最适合形成一条连续流程:保存找到的食谱、安排到某一天,并确保不会忘记购买食材。
在 tropic.host 的 VPS 上运行 Mealie
如果家用服务器能够持续运行,并且已经设置好远程访问,那么它也可以胜任。若希望随时随地查看食谱和购物清单,又不想在家庭路由器上进行端口转发,VPS 会更加方便。
家庭部署可以使用 tropic.host 提供的 2 GB RAM Linux VPS。这一配置足以运行 Mealie、Docker 和反向代理,并保留合理余量。开始时可以使用 SQLite,负载增长后再增加资源或迁移到 PostgreSQL。
VPS 不能替代备份:数据库和食谱图片仍需定期单独导出。
简短总结
Mealie 可以以整洁的形式保存食谱、帮助规划菜单,并把食材汇总到共享购物清单中。它最强大的功能是通过链接导入,而家庭访问、规划器和各种集成则能让食谱库变成日常工具。
个人或家庭使用只需要一台小型 VPS、Docker 和 SQLite。相应地,你需要持续关注更新、HTTPS 和备份。
FAQ
Mealie 免费吗?
免费。该项目采用 AGPL-3.0 许可证发布。费用可能来自 VPS、域名和外部 AI 请求。
可以从俄语网站导入食谱吗?
可以,只要页面包含清晰可识别的食谱结构。导入质量取决于网站;错误可以手动修正,也可以借助 AI 导入功能处理。
Mealie 需要多少 RAM?
小型 SQLite 部署可以从 1 GB 开始。对于同时运行 Linux、反向代理和其他容器的 VPS,2 GB 会更加实用。
必须使用域名吗?
不必。在局域网内或通过 VPN 访问时,IP 地址即可。若需要从互联网安全访问,域名和 HTTPS 会更方便。
应该选择 SQLite 还是 PostgreSQL?
SQLite 更简单,适合大多数拥有 1–20 名用户的部署。并发负载较高、数据存放在 NAS 上或需要模糊搜索时,PostgreSQL 更合适。
