3条命令跑起Snipe-ITDocker部署IT资产管理系统实操指南【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it新同事领了台笔记本三个月后没人说得清序列号是多少一批软件许可证下月到期Excel 里还是去年的台账。设备、许可、维护记录各躺一份表格对不上又不敢删是不少 IT 团队的日常。Snipe-IT 就是为这个场景做的开源 IT 资产与许可证管理系统谁在用哪台设备、什么时候买的、该不该折旧、许可还剩几个席位一个后台全查得到。它的 Docker 部署只涉及两个容器十分钟能跑起来这篇把流程和日常维护一次讲清。项目能力速览 硬件资产全生命周期管理采购、分配、归还、维修、报废都有完整流转记录软件许可证管理席位占用一目了然到期自动邮件预警维护工单与配件、耗材、组件管理支持多公司、多位置数据隔离邮件通知、LDAP/SAML 登录、SCIM 用户同步和完整的 JSON REST API上图展示的是 Snipe-IT 演示资料里的 IT 资产设备场景提醒一件很实际的事资产和配件入库前型号库和资产型号库要先建起来后续分配和折旧才有依据。部署前准备 先确认三件事宿主机装了 Docker Engine 和 Compose v2建议 2 核 CPU、2GB 起步内存10GB 可用磁盘上传文件多就放宽计划开放的端口默认 8000避免和已有服务冲突代码和镜像各拉一次就行git clone https://gitcode.com/GitHub_Trending/sn/snipe-it cd snipe-it cp docker/docker.env .env第一条克隆源码第二条进入目录第三条把配置模板复制成.env——后续 Compose 和容器都只认它。模板里大部分项不用动必须改的是三个DB_USERNAME、DB_PASSWORD、DB_DATABASE决定数据库容器怎么初始化APP_PORT决定你从外面访问的端口APP_URL决定系统往外发邮件、生成链接时用哪个地址写错的话通知里的地址全不对。核心部署流程 配置改完就可以拉起整套服务第一次跑会自动拉应用和数据库两个镜像docker compose up -d这条命令做启动和初始化两件事db 容器是 MariaDB 11.4先过健康检查才放行app 容器起来后自动跑数据库迁移和基础初始化不用手动执行。之所以这样设计是因为 Compose 里给 app 配了depends_on加健康检查数据库没就绪时应用只会等不会连到一半报错。稍等片刻用下面这行确认状态正常输出里 app 和 db 两个容器都显示 Updb 带 healthydocker compose ps再看一眼启动日志正常能翻到 Laravel 的迁移完成记录docker compose logs -f app最后打开浏览器访问http://localhost:8000能看到登录页部署就算成了用初始化提示的账号登进去第一件事就是改掉默认密码。关键配置详解 ⚙️生产环境先把 APP_KEY 换掉Laravel 的会话加密全靠它模板里是个占位值别直接上生产。生成一条填进.envecho APP_KEYbase64:$(openssl rand -base64 32) .env顺便把APP_DEBUGfalse、APP_ENVproduction打开不然页面报错了会把内部细节直接吐给访问者。改完docker compose up -d app重建才生效。HTTPS证书丢进存储卷改两行路径把 crt 和 key 放到宿主机./storage/ssl/目录它挂载进容器的/var/lib/snipeit/ssl/再打开 docker/001-default-ssl.conf把SSLCertificateFile和SSLCertificateKeyFile指向你的两个文件然后docker compose up -d app之所以证书要放存储卷而不是改镜像是因为卷会持久化证书到期换文件就行不用动任何配置。配好 SMTP让预警邮件真正发出去资产到期、许可快用完、归还提醒都靠邮件推出去改这几个变量就够MAIL_HOSTsmtp.example.com MAIL_PORT587 MAIL_USERNAMEassetyour-domain.com MAIL_PASSWORDyour-mail-passwordLDAP、SAML 这类认证对接不在.env里登进后台的设置页填服务器和 Base DN 就能用调不通时用snipeit:ldap-troubleshooter命令定位问题。缓存默认够用用户多再上 Redis默认CACHE_DRIVERfile、SESSION_DRIVERfile中小规模不用动。用户多、并发上来了再加个 Redis 服务改两行CACHE_DRIVERredis SESSION_DRIVERredis REDIS_HOSTredis这里有个坑.env只在容器启动时读一次改完记得docker compose up -d app重建光 restart 不生效。备份内置命令加一条定时任务Snipe-IT 带备份命令数据库和上传文件会一起打包进挂载的存储卷宿主机上找个位置定期拉走就行0 3 * * * docker -f /path/to/snipe-it/docker-compose.yml exec -T app php artisan snipeit:backup保留策略由DAILY_BACKUP_KEEP_DAYS、WEEKLY_BACKUP_KEEP_WEEKS等变量控制默认值偏保守磁盘紧张就调小。日常运维与问题定位 日志、健康检查与版本升级怎么巡检日常就四件事确认两个容器状态翻应用日志跑一次数据库健康检查和备份。串成一条命令每天或挂个定时任务执行docker compose ps docker compose logs --tail 100 app | grep -i -E error|exception ; \ docker compose exec app php artisan snipeit:healthcheck ; \ docker compose exec app php artisan snipeit:backup升级流程把.env里APP_VERSION改成目标版本不写就是 latest生产建议锁版本号然后docker compose pull docker compose up -d app登录后台执行数据库迁移即可。想回滚就把版本号改回去再重建一次配合迁移前的备份基本没有风险。高频问题按现象直接查db 容器一直 unhealthy、app 反复重启基本是.env里数据库凭据没配对核对MYSQL_ROOT_PASSWORD和DB_*五项是否都填了且互相对得上补全后docker compose up -d重建。上传图片报权限错误原因是容器以 UID 10000 用户运行宿主机挂载卷属主不对sudo chown -R 10000:50 storage升级后登录态异常、API 突然 401多是APP_KEY没跟上镜像里的新密钥docker compose exec app php artisan snipeit:rotate-app-key进阶能力与生态集成 跑通之后Snipe-IT 的 JSON REST API 可以直接被内部系统调用snipeit:make-api-key生成个人访问令牌即可接入用户认证支持 LDAP、SAML 和 SCIM第三方集成基本都围绕这套 API 做。想深入定制可以看控制器目录里的业务实现以及 app/Console/Commands/ 下 59 个内置命令批量修复、导入导出都有现成入口。到这里Snipe-IT 的 Docker 部署和日常维护就齐了。接下来值得做的几件事锁定APP_VERSION建立固定升级节奏把备份真正拉出宿主机保管再观察一周的容器日志找异常模式。往后接 LDAP 统一登录、用 API 把资产数据同步进内部平台都是自然的方向。【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考