Docker 部署 Snipe-IT 完整教程:自建开源的 IT 资产管理系统
Snipe‑IT是什么?
一款开源、面向 IT 与固定资产的 Web 资产管理系统
拥有完善的简体中文界面,全球社区活跃、生态成熟,支持设备台账登记、序列号与保修管理、二维码标签生成、资产领用归还、配件耗材、软件 License 管控、折旧核算、权限管理、SSO/LDAP 登录以及 REST API 对接;采用 Laravel 开发,依赖 MySQL/MariaDB 数据库,适合运维、小团队用来统一管理电脑、服务器、网络设备、数码硬件等资产,自带审计日志与多维度报表。
为什么用?使用场景
小公司,有一些ECS,域名,证书等需要管理,经常过期了都不知道,一旦停机,引起的损失和客诉很严重,所以部署snipe-it用于资产和许可证期限管理,及时通知ECS,域名等过期时间
典型场景距离:
运维机房IT资产盘点:登记服务器、交换机、防火墙、UPS,记录SN、MAC、机房机位、维保到期时间,生成二维码贴设备,巡检扫码核对,到期自动提醒维保
公司办公电脑/外设管理:笔记本、台式机、显示器、键鼠、打印机登记到人,员工入职分配、离职回收,全程留审计日志,方便盘点和追责
软件License授权管控:记录Office、设计软件、虚拟化授权密钥、授权总数、到期时间,防止超量授权、忘记续费
研发团队工具设备台账:开发板、示波器、测试仪器、相机、移动硬盘,记录存放位置、借用人,避免工具丢失、找不到责任人
固定资产财务对账:录入采购价格、启用日期,按规则自动折旧,导出资产报表给财务对账,盘点核对账面资产
门店/分支机构跨地点资产管理:按仓库、门店、办公室划分位置,区分多地资产,总部统一查看、下发盘点清单
外包/驻场人员设备管控:临时给外包人员分配设备,项目结束一键回收,跟踪设备流转
配件耗材库存管理:电源、内存条、硬盘、网线等配件绑定主资产,记录库存,配件领用消耗可追溯
家庭/个人数码收藏台账:相机、镜头、游戏机、耳机、显示器,记录购买渠道、保修、发票附件,方便整理和出二手时查询信息
教育学校机房电脑管理:按班级、机房分组,记录电脑配置,学期初分配、期末盘点,统计故障设备
image-20261104232353571功能特性
资产全台账管理:录入设备型号、序列号、SN、MAC、存放位置、购买日期、保修到期日、供应商、价格、图片附件
二维码/条形码生成打印:每一项资产自动生成标签,手机扫码快速查看、盘点
资产领用归还流程:支持分配给用户、:支持分配给用户、归还、转移,完整审计日志,记录操作人、时间
软件许可证管理:单独管理授权密钥、授权数量、到期时间,避免超授权使用
配件与耗材管理:显示器、电源、网线等配件绑定主资产,跟踪库存消耗
资产折旧计算:内置多种折旧方式,自动计算资产净值,生成财务相关报表
多用户细粒度权限:管理员、普通用户、盘点员等角色,控制查看/编辑/审批权限
RESTful API:支持脚本、自动化工具对接,批量导入导出资产数据
邮件提醒:保修到期、许可证到期、资产待归还自动发通知
自定义字段:根据需求新增字段,适配服务器、相机、家电等不同类型资产
分类、部门、位置结构化管理:树形归类,适合机房、办公室多地点盘点
Github项目地址:https://github.com/snipe/snipe-it
在线体验Demo:https://demo.snipeitapp.com/
image-20261104232748409安装部署Snipe‑IT
1、准备环境
mkdir /opt/snipe-it /opt/snipe-it/snipe-uploads /opt/snipe-it/snipe-private
cd /opt/snipe-it
挂载数据目录说明:
a. snipe-uploads(公有文件存储)
资产图片、资产型号图
分类、厂商、部门、位置的图标 / 图片
用户头像
系统 Logo、自定义页面图片
二维码 / 条码临时生成图片
注:浏览器可以直接公开访问,适合图片类资源
b. private_uploads(私有附件)
发票 PDF、保修合同、说明书、驱动包、许可证书
软件 License 密钥附件、EULA 协议文件
盘点审计附件、导入的 CSV 文件、签字回执
注:不能直接外网访问,需要登录鉴权才能下载,非常重要
支持的数据库类型:MySQL 5.7+、MariaDB(推荐 MariaDB 10.11+)
2、Docker Compose配置
使用已有数据库
Docker Compose配置:
services:
snipeit:
image: snipe/snipe-it:latest
container_name: snipeit
restart: unless-stopped
ports:
- "8090:80"
env_file: .env
volumes:
- ./snipe-uploads:/var/www/html/public/uploads
- ./snipe-private:/var/www/html/storage/private_uploads
.env配置示例
APP_KEY=base64:eW6GpjpczaRZtvUGeQdRfwjPapgKdG85wKpG7QLlJXc=
APP_URL=http://192.168.50.111:8090
APP_LOCALE=zh-CN
APP_TIMEZONE=Asia/Shanghai
DB_CONNECTION=mysql
DB_HOST=DBIP
DB_DATABASE=snipe
DB_USERNAME=root
DB_PASSWORD=123456
DB_ROOT_PASS=123456
修改数据库配置:
DB_CONNECTION=mysql
DB_HOST=DBIP
DB_DATABASE=snipe
DB_USERNAME=root
DB_PASSWORD=123456
DB_ROOT_PASS=123456
APP_KEY使用终端工具生成,加上base64前缀,命令如下:
openssl rand -base64 32
不适用已安装的数据库,附带单独数据库配置
version: '3.8'
services:
snipeit:
image: snipe/snipe-it:latest
container_name: snipeit
restart: unless-stopped
ports:
- "8090:80"
env_file: .env
depends_on:
- snipe-db
volumes:
- ./snipe-uploads:/var/www/html/public/uploads
- ./snipe-private:/var/www/html/storage/private_uploads
networks:
- snipe-net
snipe-db:
image: mariadb:10.11
container_name: snipe-db
restart: unless-stopped
volumes:
# 这里改为Docker命名卷 snipe-db-data
- snipe-db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASS}
- MYSQL_DATABASE=snipeit
- MYSQL_USER=snipe
- MYSQL_PASSWORD=${DB_PASSWORD}
networks:
- snipe-net
networks:
snipe-net:
# 在最底部声明这个命名卷
volumes:
snipe-db-data:
启动应用
docker compose up -d
3、Docker命令行
1)下载Docker镜像
docker pull snipe/snipe-it:latest
2)使用Docker命令行启动容器
docker run -d
--name snipeit
--restart unless-stopped
--network 你的数据库网络名
-p 8090:80
--env-file .env
-v ./snipe-uploads:/var/www/html/public/uploads
-v ./snipe-private:/var/www/html/storage/private_uploads
snipe/snipe-it:latest
Snipeit使用教程
1、初始化
使用http://服务器IP:8090登录
image-20261104233859794首先进行应用预检,检查配置是否正确、数据库表是否创建
创建管理员用户
image-20261104234317806设置界面语言、默认货币
image-202611042344406952、录入一些基础数据
通过设置维护字典,通过导入CSV数据
image-20261105000816827示例:
制造商:联想、戴尔、华硕、索尼等品牌
分类:笔记本、显示器、服务器、镜头、耳机、软件许可、耗材
资产型号:同一型号统一建一条,后续资产绑定型号(统一规格、图片、参数)
位置:机房、办公室、家里书房、储藏柜(支持树形层级)
状态标签:闲置、已领用、维修中、报废、待验收(可以设置不同颜色标记)
以制造商为例,导入事先准备好的CSV文件
image-20261105001131115点击导入按钮
image-20261105001303484选择已上传的数据文件,点击操作
选择导入类型,制造商
image-20261105001357092
image-20261105001500344类似的,导入分类、位置、标签状态等字典基础数据
image-20261105002453664自定义字段(非常好用)
设置→自定义字段,新增: 例:保修截止日期、购买渠道、发票编号、校准日期、硬盘 SN、固件版本
邮件通知(可选)
设置→通知,配置 SMTP;到期保修、归还提醒自动发邮件
3、资产入库
资产入库有两种方式
手动新增:顶部【新建→资产】 必填:资产标签(内部盘点编号,自定义编码,比如 IT-001)、型号、状态;序列号、购买价格、保修、附件(发票 PDF)按需填
CSV 批量导入(大量资产首选) 【工具→导入】,下载官方模板,填好 SN、标签、型号、价格,一键导入,适合历史台账迁移
技巧:资产图片放型号里,同型号所有资产共用一张图,减少重复上传
4、领用 / 归还
资产详情页 → 【借出】,分配给用户 / 某个位置,填写备注,自动写入审计日志
回收时点【归还】,记录归还时间、状态(是否故障)
审计日志:谁拿的、什么时候借出、什么时候归还,不可删除
5、库存盘点
使用二维码 / 条码盘点
单资产:资产详情页直接打印二维码
批量打印:勾选多个资产 → 批量操作 → 生成标签 PDF
手机浏览器直接扫码打开资产卡片,现场盘点、修改状态、登记故障,不需要单独 APP
6、许可证管理
新建→许可证,录入:授权名称、密钥、总授权数、允许使用次数、最少数量、到期时间、供应商等, 然后分配给用户
系统统计已使用授权数量,防止超授权
7、耗材
新建→配件:内存条、电源、网线、硬盘,绑定主资产,记录库存、领用消耗 和普通硬件资产区分:配件不独立做借出流程,只做库存消耗
使用技巧
1、增大上传限制(发票、大图上传报错)
修改图片大小
PHP_UPLOAD_LIMIT=100M
2、搜索过滤技巧
列表页可以自定义显示列:勾选 SN、保修日期、价格、位置,隐藏无关字段
保存常用筛选:比如【保修 30 天内到期】【已借出资产】【报废资产】,一键切换看板
顶部全局搜索:支持资产标签、序列号、备注、型号模糊检索
3、高效运维
初始化、维护一次录入数据比较多,可使用脚本+API方式,更高效
自带 REST API,可以脚本批量新增资产、同步盘点结果、对接监控平台;大量运维玩家写脚本自动录入服务器硬件信息
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
