Files
Lannamokia_vhdmount/VHDSelectServer/README.md
T
2025-10-19 04:57:57 +08:00

268 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VHD选择服务器 - 跨平台版本
一个现代化的跨平台VHD关键词管理服务器,提供Web GUI界面和HTTP API接口。
<img width="1280" height="1754" alt="image" src="https://github.com/user-attachments/assets/c1126381-d13e-4e88-a8da-99f86d778bef" />
## ✨ 特性
- 🌐 **跨平台支持**: 支持Windows、Linux、macOS
- 🎨 **现代化Web界面**: 响应式设计,支持移动设备
- 🔧 **RESTful API**: 标准HTTP API接口
- 💾 **持久化存储**: 自动保存配置到JSON文件
- 🚀 **零配置启动**: 开箱即用
- 📱 **实时更新**: 界面自动刷新状态
- 🔒 **输入验证**: 安全的用户输入处理
## 🛠️ 系统要求
### Node.js版本(推荐)
- Node.js 14.0+
- npm(随Node.js安装)
### Python版本(备选)
- Python 3.6+
- 无需额外依赖
## 🚀 快速开始
### 方法1: Docker部署(推荐)
1. **一键部署脚本(最简单)**
```bash
# Windows
deploy.bat
# Linux/macOS
chmod +x deploy.sh
./deploy.sh
```
2. **使用Docker Compose**
```bash
# 构建并启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
```
3. **使用Docker命令**
```bash
# 运行容器(配置持久化)
docker run -d \
--name vhd-select-server \
-p 8080:8080 \
-v $(pwd)/config:/app/config \
lty271104/vhd-select-server:latest
```
### 方法2: Node.js版本
1. **安装Node.js**
- 访问 [https://nodejs.org/](https://nodejs.org/)
- 下载并安装LTS版本
2. **启动服务器**
```bash
# 双击运行
start.bat
# 或者命令行运行
npm install
npm start
```
### 方法3: Python版本
```bash
# 直接运行Python服务器
python server.py
# 或指定端口
python server.py 8080
```
## 🌐 访问界面
服务器启动后,访问以下地址:
- **Web界面**: http://localhost:8080
- **API文档**: http://localhost:8080/api/status
## 📡 API接口
### 获取当前VHD关键词
```http
GET /api/boot-image-select
```
**响应示例**:
```json
{
"success": true,
"BootImageSelected": "SDEZ",
"timestamp": "2025-10-19T03:05:33.486615"
}
```
### 设置VHD关键词
```http
POST /api/set-vhd
Content-Type: application/json
{
"BootImageSelected": "NEW_KEYWORD"
}
```
**响应示例**:
```json
{
"success": true,
"BootImageSelected": "NEW_KEYWORD",
"message": "VHD关键词更新成功"
}
```
### 服务器状态
```http
GET /api/status
```
**响应示例**:
```json
{
"success": true,
"status": "running",
"BootImageSelected": "SDEZ",
"timestamp": "2025-10-19T03:05:33.486615",
"version": "1.0.0"
}
```
## 🎯 使用说明
### Web界面操作
1. **查看当前状态**: 页面会显示服务器运行状态和当前VHD关键词
2. **设置新关键词**: 在输入框中输入新的VHD关键词,点击"更新"按钮
3. **自动刷新**: 页面每30秒自动刷新状态
4. **实时反馈**: 操作结果会立即显示在界面上
### 配置持久化
- **Docker部署**: 配置保存在 `/app/config/vhd-config.json`,通过卷映射到主机的 `./config` 目录
- **本地部署**: 配置保存在项目根目录的 `vhd-config.json` 文件中
- **环境变量**: 可通过 `CONFIG_PATH` 环境变量自定义配置文件路径
### Docker相关
#### 环境变量
- `PORT`: 服务端口(默认: 8080)
- `CONFIG_PATH`: 配置文件目录路径(默认: /app/config)
- `NODE_ENV`: 运行环境(默认: production)
#### 数据卷
- `/app/config`: 配置文件持久化目录
- `/app/data`: 数据文件持久化目录(可选)
#### 健康检查
- 端点: `http://localhost:8080/api/status`
- 间隔: 30秒
- 超时: 10秒
- 重试: 3次
#### 故障排除
如果Docker部署遇到问题,请参考 [Docker故障排除指南](DOCKER_TROUBLESHOOTING.md)
### 命令行测试
```bash
# 获取当前VHD关键词
curl http://localhost:8080/api/boot-image-select
# 设置新的VHD关键词
curl -X POST http://localhost:8080/api/set-vhd \
-H "Content-Type: application/json" \
-d '{"BootImageSelected":"CUSTOM_VHD"}'
```
## 📁 文件结构
```
VHDSelectServer/
├── server.js # Node.js服务器
├── server.py # Python服务器
├── package.json # Node.js依赖配置
├── start.bat # Windows启动脚本
├── public/
│ └── index.html # Web界面
├── vhd-config.json # 配置文件(自动生成)
└── README.md # 说明文档
```
## 🔧 配置说明
- **端口**: 默认8080,可通过环境变量`PORT`修改
- **配置文件**: `vhd-config.json`自动生成,存储当前VHD关键词
- **日志**: 服务器会在控制台输出访问日志
## 🔗 与VHD挂载程序集成
此服务器与原有的VHD挂载程序完全兼容:
1. **API兼容**: 保持原有的`/api/boot-image-select`接口
2. **数据格式**: 返回相同的JSON格式
3. **配置持久化**: VHD关键词会自动保存和恢复
## 🛡️ 安全特性
- **输入验证**: 自动验证和清理用户输入
- **CORS支持**: 支持跨域请求
- **错误处理**: 完善的错误处理和用户反馈
- **格式标准化**: 自动转换为大写格式
## 🐛 故障排除
### 端口被占用
```bash
# 检查端口占用
netstat -ano | findstr :8080
# 使用其他端口
python server.py 8081
```
### Node.js未安装
- 下载安装: https://nodejs.org/
- 使用Python版本作为备选方案
### 权限问题
- 确保有写入配置文件的权限
- 在管理员模式下运行(如需要)
## 📝 更新日志
### v1.0.0
- ✅ 跨平台支持(Node.js + Python)
- ✅ 现代化Web界面
- ✅ RESTful API接口
- ✅ 用户自定义VHD关键词
- ✅ 配置持久化存储
- ✅ 实时状态更新
## 🤝 技术支持
如有问题,请检查:
1. 服务器是否正常启动
2. 端口是否被占用
3. 防火墙设置
4. 浏览器控制台错误信息
---
**🎉 享受使用全新的跨平台VHD选择服务器!**