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首次创建-