Snipe-IT 开源资产管理:10 步 Docker 部署实战,半小时搭好企业 IT 资产台账
Snipe-IT 开源资产管理:10 步 Docker 部署实战,半小时搭好企业 IT 资产台账
【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it
"张工的笔记本是几号买的?合同在哪?Windows 授权还剩几台?"——如果你常被这类问题问住,说明该给公司 IT 资产建台账了。Snipe-IT 就是干这个的开源系统:免费、自带 Web 界面、内置完整的资产领用/归还/维修/折旧流程,还能管软件许可证。今天这份实战指南,带你用 Docker 把它跑起来,从零到能用,全程可复制。
🗂️ 60 秒速览:它到底解决什么问题
先搞清楚"买它是为了什么"。Snipe-IT 是一款基于 Laravel 的 IT 资产与许可证管理系统,核心就三件事:
| 维度 | 说明 |
|---|---|
| 管什么 | 电脑、服务器、配件等硬件资产,以及软件许可证 |
| 解决什么 | 谁在用、在哪、何时购买、是否折旧、何时到期 |
| 给谁用 | 中小团队 IT 管理员、运维、行政负责资产的人员 |
| 怎么跑 | Web 应用,浏览器访问;推荐 Docker 部署 |
| 技术栈 | PHP / Laravel + MySQL(MariaDB) |
| 亮点能力 | 扫码领用、CSV 批量导入、审计追踪、邮件提醒、REST API |
说白了:它是一张活的"公司资产户口本",每台设备从采购入库到报废全程留痕,告别 Excel 表格改来改去、版本混乱的旧日子。
✅ 小结:如果贵司有"设备常找不到、授权数不清、维修没记录"任一痛点,Snipe-IT 就值得一试。
📋 开工前检查单:逐项核对再动手
先别急着敲命令,把下面几条过一遍,能省掉后面 80% 的坑:
- 服务器/电脑已装Docker与Docker Compose(
docker --version、docker compose version能输出版本号) - 机器内存 ≥ 2GB(Laravel + MariaDB 同时跑,1GB 会很吃力)
- 放行计划使用的外部端口(默认
8000) - 准备好一个可用的邮箱 SMTP 账号(可以后配,但通知功能依赖它)
- 想清楚域名或访问地址(
APP_URL要填它,别用默认值糊弄)
⚠️ 注意:Snipe-IT 是 Web 系统,不是桌面软件,没有 exe,全靠浏览器访问,部署目标是"能打开网页"。
🚀 首次跑通:三行命令启动,五分钟见界面
下面是最短路径,跟着走就能看到登录页。
第一步:拉取代码与配置文件
# 克隆项目(仓库地址固定,直接用) git clone https://gitcode.com/GitHub_Trending/sn/snipe-it cd snipe-it # 复制环境模板 cp docker/docker.env .env第二步:改三个必填项
打开.env,至少改这三处,否则容器起不来或登录报错:
# 应用密钥:必填。32 位随机串,可用下一条命令生成 APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 数据库:账号密码自己定,但要和后面 MariaDB 一致 DB_DATABASE=snipeit DB_USERNAME=snipeit_user DB_PASSWORD=你的强密码 MYSQL_ROOT_PASSWORD=另一个强密码 # 访问地址:换成你的服务器 IP 或域名,别留 localhost APP_URL=http://你的IP:8000 # 对外端口:默认 8000,想换就改 APP_PORT APP_PORT=8000💡 提示:APP_KEY用下面的命令生成,base64:前缀要一起粘进.env,这一步缺了容器会立刻退出:
# 不启动容器,只生成密钥(Compose 会自动构建镜像,等待时间取决于网络) docker compose run --rm app php artisan key:generate --show第三步:启动整套服务
# 后台拉起 app + db 两个容器 docker compose up -d # 看启动状态,等 db 变 healthy、app 不再重启 docker compose ps # 盯日志,看到 "Supervisord started successfully" 就绪 docker compose logs -f app启动完成后浏览器访问http://你的IP:8000,用默认账号登录:
| 项 | 值 |
|---|---|
| 用户名 | admin@example.com |
| 密码 | password |
🔥 警告:登录后第一时间在右上角改掉管理员密码,这组默认凭据是公开的,等于家门没锁。
✅ 小结:最小路径 = 拉代码 → 改
.env三个必填项 →up -d→ 登录改密。到此系统已经能用。
⚙️ 进阶定制:让它真正"好用"的六个配置
跑起来只是开始,下面这些配置决定它是"玩具"还是"生产工具"。
1. 数据持久化(默认就有,但要懂原理)
docker-compose.yml里声明了db_data和storage两个数据卷:数据库文件、上传的图片、备份全在里面。容器删了重建,数据还在——这正是 Docker 方案比裸装省心的原因。想映射到宿主机目录方便备份,把 volumes 改成:
volumes: - ./data/db:/var/lib/mysql - ./data/storage:/var/lib/snipeit2. 放大上传限制(不配的后果:传大图/文档直接报错)
默认 PHP 上传上限很小,在.env追加一行再docker compose restart app:
PHP_UPLOAD_LIMIT=100M容器启动脚本会自动改写php.ini里的upload_max_filesize和post_max_size,不用进容器手改。
3. 邮件通知(不配的后果:领用确认、到期提醒全部哑火)
MAIL_MAILER=smtp MAIL_HOST=smtp.你的域名.com MAIL_PORT=587 MAIL_USERNAME=你的邮箱 MAIL_PASSWORD=你的邮箱密码 MAIL_FROM_ADDR=发件地址 MAIL_FROM_NAME=发件人名称配完用内置命令自测,通了再上线:
docker compose exec app php artisan snipeit:test-email 收件人@example.com4. 定时任务(不配的后果:到期提醒永远不会触发)
系统靠 cron 驱动"许可证到期、资产审计、库存预警"等扫描任务,容器镜像里已内置调度,确保容器以restart: unless-stopped常驻即可,不要手动docker stop后长期不拉起。
5. CSV 批量导入(新手上线最快路径)
手工录几百台设备会疯。用模板sample_csvs/assets-sample.csv参照表头(资产标签、型号、分类、供应商、位置、购买日期、价格……)整理数据,在"管理 → 导入"上传即可。要点:先建好分类/厂商/型号/用户,再导入资产,否则导入会因外键找不到而失败。
6. HTTPS(生产环境必须做)
把证书放到 storage 卷的ssl目录,重启容器后启动脚本会自动启用 Apache SSL:
# 证书放入持久化目录(容器内路径 /var/lib/snipeit/ssl/) docker compose exec app mkdir -p /var/lib/snipeit/ssl docker compose cp 你的证书.crt app:/var/lib/snipeit/ssl/snipeit-ssl.crt docker compose cp 你的私钥.key app:/var/lib/snipeit/ssl/snipeit-ssl.key docker compose restart app✅ 小结:持久化、上传限制、邮件、定时、CSV、HTTPS 六件套,是"能用"到"好用"的分水岭。
🕳️ 高频坑位:四个常见问题的症状—原因—解法
坑 1:容器一启动就退出
- 症状:
docker compose ps里 app 一直在 Restarting。 - 原因:八成是
APP_KEY没填或格式不对,启动脚本检测不到密钥直接 exit。 - 解法:
docker compose run --rm app php artisan key:generate --show重新生成,粘回.env后docker compose up -d重启。
坑 2:页面能开,但报"数据库连接失败"
- 症状:白屏或 500,日志提示
SQLSTATE[HY000]。 - 原因:
.env里的DB_*与 Compose 传给 MariaDB 的账号密码对不上,或 db 还没健康就启动 app。 - 解法:核对四个
DB_*变量与MYSQL_*一致;docker compose ps确认 db 为 healthy;必要时docker compose down后重新up -d。
坑 3:登录提示密码错误,但明明没错
- 症状:用刚导入的用户登录失败。
- 原因:多半是 APP_KEY 变动导致旧密码哈希失效,或导入时用户名/邮箱字段没对上。
- 解法:别在初始化后再随意换 APP_KEY;导入前检查 CSV 的用户名字段;实在不行用管理员在后台重置该用户密码。
坑 4:导入 CSV 后资产数量对不上
- 症状:提示导入成功,但列表少几条。
- 原因:表头字段名与模板不一致,或依赖的厂商/型号/位置尚未创建。
- 解法:严格对照
sample_csvs/assets-sample.csv的表头;先建基础数据再导入;用"下载导入结果"查看被跳过的行。
🔄 长期运营:升级、备份与日常三件事
备份——别等丢数据才后悔
备份分两半:数据库 + 上传文件。容器里可直接用内置备份:
# 生成完整备份(数据库+文件,存到 storage/dumps) docker compose exec app php artisan backup:run # 看备份清单 docker compose exec app php artisan backup:list想自动化,把backup:run挂进宿主机 crontab,再定期把./data/storage/dumps拷走即可。恢复时把备份文件放回dumps目录,执行:
docker compose exec app php artisan snipeit:restore升级——四步走,先备份再动手
# 1. 备份 docker compose exec app php artisan backup:run # 2. 拉最新代码(Docker 场景主要是更新镜像) docker compose pull # 3. 重启 docker compose up -d # 4. 数据库迁移(启动脚本会自动执行,失败时手动补跑) docker compose exec app php artisan migrate --force💡 提示:升级后如果页面样式错乱,清一下缓存:
docker compose exec app php artisan config:clear docker compose exec app php artisan cache:clear日常三件事
- 看日志:
docker compose logs -f app,报错先来这里翻,别瞎猜。 - 看资源:
docker stats,内存长期打满就考虑加配置。 - 定期盘点:用系统的"审计"功能抽查设备,核对"账实相符",这才是资产管理的本质。
🏁 收尾推动:从今天开始记账
Snipe-IT 的价值不在功能多,而在坚持用。建议你这样落地:
- 今天跑通 Docker 部署,登录改密;
- 本周内建好厂商、分类、状态标签和第一批用户;
- 用
sample_csvs模板导入现有设备,完成首次盘点; - 配好邮件,把"领用确认"跑起来;
- 每月做一次审计抽查,季度做一次备份演练。
图:Snipe-IT 的设备维护管理界面,故障记录、维修跟踪一目了然
图:维修流程管理,支持登记、跟踪与成本核算
资产管理的敌人从来不是工具,而是"下次再说"。项目代码就在手边,复制、配置、启动——半小时后,你就有了一张公司资产全景图。动起来,别再让资产在 Excel 里流浪。🚀
【免费下载链接】snipe-itA free open source IT asset/license management system项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考