Snipe-IT 是什么?为什么你需要它
Snipe-IT 是一个 开源免费的 IT 资产管理系统(IT Asset Management, ITAM),基于 Laravel 12 (PHP) 构建,采用 AGPL-3.0 许可证。它在 GitHub 上拥有 超过 1 万颗 Star,是全球最受欢迎的开源资产管理工具。
💡 核心场景:你的团队里有 10 台笔记本、5 个显示器、20 个软件许可证——谁在用哪台设备?哪个许可证快过期了?什么时候该折旧报废?用 Excel 管迟早乱成一团。Snipe-IT 就是为了解决这些问题而生的。
核心功能一览
| 功能 | 说明 |
|---|---|
| 📦 硬件资产管理 | 笔记本电脑、服务器、手机、显示器等设备的完整生命周期追踪 |
| 🔑 许可证管理 | 软件许可证的购买日期、过期提醒、座位数追踪 |
| 🖱️ 配件管理 | 鼠标、键盘、网线等消耗品库存追踪 |
| 📋 借用/归还 | 资产 checkout 给员工,checkin 时记录状态和备注 |
| 📊 折旧计算 | 自动按年/月计算资产折旧价值 |
| 🔌 REST API | 完整的 JSON API,可集成 Jenkins、Ansible、Jamf 等工具 |
| 🌐 多语言 | 支持 40+ 种语言(包括中文) |
| 📱 移动端适配 | 响应式 Web 界面,手机也能管理资产 |
Snipe-IT vs 商业方案
| 对比维度 | Snipe-IT(自部署) | Snipe-IT Cloud | JAMF Pro | Freshservice |
|---|---|---|---|---|
| 费用 | 完全免费 | $399/年起 | ~$100/设备/年 | ~$49/人/月 |
| 数据主权 | 你的服务器,你掌控 | 云端托管 | 云端托管 | 云端托管 |
| 自定义程度 | 完全可定制 | 有限 | 高 | 中 |
| 部署难度 | Docker 一键部署 | 免部署 | 需配置 MDM | SaaS 即用 |
| 适合规模 | 10-1000+ 台设备 | 10-500 台 | 50+ Apple 设备 | 50+ 人团队 |
Docker 一键部署
Snipe-IT 官方提供了 Docker 镜像,使用 Docker Compose 可以在 5 分钟内完成部署。
环境要求
- Docker 20+ 和 Docker Compose 2+
- 至少 2GB RAM(推荐 4GB)
- 10GB 可用磁盘空间
步骤 1:创建项目目录
mkdir -p ~/snipe-it && cd ~/snipe-it
步骤 2:编写 Docker Compose 文件
创建 docker-compose.yml:
version: '3.8'
services:
snipeit-db:
image: mysql:8.0
container_name: snipeit-db
environment:
MYSQL_ROOT_PASSWORD: rootpassword123
MYSQL_DATABASE: snipeit
MYSQL_USER: snipeit
MYSQL_PASSWORD: snipeit_password_456
volumes:
- db-data:/var/lib/mysql
restart: always
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
snipeit:
image: snipe/snipe-it:latest
container_name: snipe-it
ports:
- "8080:80"
environment:
# 数据库配置
DB_HOST: snipeit-db
DB_DATABASE: snipeit
DB_USERNAME: snipeit
DB_PASSWORD: snipeit_password_456
# 应用配置
APP_KEY: base64:CHANGE_ME_GENERATE_KEY
APP_ENV: production
APP_DEBUG: false
APP_URL: http://localhost:8080
APP_TIMEZONE: Asia/Shanghai
APP_LOCALE: zh-CN
# 邮件配置(可选)
MAIL_PORT_587_TCP_ADDR: smtp.example.com
MAIL_PORT_587_TCP_PORT: 587
MAIL_ENV_FROM_ADDR: admin@yourcompany.com
MAIL_ENV_FROM_NAME: Snipe-IT Admin
MAIL_ENV_ENCRYPTION: tls
MAIL_ENV_USERNAME: admin@yourcompany.com
MAIL_ENV_PASSWORD: your-email-password
depends_on:
snipeit-db:
condition: service_healthy
volumes:
- snipeit-images:/var/lib/snipeit
restart: always
volumes:
db-data:
snipeit-images:
⚠️ 重要:
APP_KEY不能随意填写!需要先生成。
步骤 3:生成 APP_KEY
# 启动一个临时容器来生成密钥
docker run --rm snipe/snipe-it:latest php artisan key:generate --show
# 输出类似:base64:abcdef1234567890...
# 将输出值替换到 docker-compose.yml 中的 APP_KEY
步骤 4:启动服务
docker compose up -d
# 查看日志确认启动状态
docker compose logs -f snipeit
步骤 5:访问 Web 界面
浏览器打开 http://localhost:8080,会进入安装向导:
- 检查环境要求(全部绿色 ✓)
- 创建管理员账户(用户名、邮箱、密码)
- 完成!进入仪表板
🔒 生产环境建议:使用 Nginx 反代 + Let's Encrypt HTTPS 证书,将
http://localhost:8080改为https://snipeit.yourcompany.com。
快速上手:5 步开始管理资产
安装完成后,按以下步骤快速录入第一批资产。
步骤 1:设置公司信息和品牌
进入 Admin → Settings → Branding,上传公司 Logo、设置站点名称和默认时区。
步骤 2:创建资产分类
Snipe-IT 按分类组织资产。进入 Admin → Categories 创建:
| 分类名 | 类型 | 用途 |
|---|---|---|
| 笔记本电脑 | Asset | MacBook、ThinkPad 等 |
| 显示器 | Asset | 外接显示器 |
| 软件许可证 | License | Office、Adobe 等 |
| 配件 | Accessory | 鼠标、键盘、网线 |
| 消耗品 | Consumable | 打印纸、墨盒 |
步骤 3:添加硬件资产
进入 Assets → New Asset,填写:
资产名称: MacBook Pro 14" M3
资产标签: MBP-2026-001 ← 这是唯一标识符,建议按规则编号
分类: 笔记本电脑
状态: Ready to Deploy(待部署)
位置: 总部办公室
购买日期: 2026-03-15
购买价格: ¥14,999
供应商: Apple Store
保修截止: 2029-03-15
型号: MacBook Pro 14-inch M3 Pro
序列号: C02XXXXX
步骤 4:分配给员工(Checkout)
在资产详情页点击 Check Out:
分配给: 用户(需先在 People 中创建)
预计归还日期: 2027-03-15(可选)
备注: 研发部新项目使用
发送通知邮件: ✓
员工收到邮件后确认接收,资产状态变为 Deployed。
步骤 5:批量导入
有 Excel 表格?Snipe-IT 支持 CSV 批量导入:
- Admin → Import → Download CSV Template
- 用模板填写资产数据
- 上传 CSV 文件
- 预览并确认映射字段
- 点击 Import
进阶功能实战
1. 资产折旧自动计算
Snipe-IT 支持多种折旧模型,帮你实时了解资产当前价值。
进入 Admin → Depreciations 创建折旧规则:
名称: 电脑 3 年直线折旧
月份: 36(3 年)
折旧类型: 直线折旧
然后在资产上关联此规则,系统会自动计算:
| 时间 | 原始价值 | 折旧后价值 | 备注 |
|---|---|---|---|
| 2026-03 | ¥14,999 | ¥14,999 | 刚购买 |
| 2027-03 | ¥14,999 | ¥9,999 | 使用 1 年 |
| 2028-03 | ¥14,999 | ¥4,999 | 使用 2 年 |
| 2029-03 | ¥14,999 | ¥0 | 折旧完毕 |
2. 许可证管理 & 过期提醒
软件许可证到期了没人知道?Snipe-IT 帮你盯着。
添加许可证:
名称: Microsoft 365 Business
许可证密钥: XXXX-XXXX-XXXX-XXXX
座位总数: 25
已分配: 18
购买日期: 2026-01-01
过期日期: 2027-01-01
供应商: Microsoft
购买价格: ¥1,288/用户/年
当许可证即将过期时,系统会: - 📧 发送邮件提醒管理员 - 🔴 仪表板显示红色警告 - 📊 报表中突出显示
3. 自定义字段 — 记录任何你需要的信息
Snipe-IT 允许为每个分类添加自定义字段:
# 通过 Admin → Custom Fields 添加
字段名 类型 格式
CPU 型号 文本
内存大小 文本
操作系统 下拉列表 macOS, Windows, Linux
资产归属部门 下拉列表 研发部, 产品部, 设计部
内网 IP 地址 文本 ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
4. 报表与审计
Snipe-IT 内置多种报表:
- 资产清单报表 — 所有资产的完整列表,支持按状态/位置/分类筛选
- 折旧报表 — 按时间段统计资产折旧情况
- 未分配资产报表 — 闲置资产一览,避免"买了没人用"
- 许可证过期报表 — 即将到期的软件许可证
- 审计报表 — 资产检查历史,谁在什么时间确认了什么状态
5. API 集成实战
Snipe-IT 提供完整的 REST API,可以用 curl 或任何 HTTP 客户端调用。
获取 API Token: 进入 Profile → Generate API Token
查询所有资产:
curl -X GET "https://snipeit.yourcompany.com/api/v1/hardware" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
创建新资产:
curl -X POST "https://snipeit.yourcompany.com/api/v1/hardware" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Dell XPS 15",
"asset_tag": "DELL-2026-001",
"model_id": 3,
"status_id": 1,
"rtd_location_id": 1,
"purchase_date": "2026-07-30",
"purchase_cost": "9999.00",
"serial": "SN123456789"
}'
集成到 CI/CD 流程 — 比如新员工入职时自动创建资产记录:
#!/usr/bin/env python3
"""新员工入职自动创建 IT 资产记录"""
import requests
SNIPE_URL = "https://snipeit.yourcompany.com/api/v1"
API_TOKEN = "YOUR_API_TOKEN"
def onboard_employee(name, email, asset_tag, model_id=1):
"""为新员工分配笔记本电脑"""
headers = {
"Accept": "application/json",
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json",
}
# 1. 创建用户
user = requests.post(f"{SNIPE_URL}/users", headers=headers, json={
"first_name": name.split()[0],
"last_name": name.split()[-1],
"username": email.split("@")[0],
"email": email,
})
if user.status_code != 200:
print(f"创建用户失败: {user.text}")
return
user_id = user.json()["payload"]["id"]
# 2. 分配资产
checkout = requests.post(
f"{SNIPE_URL}/hardware/{asset_tag}/checkout",
headers=headers,
json={"assigned_user": user_id}
)
if checkout.status_code == 200:
print(f"✅ {name} 已成功分配资产 {asset_tag}")
else:
print(f"❌ 资产分配失败: {checkout.text}")
# 使用示例
onboard_employee("张三", "zhangsan@company.com", "MBP-2026-015")
日常运维
备份数据库
# 导出数据库
docker exec snipeit-db mysqldump -u snipeit -psnipeit_password_456 snipeit > \
~/backup/snipeit-$(date +%Y%m%d).sql
# 导出持久化数据卷
tar czf ~/backup/snipeit-images-$(date +%Y%m%d).tar.gz \
/var/lib/docker/volumes/snipe-it_snipeit-images/
升级 Snipe-IT
cd ~/snipe-it
# 拉取最新镜像
docker compose pull snipeit
# 重新创建容器
docker compose up -d snipeit
# 检查版本
docker exec snipe-it php artisan snipeit:version
常见问题排查
| 问题 | 解决方案 |
|---|---|
| 页面 500 错误 | 检查 docker compose logs snipeit,查看 Laravel 错误日志 |
| 数据库连接失败 | 确认 DB_HOST 是 snipeit-db(容器名),且数据库已就绪 |
| 邮件不发送 | 检查 SMTP 配置,确认防火墙未阻止 587 端口 |
| APP_KEY 错误 | 重新生成 key,确认格式为 base64:xxxx |
| 上传文件失败 | 检查 snipeit-images 数据卷挂载权限 |
为什么 Snipe-IT 值得长期投入
Snipe-IT 自 2013 年开源以来,已经持续开发了 13 年,GitHub 上贡献者超过 500 人。相比 Excel 表格或商业 SaaS 方案,它的优势在于:
- 零许可费用 — 自建服务器即可使用,无用户数限制
- 完全数据自主 — 所有资产数据保存在你自己的服务器上
- 活跃的社区 — Discord 社区和论坛有大量用户分享经验
- 丰富的集成生态 — JAMF、Kandji、Jira、Google Workspace 等官方/第三方集成脚本
- 可扩展性强 — 从 10 台到 10,000 台设备都能胜任
如果你正在用 Excel 管公司资产,或者觉得商业 ITAM 太贵,Snipe-IT 是最务实的选择。
- 🌐 官网: snipeitapp.com
- 📦 GitHub: grokability/snipe-it
- 📖 文档: snipe-it.readme.io
- 💬 社区: Discord
- 🐳 Docker Hub: snipe/snipe-it