Snipe-IT开源IT资产管理系统Docker部署实战:3个阶段从零跑通到稳定运维
Snipe-IT开源IT资产管理系统Docker部署实战:3个阶段从零跑通到稳定运维
【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it
Snipe-IT 是一款免费开源的 IT 资产与许可证管理系统,专门解决设备散落各地、授权说不清、表格对不上账的乱象。它自带 Web 管理界面、CSV 批量导入和完整的借出归还流程。读完本文,你将用 3 个阶段完成 Docker 部署、初始化配置和日常运维,亲手把第一批资产录入系统。
先对号入座:你正经历的"资产失控"时刻
问问自己这几个问题,是不是有点眼熟:
- 同事问"测试机现在在谁手上",你翻了三个表格才敢回话;
- 软件许可证买了几十套,快到期、超量使用完全没感知;
- 换一次电脑,资产清单就要手工改一遍,还经常漏改。
这些痛点,正是 Snipe-IT 的用武之地。它是一个自托管的开源方案,数据完全归你掌控,配合 Docker 部署,十几分钟就能从零跑通。接下来我们按"起跑准备 → 第一次点亮 → 长期运转"三个阶段推进,每个阶段都有明确的可交付结果。
第一阶段:起跑准备——只做三件事
这个阶段的目标只有一个:确认环境可用、代码到位、文件结构心里有数。
1. 检查 Docker 家底
先确认机器上有没有 Docker 和 Compose 插件:
docker --version docker compose version第一条命令确认 Docker 引擎存在,第二条确认 Compose 插件可用。若提示 command not found,用系统包管理器安装,以 Ubuntu 为例:
sudo apt update && sudo apt install -y docker.io docker-compose-v2 sudo systemctl enable --now docker安装后重新执行上面的版本检查,直到两条命令都有输出。
2. 拉取项目代码
在一个干净的目录里克隆仓库:
git clone https://gitcode.com/GitHub_Trending/sn/snipe-it cd snipe-it这条命令把完整源码拉到本地,其中就包含后面要用的docker-compose.yml、docker/目录和.env.example模板。
3. 摸清两个关键文件
先看根目录的docker-compose.yml,它声明了两个服务:
| 服务 | 镜像 | 职责 |
|---|---|---|
| app | snipe/snipe-it | Web 应用(Apache + PHP),对外暴露端口 |
| db | mariadb:11.4.7 | 数据库存储,含健康检查,app 依赖它启动 |
再看docker/docker.env,这是环境变量模板。划重点:数据库连接、密钥、邮件等参数都在这里配置,而不是改 compose 文件本身。接下来生成专属配置,就是第二阶段的事了。
第二阶段:第一次点亮——把系统跑起来
本阶段目标:完成配置、启动容器、登录后台并录入手边第一批数据。
1. 生成应用密钥 APP_KEY
Snipe-IT 是 Laravel 应用,必须有一把 32 字节的随机密钥,否则启动即报错。用下面命令直接生成带前缀的完整值:
echo "base64:$(openssl rand -base64 32)"这条命令利用系统自带的 openssl 产生随机串,输出结果整行复制,稍后粘进.env。
2. 编写 .env 配置
复制模板并编辑:
cp docker/docker.env .env用你习惯的编辑器打开.env,重点确认以下变量:
APP_KEY=base64:上面生成的完整密钥 APP_URL=http://你的服务器IP:8080 APP_TIMEZONE=Asia/Shanghai DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=snipeit DB_USERNAME=snipeit_user DB_PASSWORD=换成强密码 MYSQL_ROOT_PASSWORD=再换一个更强的 MAIL_MAILER=smtp MAIL_HOST=smtp.example.com MAIL_PORT=587 MAIL_FROM_ADDR=notify@example.com各项含义逐一说清:
APP_KEY:上一步生成的密钥,缺失会直接启动失败;APP_URL:你访问系统的地址,务必与浏览器输入保持一致,否则邮件里的链接会指向错误域名;DB_HOST=db:注意,这里填的是 compose 里数据库服务的名字,容器间通过服务名互相访问,不是 IP;APP_TIMEZONE:影响资产到期、维护提醒的计算,强烈建议一开始就设好;- 邮件配置可先填占位值,上线前再替换。
3. 启动并确认状态
docker compose up -d-d让容器在后台运行。紧接着用两条命令盯紧启动过程:
docker compose ps docker compose logs -f appps查看两个服务是否都在运行;logs -f实时滚动应用日志。首次启动会执行数据库迁移、生成初始数据,日志末尾出现 Supervisor 启动完成之类的字样,就说明 Web 服务就绪了。
坑位预警:如果ps显示 app 反复重启,八成是APP_KEY没配对,或DB_HOST写成了 IP。改回db、重设密钥后执行docker compose up -d --force-recreate app即可。
4. 登录后台,录入手边数据
浏览器打开http://你的服务器IP:8080,用默认账号登录:
- 用户名:
admin@example.com - 密码:
password
注意:登录后第一件事,去"我的资料"里改掉默认密码,这个账号是超管,暴露在公网上后果很严重。
然后按这个顺序录入基础数据,每完成一项都立即可见:
- 厂商:先建"联想""戴尔"这类供应商,资产归属才有出处;
- 分类:区分笔记本、显示器、服务器、软件授权;
- 状态标签:定义"可用""维修中""已报废"等流转状态;
- 用户:导入同事账号,后续才能把设备分配到人头。
图:录资产时给设备拍下现场照片,Snipe-IT 会在维护记录里留存这些图片,作为报修和定损的依据。
如果历史资产很多,别一条条手敲。下载sample_csvs/assets-sample.csv作为模板,参照表头填好数据,在后台"导入"页面选择文件上传,几千条资产几分钟就能进库。这一步做完,你的资产系统就不再是空壳了。
第三阶段:长期运转——上线后的运维基本功
本阶段目标:数据不丢、随时能查、坏了会修、版本能升。
1. 把数据留在宿主机
默认配置用 Docker 命名卷db_data和storage持久化,容器删了数据也还在。若想更直观地备份,可以在docker-compose.yml里改成目录挂载:
volumes: - ./data/db:/var/lib/mysql - ./data/storage:/var/lib/snipeit改完执行docker compose up -d重建,之后数据库文件与上传文件都会落在宿主机./data/下,拷目录就等于拷备份。
2. 每周一次的安全巡检
- 看资源占用:
docker stats,关注 app 与 db 的 CPU 和内存曲线; - 看异常日志:
docker compose logs --since 24h app,扫一眼有没有报错刷屏; - 换端口、套反代:默认 8080 端口别直接暴露公网,建议前面加一层 Nginx 反向代理并挂上 HTTPS 证书。
3. 备份与恢复,两分钟走一遍
数据库是核心资产,用一条命令落库:
docker compose exec db sh -c 'exec mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE"' > snipeit_backup_$(date +%F).sql这条命令把整个资产库导成 SQL 文件存到宿主机,配合定期 cron 执行即可实现自动化备份。恢复时反过来灌回去:
docker compose exec -T db sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE"' < snipeit_backup_2026-08-14.sql注意:恢复前先停止 app 服务,避免写入冲突。
4. 升级:三步完成、风险可控
官方会持续发布新镜像,升级前先备份,然后按序执行:
docker compose exec app php artisan backup:run # 应用内完整备份 docker compose pull snipe/snipe-it # 拉取新版本镜像 docker compose up -d # 用新镜像重建容器 docker compose exec app php artisan migrate --force # 执行数据库迁移迁移命令会按新版本要求更新表结构,完成后刷新页面验证资产数据是否完好。
5. 两个高频问题速查
症状一:邮件一直发不出去。先确认.env里MAIL_*五项都填对了,再进入容器用自检命令验证:
docker compose exec app php artisan snipeit:test-email 收件人地址症状二:上传图片报"文件过大"。检查.env里的PHP_UPLOAD_LIMIT,默认值偏小时改成100M,改完重启 app 容器生效。
6. 进阶:缓存提速与监控告警
资产量过万、后台明显变慢时,可以把缓存驱动切到 Redis:在 compose 里加一个 redis 服务,再在.env中设置CACHE_DRIVER=redis、SESSION_DRIVER=redis并指向对应主机名。日常监控则可以用docker stats采集容器指标,配合外部监控平台做告警,这一步按需选做即可。
收尾:现在轮到你了
回顾一下三个阶段的成果:环境就绪 → 系统点亮并录入了首批资产 → 备份、升级、排障流程全部跑通。整套流程走完,你的团队终于不用再对着三张对不上账的 Excel 开会了。
如果第一次启动就卡住,多半出在密钥或数据库连接上,回到对应章节对照一遍即可。今天就打开终端,把第一行命令敲下去——你的资产清单,值得一个真正能查、能管、能追溯的系统。
【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
