一个基于 Django 的企业级 PC 信息记录和管理系统,集成 LDAP/Active Directory 认证,支持自动收集和管理 Windows 计算机信息。
- 🖥️ 自动信息收集:通过客户端自动收集 Windows 计算机的硬件、系统信息
- 📊 数据管理:提供 Web 界面进行数据查看、搜索、筛选
- 🔐 LDAP/AD 认证:集成企业 Active Directory,统一用户认证
- 🔍 高级搜索:支持多条件组合搜索和筛选
- 📡 REST API:提供完整的 REST API 接口
- 🔧 管理后台:功能强大的 Django Admin 后台
- 📱 响应式设计:支持桌面和移动设备访问
- 🐳 Docker 支持:完整的容器化部署方案,已发布到 Docker Hub
- 框架: Django 5.2.7
- 数据库: PostgreSQL 17.6
- API: Django REST Framework 3.16+
- 认证: django-auth-ldap + python-ldap
- 应用服务器: Gunicorn 23.0 (生产环境)
- Web 服务器: Nginx (生产环境)
- Django 模板引擎
- 原生 CSS + 响应式设计
- PowerShell 5.1+ (Windows 信息采集)
- 包管理: uv (开发环境) / pip (Docker)
- 容器化: Docker + Docker Compose
- 镜像仓库: Docker Hub (tornadoami/pc-info-record) - v1.0.4
- 最新版本: v1.0.4 (2025-10-17) - 修复数据库迁移同步问题
- 数据库工具: pgcli
PC_info_record/
├── docker/ # Docker 配置文件目录
│ ├── Dockerfile # 容器镜像配置
│ ├── .dockerignore # 构建忽略文件
│ ├── entrypoint.sh # 容器启动脚本
│ └── nginx.conf # Nginx 配置
│
├── docker-compose.yml # 生产环境 Docker 编排 ⭐
├── docker-compose.dev.yml # 开发环境 Docker 编排
├── .env # 环境变量配置(不提交Git)
├── .env.example # 环境变量模板
│
├── pc_info_record/ # Django 项目配置
│ ├── settings.py # 设置(含 LDAP 配置)
│ ├── urls.py
│ └── wsgi.py
│
├── computers/ # 计算机管理应用
│ ├── models.py # 数据模型
│ ├── views.py
│ ├── admin.py
│ └── migrations/
│
├── api/ # REST API
│ ├── views.py
│ └── urls.py
│
├── client/ # Windows 客户端
│ └── collect_computer_info.ps1 # PowerShell 信息采集脚本
│
├── templates/ # Django 模板
├── static/ # 静态文件
├── logs/ # 日志文件(开发环境)
│
├── requirements.txt # Python 依赖列表
├── pyproject.toml # 项目配置
├── manage.py # Django 管理脚本
├── test_ldap_connection.py # LDAP 测试工具
└── README.md # 本文件
🎉 最快最简单的方式,无需构建镜像,3 分钟内启动完整系统!
本项目已发布到 Docker Hub:tornadoami/pc-info-record
# 1. 克隆项目(只需要配置文件)
git clone https://github.com/iamtornado/PC_info_record.git
cd PC_info_record
# 2. 配置环境变量
cp .env.example .env
nano .env # 修改数据库密码、LDAP 配置、生产环境设置等
# 3. 启动服务(自动从 Docker Hub 拉取镜像)
docker compose up -d
# 4. 创建超级用户
docker compose exec web python manage.py createsuperuser
# 5. 访问应用
# 浏览器打开: http://your_server_ip_or_domain优势:
- ✅ 无需本地构建,直接使用预构建镜像
- ✅ 更快的部署速度
- ✅ 节省磁盘空间和构建时间
- ✅ 确保使用经过测试的稳定版本
如果需要修改代码或自定义构建:
# 1. 克隆项目
git clone https://github.com/iamtornado/PC_info_record.git
cd PC_info_record
# 2. 修改 docker-compose.yml,使用本地构建
nano docker-compose.yml
# 将 web 服务的 image: tornadoami/pc-info-record:v1.0.4 注释掉
# 取消注释 build 配置:
# build:
# context: .
# dockerfile: docker/Dockerfile
# 3. 配置环境变量
cp .env.example .env
nano .env
# 4. 构建并启动
docker compose up -d --build
# 5. 创建超级用户
docker compose exec web python manage.py createsuperuser适合开发和调试。
确保已安装:
- Python 3.11+
- PostgreSQL 17.6+
- uv (Python 包管理器)
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"git clone https://github.com/iamtornado/PC_info_record.git
cd PC_info_record
# 同步依赖(自动创建虚拟环境)
uv synccp .env.example .env
nano .env # 编辑配置必须配置:
# 数据库配置
DB_NAME=pc_info_record
DB_USER=postgres
DB_PASSWORD=your-password
DB_HOST=localhost
DB_PORT=5432
# LDAP 配置(如果使用 AD 认证)
LDAP_SERVER_URI=ldap://your-ldap-server:389
LDAP_BIND_DN=CN=service_account,OU=Users,DC=example,DC=com
LDAP_BIND_PASSWORD=your-ldap-password
LDAP_USER_BASE_DN=OU=Users,DC=example,DC=com# 使用 pgcli 或 psql
createdb pc_info_record# 运行数据库迁移
uv run python manage.py migrate
# 创建超级用户
uv run python manage.py createsuperuseruv run python manage.py runserver# 本地开发
uv run python test_ldap_connection.py
# Docker 环境
docker compose exec -it web python test_ldap_connection.py本地开发环境:
- 管理后台:http://localhost:8000/admin/
- API 浏览器:http://localhost:8000/api/
Docker 生产环境:
- 管理后台:http://localhost/admin/
- API 端点:http://localhost/api/
- 健康检查:http://localhost/health/
系统支持两种认证方式:
-
LDAP/AD 认证(主要)
- 使用企业域账号登录
- 首次登录自动创建用户
- 用户信息从 LDAP 同步
-
Django 本地认证(备用)
- 超级用户账号
- 用于管理和应急访问
POST http://localhost/api/computers/create/
Content-Type: application/json
X-CSRFToken: <token>
{
"asset_code": "PC-001",
"sn_code": "SN123456",
"model": "Dell OptiPlex 7090",
"device_type": "Desktop",
"cpu_model": "Intel i7-11700",
"memory_size": 16,
"os_version": "Windows 11 Pro",
"os_internal_version": "22H2",
"user_name": "zhangsan",
"computer_name": "DESKTOP-ABC123",
"execution_log": "脚本执行日志...",
"log_size": 1024,
"error_log": "",
"has_errors": false,
"uploader": "robot"
}注意: POST 请求需要 CSRF Token,可以从 /login/ 页面获取。
GET http://localhost/api/computers/GET http://localhost/api/computers/{id}/GET http://localhost/health/系统提供 PowerShell 脚本,用于自动收集 Windows 计算机信息并提交到服务器。
collect_computer_info.ps1 - PowerShell 信息采集脚本
# 进入客户端目录
cd client
# 运行采集脚本(带详细日志和验证)
.\collect_computer_info.ps1
# 自定义服务器地址
.\collect_computer_info.ps1 -ServerUrl "http://your-server-ip"功能特点:
- ✅ 完整的信息收集(硬件、系统、用户信息)
- ✅ 本地备份(JSON 格式)
- ✅ 详细的执行步骤显示
- ✅ 自动获取 CSRF Token
- ✅ 自动上传到服务器 API
- ✅ 自动验证上传结果
- ✅ 适合手动运行、测试或计划任务
收集的信息:
- 基本信息:资产编码、SN 序列号、设备型号、设备类型
- 硬件信息:CPU 型号、内存大小
- 系统信息:操作系统版本、内部版本号
- 用户信息:用户名、计算机名
- 日志信息:执行日志、错误日志
部署方式:
- 手动运行(管理员权限)
- Windows 任务计划程序(定期采集)
- 组策略登录脚本(域环境)
- 命令行参数支持自定义服务器地址
基本信息:
asset_code- 资产编码(有索引)sn_code- SN 序列号model- 型号device_type- 设备类型
硬件信息:
cpu_model- CPU 型号memory_size- 内存大小 (GB)
系统信息:
os_version- 操作系统版本os_internal_version- 操作系统内部版本
用户信息:
user_name- 用户名computer_name- 计算机名
日志信息:
execution_log- PowerShell 脚本执行日志log_size- 日志大小(字节)error_log- 错误日志has_errors- 是否有错误(有索引)
元数据:
uploader- 上传者(默认 "Robot")upload_time- 上传时间(自动)last_update- 最后更新时间(自动)
完整的生产级部署方案,包含 Nginx + Gunicorn + PostgreSQL。
使用预构建镜像,无需本地编译!
# 1. 下载配置文件
git clone https://github.com/iamtornado/PC_info_record.git
cd PC_info_record
# 2. 配置环境变量
cp .env.example .env
nano .env # 修改为生产配置(重要:DEBUG=False, SECRET_KEY, DB_PASSWORD)
# 3. 启动服务(自动从 Docker Hub 拉取 tornadoami/pc-info-record:v1.0.4)
docker compose up -d
# 4. 创建超级用户
docker compose exec web python manage.py createsuperuser
# 访问: http://your_domain_or_ip技术架构:
- ✅ Nginx - 反向代理 + 静态文件服务
- ✅ Gunicorn - WSGI 应用服务器(4 workers)
- ✅ PostgreSQL 17.6 - 数据库
- ✅ 健康检查 - 自动重启
- ✅ 日志管理 - Docker logs
- ✅ Docker Hub - 预构建镜像 (
tornadoami/pc-info-record)
镜像版本:
tornadoami/pc-info-record:v1.0.4- 最新稳定版(推荐,修复数据库迁移问题)⭐tornadoami/pc-info-record:v1.0.3- 稳定版本(含 Base64 日志支持和中文字符修复)tornadoami/pc-info-record:latest- 最新版本(自动跟踪 v1.0.4)
更新镜像:
docker compose pull # 拉取最新镜像
docker compose up -d # 重启服务应用新镜像系统集成了企业 Active Directory 认证。配置方法:
在 .env 文件中配置:
LDAP_SERVER_URI=ldap://your-ldap-server.com:389
LDAP_BIND_DN=CN=service_account,OU=ServiceAccounts,DC=example,DC=com
LDAP_BIND_PASSWORD=your-service-password
LDAP_USER_BASE_DN=OU=Users,DC=example,DC=com# 本地环境
uv run python test_ldap_connection.py
# Docker 环境
docker compose exec -it web python test_ldap_connection.py系统自动将 LDAP 属性映射到 Django 用户:
sAMAccountName→usernamegivenName→first_namesn→last_namemail→email
详细配置请查看 pc_info_record/settings.py 中的 LDAP 配置部分。
# 安装开发依赖
uv sync --group dev
# 启动开发服务器
uv run python manage.py runserver
# 运行测试
uv run python manage.py test
# 创建迁移
uv run python manage.py makemigrations支持代码热重载的开发环境(使用本地构建):
docker compose -f docker-compose.dev.yml up说明:
docker-compose.dev.yml使用本地构建,挂载代码目录- 支持代码修改实时生效(热重载)
- 使用 Django runserver(开发模式)
docker-compose.yml使用 Docker Hub 预构建镜像(生产模式)
- ✅ 遵循 PEP 8 代码风格
- ✅ 添加适当的注释和文档字符串
- ✅ 使用 Django 最佳实践
- ✅ 编写单元测试(推荐)
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f web
# 重启服务
docker compose restart web
# 完全重置(会删除数据)
docker compose down -v
docker compose up -d# 检查 PostgreSQL 服务
sudo systemctl status postgresql
# 测试连接
psql -U postgres -d pc_info_record# 运行 LDAP 测试工具
uv run python test_ldap_connection.py
# 检查配置
# - LDAP_SERVER_URI 是否正确
# - LDAP_BIND_DN 和密码是否正确
# - LDAP_USER_BASE_DN 是否正确# 开发环境(不需要 collectstatic)
DEBUG=True # 确保 DEBUG 开启
# 生产环境
python manage.py collectstatic --noinput# Ubuntu/Debian
sudo apt-get install libldap2-dev libsasl2-dev libssl-dev
# 重新安装 Python 依赖
uv sync# 服务管理
docker compose up -d # 启动
docker compose down # 停止
docker compose restart # 重启
docker compose ps # 状态
docker compose logs -f web # 日志
# 数据库管理
docker compose exec web python manage.py migrate
docker compose exec web python manage.py createsuperuser
docker compose exec db pg_dump -U postgres pc_info_record > backup.sql
# 应用管理
docker compose exec web python manage.py shell
docker compose exec -it web python test_ldap_connection.py# 启动开发服务器
uv run python manage.py runserver
# 数据库操作
uv run python manage.py makemigrations
uv run python manage.py migrate
uv run python manage.py createsuperuser
# Django shell
uv run python manage.py shell
# 测试 LDAP
uv run python test_ldap_connection.py- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
MIT License
如有问题或建议:
- 📧 提交 Issue
- 📝 查看文档
- 🔍 查看故障排查部分
- Django 社区
- PostgreSQL 团队
- Astral (uv 开发团队)
- 所有贡献者
祝使用愉快! 🎉