☰
Snipe-IT 快速上手:3 条命令搭建开源 IT 资产与许可证管理系统
2026/9/25 3:25:35 网站建设 项目流程

Snipe-IT 快速上手:3 条命令搭建开源 IT 资产与许可证管理系统

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

Snipe-IT 是一款开源的 IT 资产管理与软件许可证管理系统,用 Laravel 构建。它记录谁手里有什么设备、何时采购、还差多少许可证席位,帮 IT 运维团队把散落的资产变成一本清楚的账。本文用 2 个 Docker 容器、5 条命令带你把它从零跑到可用。

🚀 先跑起来:最小启动路径

第 1 步:获取代码。官方提供 Docker 镜像,不需要本地 PHP 环境,仓库里只有 Compose 编排文件。

git clone https://gitcode.com/GitHub_Trending/sn/snipe-it cd snipe-it

第 2 步:生成环境变量文件。仓库里的 docker/docker.env 是官方模板,应用和数据库两个服务都靠它启动。

cp docker/docker.env .env

第 3 步:填写必填项。模板里基础配置是注释掉的,取消注释并填好 4 类值:APP_KEY、APP_URL、数据库库名/账号/密码。

APP_KEY=base64:xxxx... # 生成方法见下文"踩坑急救" APP_URL=http://127.0.0.1:8000 DB_DATABASE=snipeit DB_USERNAME=snipeit DB_PASSWORD=your_strong_password

第 4 步:启动容器。Compose 里定义了 app 和 db 两个服务,首次启动会等数据库健康检查通过再拉起应用。

docker compose up -d docker compose ps # 预期两个服务都是 running/healthy

第 5 步:创建管理员并登录。镜像启动脚本会自动执行php artisan migrate建表,建好库后执行:

docker compose exec app php artisan snipeit:create-admin \ --first_name=Admin --last_name=User \ --email=admin@example.com --password=ChangeMe123

浏览器打开http://127.0.0.1:8000,用刚才的邮箱密码登录,能看到资产、许可证、维护计划等模块即部署成功。

⚙️ 它是怎么工作的

整个系统只有 2 个容器,关系简单:

  • Laravel 12 + PHP 8.2(见 composer.json):应用框架,资产、许可证、配件等 50 多个模型都定义在app/Models/下
  • app 容器:官方snipe/snipe-it镜像,内置 Apache,对外映射 8000 端口
  • db 容器:mariadb:11.4.7,存所有业务数据
  • 命名卷:db_data挂 MySQL 数据目录,storage挂/var/lib/snipeit,存上传文件和备份,容器删了数据还在
  • docker/startup.sh:入口脚本,负责检查APP_KEY、创建 20 多个上传子目录、执行migrate --force建表、缓存配置,最后启动 Apache

前端交互由 Livewire 4 驱动,REST API 由 Laravel Passport 提供,备份由 spatie/laravel-backup 支撑——这三者分别对应"界面能动、接口能调、数据能备"。

🔧 关键配置详解

6 个真正影响使用效果的配置项,都在.env里:

  1. APP_KEY:Laravel 的加密密钥。不配它容器直接拒绝启动(startup.sh 里是硬退出)。什么时候改:密钥泄露后,用docker compose exec app php artisan snipeit:rotate-key轮换。
  2. APP_PORT:对外端口,默认 8000。8000 被占时改APP_PORT=8080,重启即生效,不用动任何代码。
  3. DB_HOST / DB_PASSWORD:数据库连接。容器网络里数据库主机名固定是db;改密码后必须同步更新,否则应用启动时连不上库。
  4. MAIL_HOST 等 MAIL_组*:不配不会报错,但许可证到期提醒、归还到期通知都不会发出去。有 SMTP 服务器就填上。
  5. CACHE_DRIVER / SESSION_DRIVER:默认都是file。单容器跑没问题;以后扩到多副本时改成database或接 Redis,否则会话和缓存不共享。
  6. PHP_UPLOAD_LIMIT:单位 MB。startup.sh 启动时会按它重写upload_max_filesize和post_max_size,批量导入大 CSV 前建议设成100。

🚑 踩坑急救

问题 1:容器启动就退出,日志显示要求提供 APP_KEY

现象:docker compose logs app出现Please re-run this container with an environment variable $APP_KEY。 原因:模板里 APP_KEY 是注释状态,没填或填了空值。 解决:

docker compose exec app php artisan key:generate --show

把输出(形如base64:xxxx)写进.env的APP_KEY=,再执行docker compose up -d。

问题 2:访问 8000 端口打不开

现象:浏览器访问http://127.0.0.1:8000连接被拒或 502。 原因:要么 8000 端口已被本机其他服务占用,要么 db 还没通过健康检查、app 仍在等待。 解决:

docker compose ps # 确认 db 是 healthy 再排查

若确认是端口占用,在.env加一行APP_PORT=8080后执行docker compose up -d即可。

问题 3:上传资产图片/附件失败

现象:上传超过几 MB 的文件时返回 413 或 PHP 尺寸限制错误。 原因:PHP 默认upload_max_filesize很小,批量导入 CSV 也常踩这个坑。 解决:.env里设置PHP_UPLOAD_LIMIT=100,重启容器,启动脚本会自动改好 php.ini。

📈 跑通之后

  • 备份:docker compose exec app php artisan snipeit:backup --force生成备份包,恢复到snipeit:restore,备份文件落在 storage 卷里
  • 数据校验:定期跑snipeit:validate-assets检查资产记录合法性,snipeit:counter-sync校准资产关联计数
  • 安全:改初始管理员密码;生产环境确认APP_DEBUG=false;密钥轮换用snipeit:rotate-key
  • 扩展:需要对接 MDM 时,系统内置 Jamf、Kandji 等同步适配器,用snipeit:pull-inventory拉取设备清单;用户目录可接 LDAP,跑snipeit:ldap-sync同步

从克隆仓库到登录管理界面,核心操作就是 5 条命令。先把它跑起来,再决定要不要接 LDAP、配 SMTP 或开 REST API——Snipe-IT 的每一步扩展都是可选的,随时可以开始。

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

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

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

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

立即咨询