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