Recipya 介绍与选型指南
Recipya(reaper47/recipya v1.2.2,GPL-3.0)自托管食谱管理器认知篇:Go 单容器+SQLite 轻量架构、396 站 URL 抓取/FDC 营养计算/OCR 实测能力面、GitHub 实查社区数据、Go→Rust 重写风险,与 Mealie/ManageMeals/Fork Recipes 量化选型。
Recipya 介绍与选型指南
目标:给出 Recipya(reaper47/recipya)的准确定位、Go 单容器轻量架构解析、2026-11-02 联网实查的社区数据,以及与本专栏体系内 Mealie、Fork Recipes、ManageMeals 等已实测组件的量化选型对比。全部数据来自 GitHub API 实查与本地 v1.2.2 容器实测(取证记录见
/opt/data/quzuo/tmp/recipya/evidence.md)。
一、一句话定位
Recipya 是一款 Go 语言编写的自托管家庭食谱管理器:单个二进制/单容器 + 单个 SQLite 文件即可跑起"网页抓取导入 + 纸质食谱 OCR 数字化 + 菜谱册(Cookbook)组织 + 营养计算 + 公英制换算"的完整闭环,主打"全家都能用的简单"。
它的官方描述是 "A clean, simple and powerful recipe manager your whole family will enjoy",与 Mealie 的"功能全家桶"、Tandoor 的"厨房工作台"路线不同,Recipya 把复杂度压到了一个容器、一个 JSON 配置文件、一个 SQLite 库。
二、项目速览(2026-11-02 GitHub API 实查)
| 项 | 值 |
|---|---|
| 上游仓库 | reaper47/recipya(注意:不是 fernandoracane/Recipya,该仓库不存在,API 返回 404) |
| 语言 / 许可 | Go / GPL-3.0 |
| Stars / Forks | 412 / 24 |
| 贡献者 / 提交数 | 17 人 / main 分支 575 commits |
| Open Issues | 68 |
| 创建时间 | 2021-05-18;最近推送 2026-11-01(仍在活跃开发) |
| 最新稳定版 | v1.2.2(2024-12-20 发布;releases/latest 实测返回) |
| 预发布通道 | nightly(2026-11-01,几乎每日滚动) |
| Release 资产 | linux/darwin/windows × amd64/arm64 共 6 个 zip,另有 Docker Hub 镜像 reaper99/recipya |
| 官方文档 | https://recipya.musicavis.ca/docs/(文档站源码就在主仓库 docs/website/ 内) |
| 社区渠道 | Matrix #recipya:matrix.org、GitHub Discussions |
版本注记:v1.2.2 tag 的源码里 app.Info.Version 常量已写成 1.3.0(二进制 strings 亦可见),即 Docker tag 与内部自报版本号不一致——排障时以 docker images 的 tag 为准,不要轻信 UI 内显示的版本。
三、⚠️ 选型必读:Go 版正在被 Rust 重写
这是 Recipya 当前最重要的选型事实,README 原文(2026-11-02 实查):
The Recipya project is currently being rewritten in Rust… Note that this repository (Recipya Go) will eventually be archived.
- 重写仓库:
reaper47/recipya-rs(Go 版的 Rust 复刻,39 star,2026-11-01 仍在推送),官方声明 Rust nightly 已可用于生产自托管,演示站 https://recipya.ca 。 - 官方提供迁移指南
recipya-rs/docs/migration-from-recipya-go-version.md。 - 影响:Go 版 v1.2.2 是功能冻结末代版本(最后一个正式 release 停在 2024-12-20),后续 bug 修复大概率只进 nightly 或 Rust 版;选 Go 版意味着接受"未来要按官方指南迁移一次"。
- 数据库形态也随之分叉:Go 版仅支持 SQLite(
main.go硬编码NewSQLiteService(),全仓无任何 postgres 文件,任务式调研纠偏);PostgreSQL 支持属于 Rust 重写版。
如果你要的是"部署完五年不动",选成熟度更高的 Mealie;如果你愿意跟随一个正在换语言的项目(或干脆直接上 Rust nightly),Recipya 的轻量架构在同类里几乎无对手。
四、架构与技术特点(本地 v1.2.2 容器实测)
4.1 单容器极简栈
recipya 容器(alpine 基底,273 MB)
├── /app/recipya serve # 唯一命令:Go 单体 HTTP 服务(net/http + templ/HTMX 服务端渲染)
├── SQLite(goose 迁移 21 个) # Database/recipya.db(WAL 模式)
├── fdc.db(200 MB) # 首次启动自动下载的 FDC 食物成分库,用于营养计算
├── FFmpeg 6.1.2(内置) # 食谱视频转 WebM(文档要求 7+,镜像实际 6.1.2)
└── /root/.config/Recipya/ # 唯一持久化卷:config.json + Database/Images/Backup/Logs/Videos
- 无独立前端服务、无 Redis、无 PostgreSQL、无对象存储——对比 Mealie(可选 PG+SMTP)、ManageMeals(MongoDB+Valkey+Typesense 多服务),Recipya 的 compose 文件只有一个 service。
- 页面为服务端渲染(templ 模板 + HTMX 局部更新),交互类操作(URL 导入、导出、文件导入)通过
/wsWebSocket 推送进度与结果——实测无 WS 连接时直接 POST 导入接口会返回 400Connection lost. Please reload page.,这是 API 自动化取证必须绕过的门槛(详见部署篇)。
4.2 功能面(实测验证)
| 能力 | 实测结论 |
|---|---|
| URL 抓取导入 | ✅ 导入 recipetineats.com 意式肉酱面成功:标题/配料/步骤/图片(自动转 webp+缩略图)全量落库 |
| 支持站点库 | ✅ /recipes/supported-websites 实查 396 个优化适配站点(allrecipes、bbc good food 等) |
| 文件格式导入 | ✅ /recipes/supported-applications 实查 10 款:AccuChef、ChefTap、Crouton、Easy Recipe Deluxe、Kalorio、MasterCook、Paprika、Recipe Keeper、RecipeSage、Saffron |
| 远程迁移 | ✅ 内置 Mealie / Tandoor / Nextcloud Cookbook 拉取式迁移(POST /integrations/import) |
| 导出 | ✅ JSON(schema.org Recipe 标准,逐食谱目录 zip)与 PDF 两种;实测导出 zip 可再走文件导入回灌(去重生效:"Imported 0 recipes. 2 skipped") |
| 纸质食谱 OCR | ⚠️ 依赖 Azure AI Document Intelligence(F0 免费层 500 次/月),未配置密钥时功能禁用 |
| 营养计算 | ✅ 基于 FDC 库自动计算(calories/protein/fat/sodium 等 11 项) |
| 公英制换算 | ✅ 用户级设置,支持自动转换 |
| 菜谱册/分享 | ✅ Cookbook 增删、分享链接(/r/{id}、/c/{id});实测 HTMX HX-Prompt 头建册成功 |
| 搜索 | ✅ SQLite FTS5 全文检索,中文关键词实测可命中 |
| 主题 | ✅ 跟随系统或 32 种主题 |
| 打印/防休眠 | ✅ 食谱打印视图、Wake Lock API |
| 自动备份 | ✅ 全局备份每 3 天一次、保留 10 份(zip 含 DB+图片+日志+配置),另有按用户备份(recipes.zip+SQL) |
4.3 资源占用
- 官方最低要求:300 MB 磁盘空闲(不含 FDC 库;FDC 落盘后 Database 目录约 201 MB)。
- 实测容器内存占用低(Go 单体 + SQLite),树莓派 3/4(linux/arm64 官方支持)级别设备完全够用;这是它相对 Python/Node 系食谱管理器的核心优势。
五、量化选型对比(同专栏体系实测数据)
| 维度 | Recipya 1.2.2 | Mealie v3.30.0 | ManageMeals API 1.9.3 | Fork Recipes | RecipeSage 4.1.1 |
|---|---|---|---|---|---|
| 语言/栈 | Go 单体 + SQLite | Python FastAPI + Vue | Node.js + MongoDB | Java Spring Boot | Node.js + PostgreSQL |
| Stars(实查) | 412 | 13,766 | 988 | 69 | 988 |
| 许可证 | GPL-3.0 | AGPL-3.0 | 自定义 | GPL-3.0 | AGPL-3.0 |
| 容器数(官方 compose) | 1 | 1(+可选外部 DB) | 4+(API/Web/Mongo/Typesense…) | 2(前后端分离) | 5(含 pushpin/valkey) |
| 数据库 | 仅 SQLite | SQLite/PostgreSQL | 锁定 MongoDB | PostgreSQL | PostgreSQL |
| 最新稳定版时间 | 2024-12-20 | 2026-10-31 | 2026-09-25 | 2026 年内活跃 | 2026-08 |
| URL 抓取 | ✅ 396 站优化 | ✅ | ⚠️ 有限 | ✅ | ⚠️ 插件 |
| 营养计算 | ✅ 内置 FDC | ✅(USDA 源) | ❌ | ❌ | ❌ |
| OCR 纸质食谱 | ✅ Azure DI | ❌ | ❌ | ❌ | ❌ |
| 多语言 UI | ✅ 英/法 | ✅ | ❌ | ❌ | ✅ |
| 主要风险 | Go 版将归档,Rust 重写中 | 功能庞杂、升级偶有破坏性 | 社区小、依赖链长 | 社区极小(69 star) | 协作购物清单定位 |
场景建议:
- 要"最省事的全功能":选 《Mealie 介绍与选型指南》 的主角——社区最大(13.7k star)、API 生态最全,代价是资源占用与升级复杂度。
- 要"最低资源 + 单容器 + 家庭分享":选 Recipya。一个卷一个库,备份就是拷一个目录;接受 Rust 迁移阵痛期即可。
- 要"协作购物清单/多人厨房":RecipeSage(本批次在途,另有专文)定位更贴。
- 要"Java 技术栈/前后端分离学习":看 《Fork Recipes 介绍与选型指南》,但注意其社区规模(69 star)与 Recipya(412 star)差 6 倍。
- 要"MongoDB 全家桶/餐厅菜单感":看 《ManageMeals 介绍与选型指南》。
六、上手路径
- 部署:本专栏 《Recipya Docker Compose 部署指南》(实测 8163 端口闭环:注册→登录→建食谱→URL 导入)。
- 配置:《Recipya v1.2.2 配置参数详解》(config.json 与环境变量的优先级陷阱、Docker 下 UI 改配置不持久化的坑)。
- 运维:《Recipya v1.2.2 常用 CLI 命令与工具详解》(compose 运维、卷备份恢复、导入导出工具链)。
七、小结
Recipya 是食谱管理赛道里架构最轻的选手:Go 单体 + SQLite + 单卷,却配齐了 URL 抓取(396 站优化)、FDC 营养计算、OCR 数字化、公英制换算、自动备份这些"别人要三个服务才给"的能力。它的 412 star 与 17 名贡献者撑不起 Mealie 级的生态,但"单容器 + 全家可用"的定位足够清晰。选型时唯一必须权衡的是 Go→Rust 重写带来的迁移预期:把它当作"两三年周期的家庭自用方案",Recipya 是同类里部署成本最低的选择之一。