InvenTree开源库存管理系统:免费自建的条码盘点与BOM管理,快速部署指南
【免费下载链接】InvenTreeOpen Source Inventory Management System项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree
月底盘库,货架上堆着的料和表格里记的对不上:某颗电阻到底还剩多少、在哪个库位、是哪个批次进来的,没人说得清。Excel 管库存的问题不在这张表本身,而在它每天都在和现实脱节。
InvenTree 是一个 MIT 协议的开源库存管理系统:免费、可以完全自建,把零件(Part)、库存(Stock)、采购/销售订单(Order)和构建(Build)放在一套数据库里管理,条码、批次、序列号开箱即用。如果你正在搜"库存管理系统推荐",又想要一个能自己掌控数据的方案,它值得放进候选名单。
它是怎么工作的:一个 Django 后端 + 一个 React 前端
不用记太多名词,记住三句话就够了。
第一,整个系统就是一个 Django 应用。Python 3.12+ 写的后端,按业务域拆成一个个标准 Django app(零件、库存、订单、插件、报表……),对外暴露的是一套完整的 REST API——你在网页上能做的每一件事,API 里也都能做到,这是后面接入自动化脚本的关键。
第二,前端是 React + TypeScript,用 Vite 构建,界面组件来自 Mantine,数据请求走 TanStack Query。前端只负责展示和交互,所有业务逻辑都在后端,所以移动端 App 也是直接调这套 API。
第三,耗时的活交给后台 worker。发通知、生成报表、算价格这类慢任务,由 Django Q 的后台进程慢慢跑,网页请求不会被卡住。
一句话架构:浏览器(或手机 App)→ 反向代理 → Django API → 数据库;旁边挂一个 Redis 缓存和几个后台 worker。数据库支持 PostgreSQL(官方推荐)、MySQL/MariaDB、SQLite 三选一,部署架构文档里有完整的流程图。
它能帮你做什么:从扫一个码开始
三步完成一次条码盘点
InvenTree 里每个零件、库存项、库位、采购单都会自动生成一条内部条码,你也可以给条目附加外部条码(比如供应商印的)。盘点流程大致是这样:
- 网页右上角点扫码图标,选一种输入方式——摄像头、扫码枪或键盘手输;
- 扫一下,浏览器直接跳转到对应条目,数量、库位、状态一目了然;
- 在"扫描页"里还可以连续扫码并批量执行动作,比如把扫出来的库存项一次性转移到新库位。
表单里的关联字段也支持扫码填入(用户偏好里开启即可),所以"扫码枪 + 浏览器"就是一套便宜的 PDA 方案。配合官方移动端 App(Android/iOS),仓库里走动盘点也是扫着走的。更多细节见条码使用文档。
批次与序列号:查得到"这一颗从哪来"
库存项要么按批次记、要么按序列号记,两种都支持。批次项关心数量和过期日期(保质期可配置,临期能提醒);序列号项精确到单个实物,适合追踪高价值器件。每一条调整、转移、状态变更都有记录,配合条码扫描历史,出问题时能一路查到源头。
BOM与替代料管理:构建订单直接按清单领料
零件模块里的 BOM 是"层级 + 用量"的模型:父件挂子件,每个子件有默认用量,还能配置替代料(alternate part)。构建订单(Build)基于 BOM 展开出完整的领料清单,分配库存、产出成品,整条链路不离开系统。BOM 文档和构建流程把从创建订单到产出成品的每一步都讲清楚了。
采购收货与销售出库:订单驱动库存变动
采购单(PO)走"下单 → 收货 → 转库存";销售单(SO)走"分配库存 → 发货";退货单(RO)处理逆向流程。订单上每个条目都关联到具体的库存项,所以库存数字永远是"有单据依据的",而不是手工改出来的。采购文档和销售文档分别覆盖了这两条线的操作细节。
零件一侧还有两层能力:供应商零件(SupplierPart)把多个供应商的料号、单价、交期挂在同一个零件下比价;参数模板(Parameter Template)给零件挂自定义规格字段,表格视图里直接对比。再配合 CSV 批量导入导出,几百个料号不用一条条敲。
第一次把它跑起来:最短部署路径
如果你只要先"跑起来看看",官方给了一条命令的安装脚本(支持若干常见 Linux 发行版,细节见安装器文档):
wget -qO install.sh https://get.inventree.org && bash install.sh更主流、也最适合生产的方式是 Docker Compose。仓库里contrib/container/目录自带一份开箱即用的编排文件:PostgreSQL 17 + InvenTree 服务 + 后台 worker + Caddy 反向代理 + Redis 缓存,五个容器一起拉起,对外只有 80/443。所有配置都走 .env 文件(数据库账号、外部数据卷路径、版本 tag 等),不用改 compose 文件本身。所有持久化数据——数据库、附件、生成的报表、静态文件——落在同一个外部卷里,备份就是把一个目录搬走。
- 想省事:用上面的安装脚本或 Docker 部署指南;
- 想自己掌控每个组件:看裸机部署;
- 想在本地开发玩源码:开发环境搭建和 devcontainer 配置都有现成步骤。
如何按需扩展:插件、API 和该看哪些目录
插件系统在哪扩展。后端插件是一个个 Django app,通过 mixin 声明自己具备哪些能力:条码、标签打印、导出、通知、货币汇率、机器(标签打印机)等等。仓库里 plugin/builtin/ 就是官方插件全家桶——DigiKey/Mouser/LCSC 的条码解析、汇率查询、邮件与 Slack 通知、BOM 导出、标签打印。想写自己的插件,插件开发文档有一个从新建到注册到启用的完整 walkthrough,每种能力的写法都在 mixins 文档里分册讲过。
API 在哪看。整个系统对外是一套带文档的 REST API,网页右上角就能打开浏览。API 文档按实体拆成零件、库存、公司、订单、报表等 schema 章节,还提供了一个 Python 模块,写自动化脚本时直接 import 用,不用手搓 HTTP 请求。
目录地图(改代码或找配置时按图索骥):
| 路径 | 内容 |
|---|---|
| src/backend/InvenTree/ | 后端 Django 应用:part、stock、order、build、plugin、report 等 app |
| src/frontend/ | React 前端源码 |
| docs/docs/ | 完整文档源码 |
| contrib/container/ | 生产级 Docker Compose 与 Caddy 配置 |
| contrib/installer/ | 一键安装脚本的源码 |
配置项很多,但不需要记:配置参考列出了每个环境变量和全局设置的作用,网页设置页里也能直接改大部分。
哪些团队适合用(以及不适合谁)
🔧电子/硬件制造团队:料号多、供应商多、批次要求严,BOM + 替代料 + 序列号追溯这套组合拳正中痛点,DigiKey/Mouser 这类元件商条码还有现成插件。
📦中小仓库与电商备货:多库位、多批次、按过期日期管理,采购收货和销售出库都走单据,库存数字有账可查;条码盘点把人工核对的时间压到最低。
🔬研发实验室与原型团队:器件领用、样品序列号追踪、参数化对比,比 Excel 可靠,又不需要上一套重型 ERP。
一句话说明它不适合谁:InvenTree 聚焦库存与物料,不是完整 ERP——财务总账、生产排程(APS)、人力资源这些它不管。如果你的核心需求是财务和排产,它只是拼图里的一块;如果核心需求就是"物料和库存管清楚",它基本就是一整套。需要说明的是,在开源 ERP 的讨论里它常被当作"轻量替代"来推荐,前提是接受这个边界。权限管理(角色 + 细粒度权限)、多因素认证、审计日志这些企业向能力它都内置了,详见权限文档与安全说明。
社区与路线图:现在维护得怎么样
项目当前版本线是 1.6.0(仓库内标记为 dev 的迭代版),生产用户拉stabletag 的 Docker 镜像即可,MIT 协议,商用无授权费。维护节奏从仓库能直接看出来:前后端都有自动化测试(前端用 Playwright 做 UI 回归),CI 里挂了覆盖率(Codecov)和代码质量(SonarCloud)检查,界面翻译通过 Crowdin 支持 40 多种语言,移动端 App 双端上架。
近期方向写在路线图里,两条主线:
- 1.0:把新的 React 前端彻底定型(移除旧模板渲染)、稳定 API 以支持自动生成客户端、固化数据导入导出机制;
- 2.0:重构权限体系以支持更复杂的组织结构,以及更通用的文件处理。
社区入口就是仓库的 Issue 区(roadmap 标签)和文档站的讨论入口,功能请求和 bug 都走公开流程。
一句话决策 + 官方资源
如果你需要完全自建的库存管理,核心诉求是物料、条码盘点、BOM 和批次追溯,并且能接受"自己运维"这件事,InvenTree 是目前开源选项里功能完整度和工程化程度都比较高的一个——先按 Docker 路径在测试机上跑一个实例,用一个真实项目的零件数据导进去验证半天,再决定要不要上生产。
官方资源(均在仓库内,文档随源码更新):
- 完整文档:docs/docs/(部署、API、插件、报表全部在内)
- 部署指南:docs/docs/start/docker.md · docs/docs/start/bare_prod.md
- 插件开发入口:docs/docs/plugins/index.md
- 后端源码:src/backend/InvenTree/
- 前端源码:src/frontend/
- 从源码运行:
git clone https://gitcode.com/GitHub_Trending/in/InvenTree后按 docs/docs/start/bare_dev.md 操作
【免费下载链接】InvenTreeOpen Source Inventory Management System项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考