snipe-it

A free open source IT asset/license management system

snipe-it

项目简介

Snipe-IT 是一款功能强大且完全免费的开源 IT 资产管理系统,专为 IT 运维团队设计。它能够帮助企业追踪硬件设备(如笔记本电脑、显示器、服务器)、管理软件许可证、记录资产采购信息,并自动计算资产折旧。作为 IT 资产管理领域(ITAM)的明星项目,Snipe-IT 在 GitHub 上已获得超过 13,000 颗星标,证明了其在全球范围内的广泛认可和使用。

Snipe-IT 界面概览

该项目基于 Laravel 12 框架开发,采用 PHP 语言编写,提供了完整的 Web 界面和 RESTful API。Snipe-IT 支持跨平台部署,可在 macOS、Linux 和 Windows 系统上运行,同时也提供了官方 Docker 镜像,方便快速部署和容器化管理。无论您是小型创业公司的 IT 管理员,还是大型企业的资产管理负责人,Snipe-IT 都能提供灵活的解决方案来满足您的需求。


核心功能与架构

资产管理核心功能

Snipe-IT 的资产管理模块是其最核心的功能,涵盖了资产全生命周期的管理需求。系统支持多种资产类型的追踪,包括但不限于硬件设备、配件、耗材和组件。每个资产记录包含丰富的字段信息,如资产标签、序列号、品牌型号、采购日期、保修期限、当前位置、当前使用人等。这些信息的集中管理让您能够随时掌握企业资产的完整状况。

资产登记过程非常简单直观。管理员可以通过 Web 界面手动添加新资产,也可以利用 CSV 批量导入功能快速录入大量资产数据。对于需要频繁同步外部系统数据的用户,Snipe-IT 提供了开放的 REST API,支持与 Jamf、Kandji、Mosyle、UniFi 等第三方系统进行数据同步。

许可证管理

软件许可证管理是 IT 合规的重要组成部分,Snipe-IT 为此提供了专门的管理模块。管理员可以记录企业购买的所有软件许可证,包括许可证名称、供应商、购买数量、已使用数量、到期日期等关键信息。系统会自动计算剩余可用许可证数量,当使用量接近购买上限时会发出提醒,帮助您避免因许可证超用而产生的法律风险和额外成本。

Snipe-IT Star 历史增长趋势

借还流程与审批

Snipe-IT 内置了完整的资产借还管理功能。用户可以通过系统提交资产借用申请,管理员审批通过后完成借用登记,归还时再执行归还操作。系统会详细记录每一次借用的时间周期、使用人和归还状态,确保资产流转的可追溯性。对于需要门禁管理的场景,社区还开发了专门的门禁系统集成方案。

折旧计算与报表

资产折旧是企业财务管理的重要环节。Snipe-IT 支持自定义折旧规则,可以根据不同类型的资产设置不同的折旧年限和折旧方法。系统会自动计算每项资产的当前净值,并生成相应的财务报表。这些报表可以帮助财务部门进行年度预算规划和资产清算工作。

多语言与国际化

作为一个全球化的开源项目,Snipe-IT 提供了完善的多语言支持。目前已有超过 30 种语言翻译可用,涵盖了中文、日语、韩语、德语、法语、西班牙语等主要语种。中国用户可以直接使用简体中文界面,无需额外的语言配置。


快速上手

环境要求

在开始安装 Snipe-IT 之前,请确保您的服务器满足以下基本要求:

  • PHP 8.1 或更高版本
  • MySQL 8.0+ 或 MariaDB 10.5+
  • PHP 扩展:BCMath、Curl、GD、JSON、MBString、OpenSSL、PDO、XML、Zip
  • Composer 包管理器
  • Web 服务器:Apache、Nginx 或 Caddy

Docker 快速部署(推荐)

对于希望快速体验或简化部署流程的用户,Docker 是最便捷的选择。首先确保您的服务器已安装 Docker 和 Docker Compose,然后创建 docker-compose.yml 配置文件:

version: '3.8'
services:
  snipe-it:
    image: snipe/snipe-it:latest
    container_name: snipe-it
    restart: always
    ports:
      - "8080:80"
    environment:
      - APP_ENV=production
      - APP_DEBUG=false
      - APP_KEY=<your-app-key-here>
      - DB_HOST=db
      - DB_DATABASE=snipeit
      - DB_USERNAME=snipeit
      - DB_PASSWORD=<your-db-password>
    volumes:
      - snipeit_data:/var/www/html/storage
    depends_on:
      - db
  db:
    image: mysql:8.0
    container_name: snipe-mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=<your-root-password>
      - MYSQL_DATABASE=snipeit
      - MYSQL_USER=snipeit
      - MYSQL_PASSWORD=<your-db-password>
    volumes:
      - snipeit_db:/var/lib/mysql

volumes:
  snipeit_data:
  snipeit_db:

生成应用密钥后,使用以下命令启动服务:

# 生成应用密钥
openssl rand -base64 32

# 编辑配置文件,填入您的密钥和数据库密码
vim docker-compose.yml

# 启动 Snipe-IT
docker-compose up -d

# 查看容器状态
docker-compose ps

服务启动后,访问 http://your-server-ip:8080 即可进入 Snipe-IT 的 Web 安装向导。按照界面提示完成数据库连接配置和管理员账户创建后,即可开始使用。

传统方式安装

如果您更倾向于传统部署方式,可以按照以下步骤进行:

# 克隆项目仓库
git clone https://github.com/grokability/snipe-it.git
cd snipe-it

# 安装 PHP 依赖
composer install --no-dev --optimize-autoloader

# 复制环境配置文件
cp .env.example .env

# 编辑 .env 文件,配置数据库连接
vim .env

