CF-ERP 部署教程:Cloudflare Workers + D1 免费搭建进销存系统,个人和小微店铺零成本记账

CF-ERP 部署教程:Cloudflare Workers + D1 免费搭建进销存系统,个人和小微店铺零成本记账
luoli前言
开店做生意,进货、卖货、记账三件事躲不开。市面上的进销存软件要么按年收费,要么数据锁在别人服务器里,要么功能重到小店铺用不上。
CF-ERP 是一个开源(MIT 协议)的无服务器进销存系统,整套跑在 Cloudflare Workers + D1(SQLite) 上——没有服务器、没有月费,Cloudflare 免费额度对个人 / 小微企业 / 店铺来说完全够用。后端 Hono 框架,前端 Vue 3 免构建单页应用,单 Worker 同时承载 API、静态页面和定时备份任务。
- 项目地址:https://github.com/love-ztm/cf-erp
- 在线演示:https://ycerp.us.ci(演示账号
admin/admin123,演示环境数据可能被其他体验者修改,别存真实业务数据) - 开源协议:MIT
功能特点
| 模块 | 功能说明 |
|---|---|
| 📊 数据看板 | 销售额(已扣优惠)、核心毛利与毛利率、采购支出、资产池账户总余额、应收应付账款、低库存智能预警、最近业务动态 |
| 📦 商品管理 | 商品增删改查、分类、条码、期初库存、建议售价、低库存阈值、服务类商品(不跟踪库存)、成本手动锁定、商品停用 |
| 📥 采购入库 | 多明细采购单、商品输入即搜、行内一键新增商品、整单优惠、结算账户关联、供应商欠款自动记账、采购退货 |
| 📤 销售出库 | 多明细销售单、实时毛利预览、库存不足强拦截、赊销自动挂客户欠款、销售退货(冲减欠款/退回账户)、单据直接修改 |
| 🗄️ 库存管理 | 实时库存统计、库存价值评估、盘盈盘亏手动调整、商品全生命周期库存流水(进出方向与单价追溯) |
| 💰 资金记账 | 多结算账户(现金/微信/支付宝/银行卡等)、收款单核销欠款、付款单、其他收支管理、资金日记账 |
| 📈 统计报表 | 商品毛利报表(退货自动反冲 + 整单优惠扣减)、按日毛利趋势、进销存期初期末汇总、往来欠款表、其他收支明细,全部支持 CSV 导出与小票打印 |
| 👥 往来单位 | 供应商与客户档案、期初欠款、实时欠款余额与预收/预付状态、联系人及地址管理 |
| ⚙️ 系统设置 | 系统标题与公司信息自定义、多用户权限管理(次级用户与权限勾选)、WebDAV 自动备份配置、全量备份下载与还原、双重验证安全清库 |
技术架构
整个系统的架构非常克制——一个 Worker 打天下:
| 层 | 技术 | 说明 |
|---|---|---|
| 计算 | Cloudflare Workers | Hono 路由,API + 静态资源托管 + Cron 三合一 |
| 数据 | Cloudflare D1 | SQLite 数据库,11 张表,绑定名 DB |
| 前端 | Vue 3(CDN 引入) | 免构建单页应用,public/ 目录直出,暗黑科技感 UI,适配桌面与手机 |
| 认证 | SHA-256 + HMAC Session Cookie | 密码哈希存储,会话签名防篡改,有效期 7 天 |
| 定时 | Workers Cron Triggers | 每天北京时间凌晨 2 点自动执行 WebDAV 远程备份 |
几个架构细节值得一提:
- 静态资源与 API 同源:
wrangler.jsonc里配置run_worker_first: ["/api/*"],API 请求先进 Worker,其余路径直接走静态资源,未命中回退index.html(SPA 路由) - schema 内嵌:
rules把schema.sql以文本方式打包进 Worker,每个 API 请求前幂等执行ensureSchema——表结构不存在就自动建,列升级自动迁移,部署后零初始化步骤 - 默认管理员自举:users 表为空时自动创建默认管理员(可用
ADMIN_PASSWORD变量或 Secret 覆盖初始密码)
成本核算:移动加权平均法
进销存系统的灵魂在成本。CF-ERP 采用移动加权平均法:
- 每次采购入库时,按
(原库存 × 原均价 + 新入库量 × 新进价) ÷ 总库存重算该商品的移动加权成本 - 销售出库时,即时快照固化当时的成本均价——历史订单的毛利不随日后进价波动而变化
- 支持在商品管理中手动指定并锁定成本均价(锁定后不随采购流水变动)
- 任何历史单据修改或删除后,系统自动全量重放重算,确保账实严格相符
这套机制保证了「商品毛利报表」里的数字是可信赖的,而不是简单用售价减个大概成本。
部署教程
部署是一个全新空系统(含默认管理员 admin / admin123,不含任何业务数据),全程四步,五分钟内完成。
第 1 步:登录 Cloudflare 并创建 D1 数据库
1 | npx wrangler login |
d1 create 会输出一个 database_id。
第 2 步:填入 database_id
把上一步拿到的 database_id 填进项目根目录的 wrangler.jsonc:
1 | "d1_databases": [ |
第 3 步:部署
1 | npm run deploy |
Wrangler 会自动完成 Worker 打包、D1 绑定和静态资源上传,输出你的 Workers 域名(形如 cf-erp.<你的子域>.workers.dev)。
第 4 步:登录并初始化设置
访问 Workers 域名,用 admin / admin123 登录,然后进「系统设置」:
- 公司与系统配置:修改店铺名称、电话、地址、打印页脚
- 用户账号管理:立即修改默认密码,按需添加员工/销售账号并勾选权限
- 数据备份与恢复:如有历史数据,上传备份文件一键还原
两点建议
绑定自定义域名:workers.dev 域名在国内部分网络环境访问不稳定,建议在 Cloudflare 后台给 Worker 绑一个自有域名(托管在同一 Cloudflare 账号下的域名加一条 CNAME 即可),稳定且顺手。
用 Secret 管理初始密码:wrangler.jsonc 里的 ADMIN_PASSWORD 是明文变量,正式使用建议改用 Secret(Secret 会覆盖 vars):
1 | npx wrangler secret put ADMIN_PASSWORD |
本地开发与测试
1 | npm install |
项目自带 61 个集成测试用例,覆盖登录鉴权、采购/销售/退货、欠款核销、成本重算等核心链路,我本地实测 61 通过 0 失败——对开源 ERP 来说,这个测试密度是数据可靠性的底气。
数据备份:双保险
ERP 数据是最不能丢的数据,CF-ERP 提供两层备份:
本地全量 JSON 备份:系统设置里一键下载全量备份(JSON 格式),随时可上传还原,适合手动定期存档。
WebDAV 远程定时备份:配置一个 WebDAV 网盘(坚果云 / 群晖 / AList 等都支持),填入地址、账号、密码和远程目录后,Workers Cron 会在每天北京时间凌晨 2 点自动把全量备份推上去。备份 URL、用户名、密码、远程目录和 cron 时间都可以在系统设置里调整,面板会显示上次备份时间和状态。
顺带说一句:这个自动备份本质上就是 Workers 的 scheduled 入口——部署时 wrangler.jsonc 里的 triggers.crons(0 18 * * * UTC 即北京凌晨 2 点)就是它的触发器。
使用建议
- 适合谁:个人副业、小微店铺、需要轻量记账的小团队——不想为 ERP 付月费、又希望数据在自己账号里自主可控的用户
- 优点:零成本、部署极简、免运维(Cloudflare 托管一切)、数据可导出可迁移、移动加权成本核算专业可靠
- 边界:D1 免费额度(每天 10 万行读、1 万行写)对单店铺场景绰绰有余,但如果是高频批量出单的团队,建议留意 Cloudflare 用量面板
- 安全提醒:部署后第一件事就是改默认密码;如果绑定了自定义域名,建议在 Cloudflare 后台开启 Access 或至少启用强密码策略
常见问题
部署后打不开 / 提示 500?
先确认 wrangler.jsonc 里的 database_id 是否已经替换成第 1 步 d1 create 输出的真实 ID。D1 未绑定正确时 API 会报错,页面可以加载但登录失败。
忘记 admin 密码怎么办?
用 wrangler d1 execute cf-erp --remote --command "DELETE FROM users" 清空用户表,重新访问系统时会用 ADMIN_PASSWORD(或默认 admin123)自动重建管理员——注意这会删除所有用户账号,业务数据仍在其他表里。
能导入之前用其他软件的数据吗?
可以先手工整理成商品/客户 CSV 借助界面录入,或者参考项目 tools/ 目录里的历史数据迁移脚本;也可以备份 JSON 后直接改 JSON 再还原。
手机上能用吗?
前端是响应式设计,手机浏览器直接访问即可完成日常开单、查库存、看报表,小票打印也支持。
小结
CF-ERP 把「进销存」这个传统上要么付费、要么自己买服务器部署的软件品类,压缩进了一个 Cloudflare 免费套餐里:四条命令部署、61 个测试兜底、移动加权成本核算、WebDAV 自动备份。对于正被记账软件订阅费困扰的小商家,或者想找个真实项目学习 Workers + D1 全栈开发的开发者,它都值得一试。
参考
- CF-ERP GitHub 仓库
- CF-ERP 在线演示
- Hono 框架官网
- Cloudflare Workers 文档
- Cloudflare D1 文档
- Wrangler CLI 文档
- Vue 3 官方文档









