Tropic Host

在 VPS 上部署 Mealie:属于自己的食谱、菜单与购物清单管理器

阅读约需 10 分钟
Tropic
在 VPS 上部署 Mealie:属于自己的食谱、菜单与购物清单管理器

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、反向代理和更新留出余量。磁盘空间主要用于保存图片和备份。

使用场景CPURAM磁盘
使用 SQLite 的个人食谱库1 vCPU1 GB10–20 GB SSD
家庭使用、HTTPS 和其他容器1–2 vCPU2 GB20 GB 以上 SSD
PostgreSQL 或大量用户2 vCPU2–4 GB20 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.yml

2. 添加配置

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:

TZBASE_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 更合适。