# 生成应用密钥
php artisan key:generate

# 设置存储目录权限
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

# 运行数据库迁移
php artisan migrate --force

# 创建管理员账户
php artisan snipeit:create-admin --email="admin@example.com" --password="your-password" --first_name="Admin" --last_name="User"

配置 Nginx 作为 Web 服务器时,需要添加以下站点配置:

server {
    listen 80;
    server_name your-domain.com;
    root /var/www/snipe-it/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location /storage {
        alias /var/www/snipe-it/storage/public;
    }

    error_page 404 /index.php;
}

首次配置与初始化

首次登录系统后,建议按照以下顺序完成基础配置:

  1. 创建资产类别:进入「设置」→「资产类别」,添加您需要管理的设备类型,如「笔记本电脑」「显示器」「服务器」等。

  2. 配置自定义字段:进入「设置」→「自定义字段」,根据企业需求添加额外的资产属性字段,如「资产部门」「采购合同号」等。

  3. 导入现有资产:通过「批量导入」功能上传 CSV 文件批量创建资产记录。Snipe-IT 提供了导入模板下载,确保数据格式正确。

  4. 设置用户权限:为不同角色的用户配置相应的访问权限,普通用户可能只需要查看资产和提交借用申请的权限。

使用场景

中小企业 IT 资产管理

对于员工数量在 50 到 500 人的中小企业,IT 资产管理的需求往往集中在设备登记、借还追踪和软件许可证合规三个方面。Snipe-IT 的直观界面让 IT 管理员可以快速上手,无需专业培训即可完成日常资产管理工作。当有新员工入职时,管理员可以在系统中快速查询可用设备并完成分配登记;当员工离职时,也能清楚地了解其名下资产的归还情况。

IT 资产盘点与审计

年度资产盘点是许多企业必须完成的合规工作。传统方式需要员工逐项填写纸质表格,IT 管理员再逐条录入电子表格,效率低下且容易出错。使用 Snipe-IT 后,可以通过移动端或扫码设备快速定位每件资产,确认资产状态并更新位置信息。系统会自动生成盘点报告,大大简化了审计流程。

软件许可证合规管理

软件版权合规是当前企业 IT 管理的重要议题。使用 Snipe-IT 的许可证管理功能,企业可以清晰掌握每种软件的实际使用量与购买数量之间的差距。当某个许可证即将到期或使用量接近上限时,系统会提前发出预警,帮助 IT 部门及时续费或采购,避免因许可证不足导致业务中断。

与 MDM 系统集成

对于管理大量 macOS 设备的企业,通常会使用 Jamf、Kandji 或 Mosyle 等 MDM(移动设备管理)解决方案。Snipe-IT 社区提供了专门的同步工具,可以自动将 MDM 系统中的设备信息同步到 Snipe-IT,保持资产数据的实时性和准确性,减少手工维护的工作量。

注意事项

数据备份策略

任何生产环境系统都应建立完善的备份机制。对于 Snipe-IT,备份应包含两个部分:数据库备份和文件备份。建议配置每日自动备份,并将备份文件存储到与生产服务器物理隔离的位置。使用 Docker 部署时,可以通过添加备份容器或挂载网络存储来实现自动化备份:

# 数据库备份命令
docker exec snipe-mysql mysqldump -u snipeit -p<password> snipeit > backup_$(date +%Y%m%d).sql

# 文件备份(包含上传的资产图片和附件)
tar -czf snipeit_files_$(date +%Y%m%d).tar.gz /path/to/snipe-it/storage

安全加固建议

部署 Snipe-IT 时,安全配置至关重要。首先,务必将 .env 文件中的 APP_DEBUG 设置为 false,避免生产环境暴露敏感调试信息。其次,建议配置 HTTPS 访问,使用 Let's Encrypt 免费证书即可满足安全需求。此外,定期更新 Snipe-IT 到最新版本可以获得安全补丁和新功能,社区版本更新相对频繁,通常每月都会有小版本发布。

性能优化

当资产记录数量达到数万条时,系统的响应速度可能会受到影响。可以通过以下方式优化性能:启用 PHP OPcache 扩展、配置 MySQL 查询缓存、为常用查询字段添加数据库索引、定期清理系统日志。对于超大规模部署(资产记录超过 10 万条),建议使用专用的数据库服务器,并考虑配置 Redis 缓存层。

权限管理最佳实践

合理配置用户权限是保障数据安全的基础。建议遵循最小权限原则,普通员工只授予「查看资产」和「申请借用」的权限;部门 IT 管理员可以授予「管理本部门资产」的权限;只有系统管理员才拥有完整的管理功能。此外,建议定期审查用户账户,及时移除离职员工的访问权限。

总结

Snipe-IT 作为开源 IT 资产管理领域的标杆项目,凭借其丰富的功能、友好的界面和活跃的社区支持,已经帮助全球数万家组织实现了资产管理的数字化转型。从基础的设备登记到复杂的许可证合规管理,从单机部署到 Kubernetes 集群化运维,Snipe-IT 都能提供相应的解决方案。

对于正在寻找资产管理系统但预算有限的企业,Snipe-IT 无疑是一个极具性价比的选择。您可以直接使用其提供的在线演示环境(https://snipeitapp.com/demo/)亲身体验各项功能,也可以参考官方文档(https://snipe-it.readme.io/docs)完成自托管部署。更重要的是,作为一个开源项目,您可以自由修改源代码以适应企业的特殊需求,同时也可以通过 GitHub Issues 或 Discord 社区与其他用户交流使用心得,共同推动项目的发展。

项目信息

项目
仓库 grokability/snipe-it
语言 PHP
Star 13,858
Fork 3,845
主页 https://snipeitapp.com

参考链接