Frappe Press 是什么
一句话总结
一个让你用网页界面管理多套 Frappe/ERPNext 站点的控制面板,相当于自建版的 Frappe Cloud。
🤔 为什么会有它 / 解决了什么问题
没有 Press 之前,运维一套 Frappe 站点全靠 SSH 敲命令:手动建 bench、手动拉代码、手动配 nginx。管理三五套还能忍,管几十个客户站点就是灾难。Press 把”创建站点 → 构建镜像 → 部署 bench → 配域名证书”全链路变成点几个按钮的事,顺便把运维知识固化到系统里,不用每次靠人脑记步骤。
🔍 具体原理 / 运作逻辑
Press 本身是一个 Frappe App,跑在它自己的站点上。它维护了一套”供应链”记录:有什么 App、代码仓库在哪、用哪个版本的 Python、部署到哪台服务器。当你点”创建站点”时,Press 帮你跑完一整套流水线:App Source → Release → Release Group → Build(Docker 镜像)→ Deploy(启动 bench 容器)→ Add Site to Upstream(配 nginx 路由)。服务器端靠 Agent(一个跑在目标机器上的 daemon)接收 Press 的指令并真正执行。
更硬核的技术细节(点击展开)
🧭 什么情况下会用到 / 什么场景会遇到它
- 自己运营多租户 Frappe 服务,需要管理面板管理客户站点
- 从 Frappe Cloud 迁移到自己控制的服务器,保留自动部署能力
🛠️ 怎么上手 / 在哪操作
参考本项目 press/ 目录下的部署文档,8 个文件 + docker compose up。
⚖️ 副作用 / 代价 / 取舍
- 比直接 SSH 运维重得多:要多维护一套 Press 控制面板容器 + 数据库,出问题多一层排查
- Agent 代码质量一般,某些 Job 状态流转有 bug(如 nginx reload 步骤追踪不更新),需要 fork 修
🕰️ 来历
- 谁提出/创造的:Frappe 团队(Frappe Technologies Pvt Ltd)
- 什么时候出现的:2022 年前后,随 Frappe Cloud 一起推出,后来开源
🔗 关联 / 经常一起出现的概念
- Frappe Framework:Press 依赖的底层框架,Press 本身就是一个 Frappe App
- Agent (frappe/agent):安装在目标服务器上的 daemon,Press 通过它远程执行命令
- Bench:Press 管理的 Frappe 运行环境,一个 bench = 一个 Docker 容器,里面跑一套 Frappe + 若干站点
⚠️ 注意事项 / 常见误区
Press 和 Frappe Cloud 不完全是一回事。Press 是管理面板,Frappe Cloud 是托管服务。Press 只管”编排部署”,不帮你管服务器硬件、备份策略、DDoS 防护。另外 Press 的 Dockerfile 里 Python certifi 有两份(系统 + 虚拟环境),只改一份会导致 HTTPS 证书错误,这是入坑常见痛点。
📎 记忆锚点
“给 Frappe 运维做的可视化面板,把敲命令变成点按钮,但自己也得先养好它。”
📝 更新日志
| 日期 | 改动 | 原因 |
|---|---|---|
| 2026-07-13 | 首次创建 | - |