用 Snipe-IT 管好全公司 2000 台设备:开源 IT 资产追踪的部署与配置
2026/9/11 4:20:43 网站建设 项目流程

用 Snipe-IT 管好全公司 2000 台设备:开源 IT 资产追踪的部署与配置

【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it

IT 部门的设备交接如果靠 Excel 和口头登记,很快会变成一团乱账:谁手里有什么设备说不清,盘点一次伤筋动骨。Snipe-IT 是一套可以自托管的开源资产管理系统,把台账、借还流转、标签盘点都搬进一个 Web 系统里,扫码就能定位到设备。

它是什么 / 技术栈

Snipe-IT 定位是 IT 运维用的资产台账 + 软件许可管理系统:管硬件的采购、分配、归还、折旧,管软件 license 的席位,管耗材和配件。它不是 CMDB——没有自动发现 agent,设备信息靠人工录入、CSV 导入或 API 写入;也不做工单和故障流程。技术栈是 Laravel 12 + PHP 8.2 + MySQL/MariaDB,前端为 Blade 模板配 Livewire 交互和少量 Vue,仓库自带 docker-compose.yml(app 镜像snipe/snipe-it+ mariadb:11.4.7 两个容器)一键起服务,另有 Vagrant 和 Dockerfile 供裸机部署。项目托管在 GitCode,clone 地址见下文部署一节。

能力地图:按资产工作流走

设备入库与台账

  • 批量导入走 UI 的 Import Assets 页(Livewire 组件 app/Livewire/Importer.php),CSV 先行预览、逐行校验,坏行会被 ImportRowRejected 拒绝并给出原因,不会整批回滚后重传。
  • 资产标签自动编号在 Settings → Asset Tags 配置:打开 auto-increment、设前缀(如LAP-),之后扫码入库只需填序列号,标签号系统生成。
  • 台账结构是 model / category / supplier 三套字典,hardware 列表页 直接按型号和状态标签(Settings → Status Labels 自定义,如"可用/借出/维修中")过滤。

借还与生命周期流转(设备生命周期管理)

  • 分配/回收是明确的状态机:自助申领走 CheckoutRequest 模型(请求 → 管理员批准/拒绝/取消,状态枚举见 app/Enums/CheckoutRequestState.php),每一次动作都落 actionlog 表,资产详情页的 History 板块就是这条日志。
  • EULA 电子签收:Settings → EULA 勾选后,设备借出时用户必须打开签收页点同意,签收记录存 checkout_acceptances 表——这是审计时"用户知情"的直接证据。
  • 三类易混物要分清楚:consumable(耗材,借出不还)、accessory(配件,随机流转可归还)、component(共享部件,带库存数量),三种流转规则不同,建台账前先定义清楚。
  • 维护记录挂在设备页(/hardware/{id}/maintenances),可关联维护类型(routes/web/ 下有独立维护类型管理),折旧报表单独出。

盘点与合规审计(资产盘点二维码)

  • 标签打印:Settings → Labels 里选模板(可带 logo、公司名),labels 路由 批量出 PDF,二维码里编码的是资产详情页 URL。
  • 审计报表:/reports/audit 出审计报表,/reports/depreciation 出折旧报表,报表页都有 CSV 导出入口(routes/web.php 中 reports 段)。
  • 软删除而非物理删除:删除资产会留痕在 actionlog,审计导出时删过的设备也能追溯。

集成与扩展(LDAP 用户同步)

  • LDAP/AD:Settings → LDAP 配好连接后,同步命令是php artisan snipeit:ldap-sync(源码 app/Console/Commands/LdapSync.php),按 location 的 base_dn/filter 圈范围,加--delete清理离职用户。
  • SCIM 用户/组 provisioning:routes/scim.php 单独挂载,可对接 IdP。
  • REST API:routes/api.php 下/api/v1,认证走 Laravel Passport OAuth 或 personal access token,token 入口在个人账号页 Account → API。

🚀 从零到可用

开发环境 5 分钟跑通

本地装好 PHP 8.2 + Composer 后,以下命令序列即可:

git clone https://gitcode.com/GitHub_Trending/sn/snipe-it cd snipe-it composer install cp .env.example .env php artisan key:generate && php artisan migrate php artisan serve

生产环境 3 个必改配置

用 docker-compose 起(cp .env.docker .env后填值,docker-compose up -d),必改项如下:

配置项路径不改的后果
数据库连接(DB_HOST/DB_DATABASE/DB_USERNAME 等).envapp 容器连不上 compose 里的 mariadb 服务,启动即报连接失败
APP_ENV=production + APP_DEBUG=false.env报错页直接暴露堆栈和配置细节
HTTPS 反代docker/001-default-ssl.conf登录态、API token 明文走 HTTP,等同裸奔
邮件 SMTPconfig/mail.php +.env借出通知、EULA 签收邮件发不出去,用户侧流程断在半路

⚠️ 踩坑与取舍

  • 标签扫码打开 127.0.0.1→ 原因:QR 编码的是资产页 URL,APP_URL还是开发时的 localhost → 解法:.env里把APP_URL改成外网域名,php artisan config:cache清缓存后重印受影响批次
  • LDAP 首次同步只进来一小部分人→ 原因:snipeit:ldap-sync按 location 上配置的 base_dn/filter 圈范围,默认 filter 容易漏 OU → 解法:先带--summary干跑核对数量,确认无误再正式同步。
  • 开了 multi-company 后列表"缩水"→ 原因:启用完整多公司后所有查询自动加公司 scope,没挂公司的旧资产直接不可见 → 取舍:不用多公司就别开;要开就先把存量资产补齐公司归属。
  • 标签前缀/零填充位数改动→ 一旦改了 auto-increment 的前缀或补零位数,旧标签与新编号体系不匹配,扫旧标签 404 → 解法:格式要变就整批重印,别新旧混用。

适合谁 / 不适合谁

适合:有自有服务器、设备量从几百到几千台、已有 AD/LDAP 的中小企业;硬件 + 软件许可 + 耗材混合的 IT 团队;需要给财务出折旧/审计证据的场景。 不适合:想要多租户 SaaS 的——它的"多公司"是数据 scope 不是隔离边界;想要 K8s 原生 stateless 部署的——官方形态就是 compose + 有状态 MariaDB;想要自动发现的 CMDB——没有内置 agent,录入靠人工、CSV 或 API。

建议先在 staging 跑一周"导入 → 借出 → 印标签 → 扫码盘点"全流程,确认标签扫码跳转的 URL 前缀和打印模板都没问题,再上生产。更多背景看 README.md。

【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询