首页 产品优势 部署指南 关于我们 联系我们
首页 / 关于我们

关于 TechShop

TechShop 是一套为飞牛 fnOS 与 Docker 环境开发的自托管商城系统, 由个人开发者维护。目标不复杂:让需要在自己设备上卖东西的人, 不必为了一个商城去搭一整套服务端基础设施。

TechShop 应用图标
TechShop 商城 当前版本 1.0.030 · 交付形式:fnOS 应用包(Docker 按需获取) · 支持 x86_64 与 arm64
产品定位

为「自托管」而做,不是云服务的精简版

市面上多数商城系统假定你有独立的服务器、数据库与运维能力。 自托管的场景往往不是这样:设备是家里或办公室的一台机器, 管理员同时是店主、客服和技术支持。

因此 TechShop 在取舍上偏向「减少需要照看的东西」: 去掉数据库,去掉缓存服务,把初始化收进向导, 把安全设置默认打开。代价是数据规模的上限相对有限, 这也是我们在产品定位上接受的部分。

适合与不适合的场景
适合不太适合
个人或小团队经营的服务类商品、虚拟商品 需要多仓、多门店、复杂 ERP 对接的大型零售
希望数据留在自己设备上的场景 需要跨区域部署与弹性扩容的高并发场景
设备上已有 fnOS 或 Docker 环境 没有可长期运行的设备,只能依赖云主机
商品数量在数百到数千量级 需要数据仓库与实时报表分析的规模

设计原则

六条一直遵守的取舍

原则不是口号,它们决定了遇到分歧时产品往哪边走。

01

数据属于使用者

业务数据以可读文件保存在本机,不用厂商工具就能备份、查看和搬走。不设置导出门槛,也不做云端绑定。

02

不引入不必要的组件

没有数据库、缓存和消息队列,就没有连接池、队列堆积与版本兼容这些额外问题。少一个组件,少一类故障。

03

安全默认开启

口令一律哈希存储,后台入口与对外前台分离,敏感操作强制校验。安全不是可选项,也不该让用户自己去开。

04

面向非运维人员

安装走向导,后台操作有明确反馈,报错写成能看懂的中文,而不是直接抛堆栈信息。

05

金额不采信客户端

价格、抵扣与退款数额全部在服务端重新计算。这条在实现上更麻烦,但在交易类产品里没有商量余地。

06

升级要有确定的结果

升级后自动确认新代码已经生效,避免出现「看起来升级了、实际还在跑旧版本」这类难以察觉的问题。


技术栈

选型偏向长期可维护

后端与前端都使用原生能力,不引入重型框架。 这样做的好处是依赖树很浅:升级 Node.js 版本时不会牵动一大片间接依赖, 也让安装包维持在 2 MB 左右。

数据层选择本地结构化文件而非嵌入式数据库,主要是为了让数据始终处于 「用记事本也能打开」的状态,便于排查与手工迁移。

主要技术选型
层次选型
运行时Node.js 22
后端服务原生 HTTP 服务,无 Web 框架
前端原生 HTML / CSS / JavaScript
数据存储本地结构化文件
出站邮件nodemailer
收件箱读取imapflow
环境配置dotenv
分发形式fnOS 应用包(.fpk) / Docker 镜像
支持架构x86_64 / arm64

版本节奏

内部迭代频繁,对外发布克制

这个项目不是「每一版都上架」。内部按小步快跑连续迭代,每项改动先在本地跑完 端到端验证,攒够一批再合并成一次对外发布 —— 所以版本号走得多、真正上架的少。

到目前为止只发布过三次:1.0.019(首次)、1.0.023(第 2 次)与 1.0.030(第 3 次)。 应用中心当前可安装的就是 1.0.030。 下表把「已上架」与「内部迭代」分开标注,避免把「已开发」读成「已上架」。

版本状态一览
版本状态主要内容
1.0.030 已上架 · 第 3 次 管理员密码可在 fnOS 安装向导中直接设置;修复前台在统一网关前缀下接口全部失效;口令哈希改异步、登录不再阻塞其它请求;优惠券按下单与支付分三态流转,未付款不再作废;首装不再预置收款码
1.0.029 内部迭代 新增可调工作线程数(1–16,默认 4),文件读写、加密与压缩改为在线程池内并行;数据落盘改为原子替换,异常中断不再留下半截文件
1.0.028 内部迭代 管理后台入口加强鉴权,系统域名下的后台地址默认封堵;技术支持会话权限隔离
1.0.027 内部迭代 访问码改为全局唯一、永久可见、可开关
1.0.026 内部迭代 修复网关前缀下新页面一律 Not Found;修复升级后未重启、仍在运行旧代码;新增快速技术支持与通知横幅
1.0.025 内部迭代 安全修复版本:收紧统一网关身份判定、移除内置默认账号、堵住安装向导的命令注入与越权
1.0.024 内部迭代 修复登录限流误报;密码恢复收敛为 fnOS 统一网关登录态校验,归属账号自动登记
1.0.023 已上架 · 第 2 次 相对上次发布的 1.0.019 累计的改动:静态资源严格白名单、清除兜底默认口令、版本号统一为单一来源、密码恢复改走 fnOS 统一网关、人机验证收敛为滑动拼图,并修复滑动验证的多处缺陷
1.0.022 内部迭代 修复滑动验证无法触发(服务端与滑轨坐标系未换算);商品分类改为可自定义与删除
1.0.021 内部迭代 密码恢复改用 fnOS 统一网关;人机验证只保留滑动拼图;最低系统版本提升到 1.1.3100
1.0.020 内部迭代 静态资源改为严格白名单;清除兜底默认口令;版本号统一为单一来源;赞赏码;人机验证逻辑抽成共享模块
1.0.019 已上架 · 首次 首个上架版本,修复安装向导中修改密码无效的问题

表中标注「内部迭代」的版本号只在本机使用,未提交上架;1.0.013 – 1.0.018 同样是发布前的内部编号。

升级建议

  • 数据量较大时,升级前先手动做一次数据快照
  • 跨多个版本升级时,建议逐段对齐更新说明中的行为变更
  • 涉及入口地址或登录方式的变更,升级后请重新确认一次访问路径

想先确认它是否适合你的场景

把使用场景和商品规模说明一下,我们会直接告诉你合适或不合适。