Snipe-IT 资产管理系统企业真实部署案例(Docker + AD 域登录)
本文是一篇从零开始介绍如何在 Linux 服务器上部署 Snipe-IT资产管理系统,并完成 Active Directory(AD)域用户登录集成。
一、项目背景(公司真实部署场景)
本次部署并非实验环境,而是 公司内部正式上线使用 的资产管理系统。
实际业务背景
已有基础设施:
Windows Active Directory 域
员工统一域账号登录
管理痛点:
资产分散登记在 Excel
责任人频繁变动,追溯困难
审计时需要人工核对
选型原因
最终选择 Snipe-IT,原因如下:
开源、可控,不依赖云服务
原生支持 LDAP / AD
权限体系适合企业分级
社区成熟,踩坑资料多
二、什么是 Snipe-IT
Snipe-IT 是一款开源的 IT 资产管理系统,适合用于:
企业固定资产管理(电脑、服务器、显示器等)
资产借用 / 归还 / 责任人追踪
生命周期管理(采购 → 使用 → 报废)
与 AD / LDAP 集成,实现统一账号登录
二、部署环境准备
1️⃣ 系统环境
操作系统:Rocky Linux 8 / CentOS 7 / Ubuntu 20.04+
CPU:2 Core 以上
内存:4 GB(推荐 8 GB)
磁盘:20 GB 以上
2️⃣ 网络与依赖
可访问外网(用于下载)
已部署 AD 域控制器(用于后续集成)
三、部署方案说明(Docker 化)
在真实生产环境中,我们 没有采用传统 LNMP 裸机部署,而是选择了 Docker Compose,原因是:
部署快,可复制
版本可控
回滚成本低
更适合运维交接
架构说明
Docker
Docker Compose
容器:
snipe/snipe-it
mariadb
四、Docker 环境准备
# Rocky / CentOS
dnf install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker
安装 docker-compose:
curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
2️⃣ 初始化数据库
mysql_secure_installation
创建数据库:
CREATE DATABASE snipeit CHARACTER SET utf8mb4;
CREATE USER 'snipeit'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON snipeit.* TO 'snipeit'@'localhost';
FLUSH PRIVILEGES;
五、Docker Compose 部署 Snipe-IT
1️⃣ 目录规划(企业标准)
/opt/snipe-it
├── docker-compose.yml
├── env
└── volumes
2️⃣ docker-compose.yml
version: '3'
services:
mysql:
image: mariadb:10.6
container_name: snipeit-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: snipeit
MYSQL_USER: snipeit
MYSQL_PASSWORD: StrongPassword
volumes:
- ./volumes/mysql:/var/lib/mysql
snipeit:
image: snipe/snipe-it:latest
container_name: snipeit-app
depends_on:
- mysql
ports:
- "8080:80"
environment:
APP_URL: http://assets.company.local:8080
MYSQL_PORT_3306_TCP_ADDR: mysql
MYSQL_DATABASE: snipeit
MYSQL_USER: snipeit
MYSQL_PASSWORD: StrongPassword
LDAP_ENABLED: "true"
volumes:
- ./volumes/data:/var/lib/snipeit
restart: always
五、配置 Snipe-IT
1️⃣ 复制环境配置文件
cp .env.example .env
2️⃣ 修改关键配置(.env)
APP_URL=http://assets.example.com
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=StrongPassword
MAIL_DRIVER=log
生成应用密钥:
php artisan key:generate
六、配置 Nginx 虚拟主机
server {
listen 80;
server_name assets.example.com;
root /var/www/snipe-it/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
重载服务:
nginx -t && systemctl reload nginx
七、Web 初始化向导
访问浏览器:
http://assets.example.com
按向导完成:
系统检查
数据库连接
创建 本地管理员账号(非常重要)
六、AD 域登录配置(真实参数示例)
本部分是企业部署的核心,下面参数来自 真实 AD 环境结构(已脱敏)。
AD 环境示例
域名:
corp.local域控 IP:
10.10.0.10Base DN:
DC=corp,DC=local绑定账号:
ldap-bind@corp.local
Snipe-IT LDAP 配置
后台路径:
Admin → Settings → LDAP
勾选:
✅ Allow LDAP login
✅ Auto-create users
2️⃣ 在 Snipe-IT 后台配置
路径:
Admin → Settings → LDAP
关键参数填写:
启用选项:
✅ Allow LDAP login
✅ Auto-create users
3️⃣ 测试 LDAP 连接
点击 Test LDAP:
成功:显示用户信息
失败:检查防火墙、DN、账号权限
九、AD 用户权限建议
推荐策略:
普通 AD 用户 →
UserIT 管理员 AD 组 →
Admin
可在 People → Users 中手动调整首次同步用户权限。
十、博客级免责声明(建议原样保留)
⚠️ 免责声明
本教程仅用于技术学习与企业内部系统搭建参考,作者不对因配置错误、权限滥用或生产环境误操作导致的数据丢失、安全风险承担任何责任。请务必在测试环境中验证后再用于生产环境。
十一、常见问题排查
❓ LDAP 登录失败
确认服务器可访问域控 389 / 636
确认 PHP 已安装
php-ldap确认 Bind 账号密码正确
❓ 页面 500 错误
tail -f /var/www/snipe-it/storage/logs/laravel.log
七、傻瓜式一键部署脚本(推荐)
#!/bin/bash
set -e
APP_DIR=/opt/snipe-it
mkdir -p $APP_DIR && cd $APP_DIR
cat > docker-compose.yml << 'EOF'
version: '3'
services:
mysql:
image: mariadb:10.6
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: snipeit
MYSQL_USER: snipeit
MYSQL_PASSWORD: StrongPassword
volumes:
- ./mysql:/var/lib/mysql
snipeit:
image: snipe/snipe-it:latest
ports:
- "8080:80"
depends_on:
- mysql
environment:
APP_URL: http://localhost:8080
MYSQL_PORT_3306_TCP_ADDR: mysql
MYSQL_DATABASE: snipeit
MYSQL_USER: snipeit
MYSQL_PASSWORD: StrongPassword
LDAP_ENABLED: "true"
volumes:
- ./data:/var/lib/snipeit
restart: always
EOF
/usr/local/bin/docker-compose up -d
echo "Snipe-IT 已启动:http://<服务器IP>:8080"
八、结语
在企业环境中:
Docker + AD 是最稳妥组合
LDAP 统一身份极大减少运维成本
资产责任人清晰后,审计效率明显提升
如果你所在公司已经有 AD,却还在用 Excel 管资产,那么 Snipe-IT 非常值得上线。