# 运维工具后端 **Repository Path**: woaitonghui/ywback ## Basic Information - **Project Name**: 运维工具后端 - **Description**: 运维工具后端 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-27 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Tomhui 后端项目 ## 项目简介 Tomhui 是一个基于 Spring Boot 3 的企业级运维管理平台后端服务,提供容器管理、虚拟机管理、SSH 服务器管理、系统监控、AI 对话等全方位的运维管理功能。项目集成了 Docker、Libvirt、MySQL 等多种技术栈,支持 WebSocket 实时通信和 JWT 认证。 ## 技术栈 ### 核心框架 - **Spring Boot**: 3.2.2 - **Java**: 17 - **Spring Security**: 安全认证框架 - **Spring WebSocket**: WebSocket 支持 - **Spring AI**: 1.0.0-M6 (AI 集成) ### 数据库与持久层 - **MySQL**: 数据库 - **MyBatis Plus**: 3.5.9 (ORM 框架) - **HikariCP**: 数据库连接池 ### 工具库 - **Lombok**: 1.18.30 (简化代码) - **Hutool**: 5.8.0 (Java 工具库) - **FastJSON**: 2.0.56 (JSON 处理) - **Oshi**: 6.7.1 (系统信息获取) ### 第三方集成 - **Docker Java**: 3.3.4 (Docker API) - **JSch**: 0.1.55 (SSH 连接) - **Libvirt**: 0.5.2 (虚拟机管理) - **JWT**: 0.11.2 (令牌认证) - **Apache HttpClient**: 5.2.1 (HTTP 客户端) ### 文档与测试 - **SpringDoc OpenAPI**: 2.3.0 (API 文档) - **Spring Boot Test**: 单元测试 ## 项目结构 ``` tomhui/ ├── src/main/ │ ├── java/com/example/qymh/ │ │ ├── config/ # 配置类 │ │ │ ├── CorsConfig.java # 跨域配置 │ │ │ ├── GlobalExceptionHandler.java # 全局异常处理 │ │ │ ├── GlobalResponseConfig.java # 全局响应配置 │ │ │ ├── JwtFilter.java # JWT 过滤器 │ │ │ ├── JwtUtil.java # JWT 工具类 │ │ │ ├── MyMetaObjectHandler.java # MyBatis Plus 自动填充 │ │ │ ├── SecurityConfig.java # 安全配置 │ │ │ ├── VncWebSocketConfig.java # VNC WebSocket 配置 │ │ │ ├── WebConfig.java # Web 配置 │ │ │ ├── WebMvcConfig.java # Web MVC 配置 │ │ │ └── WebSocketConfig.java # WebSocket 配置 │ │ ├── controller/ # 控制器层 │ │ │ ├── request/ # 请求 DTO │ │ │ ├── ContainerController.java # 容器管理 │ │ │ ├── DeepSeekController.java # AI 对话 │ │ │ ├── DockerImageController.java # Docker 镜像 │ │ │ ├── DockerImageSearchController.java # 镜像搜索 │ │ │ ├── MysqlConnectionConfigController.java # MySQL 配置 │ │ │ ├── MysqlController.java # MySQL 管理 │ │ │ ├── ServerController.java # 服务器管理 │ │ │ ├── SshController.java # SSH 管理 │ │ │ ├── SystemMonitorController.java # 系统监控 │ │ │ ├── SystemSettingController.java # 系统设置 │ │ │ └── UserController.java # 用户管理 │ │ ├── dto/ # 数据传输对象 │ │ │ ├── CpuInfoDTO.java │ │ │ ├── DiskInfoDTO.java │ │ │ ├── MemoryInfoDTO.java │ │ │ └── SystemInfoDTO.java │ │ ├── entity/ # 实体类 │ │ │ ├── Container.java # 容器实体 │ │ │ ├── DockerImage.java # Docker 镜像 │ │ │ ├── DockerImageBuildHistory.java # 镜像构建历史 │ │ │ ├── DockerImageCache.java # 镜像缓存 │ │ │ ├── DockerImageSearchResponse.java │ │ │ ├── DockerImageSearchResult.java │ │ │ ├── DockerRegistry.java # Docker 仓库 │ │ │ ├── MysqlConnectionConfig.java # MySQL 连接配置 │ │ │ ├── Server.java # 服务器实体 │ │ │ ├── SshServer.java # SSH 服务器 │ │ │ ├── User.java # 用户实体 │ │ │ ├── VirtualMachine.java # 虚拟机 │ │ │ ├── VmImage.java # 虚拟机镜像 │ │ │ ├── VmOperationLog.java # 虚拟机操作日志 │ │ │ └── VmSnapshot.java # 虚拟机快照 │ │ ├── mapper/ # MyBatis Mapper │ │ ├── model/ # 数据模型 │ │ │ ├── CpuInfo.java │ │ │ ├── DiskInfo.java │ │ │ ├── MemoryInfo.java │ │ │ └── SystemInfo.java │ │ ├── pojo/ # 持久化对象 │ │ │ ├── CpuUsageRecord.java │ │ │ ├── DiskUsageRecord.java │ │ │ ├── MemoryUsageRecord.java │ │ │ ├── SystemMonitorRecord.java │ │ │ ├── SystemSetting.java │ │ │ └── User.java │ │ ├── service/ # 服务层 │ │ │ ├── impl/ # 服务实现 │ │ │ ├── DeepSeekService.java # AI 服务 │ │ │ ├── DockerImageService.java # Docker 镜像服务 │ │ │ ├── LibvirtService.java # 虚拟机服务 │ │ │ ├── MysqlConnectionConfigService.java │ │ │ ├── MysqlService.java # MySQL 服务 │ │ │ ├── ServerService.java # 服务器服务 │ │ │ ├── SshService.java # SSH 服务 │ │ │ ├── SystemMonitorService.java # 系统监控服务 │ │ │ ├── SystemSettingService.java # 系统设置服务 │ │ │ ├── UserService.java # 用户服务 │ │ │ ├── VirtualMachineService.java # 虚拟机服务 │ │ │ └── VmImageService.java # 虚拟机镜像服务 │ │ ├── util/ # 工具类 │ │ │ └── DockerClientManager.java # Docker 客户端管理 │ │ └── QymhApplication.java # 应用入口 │ ├── resources/ │ │ ├── db/ │ │ │ ├── migration/ # 数据库迁移脚本 │ │ │ └── schema.sql # 数据库结构 │ │ ├── static/ # 静态资源 │ │ ├── templates/ # 模板文件 │ │ ├── application.yml # 应用配置 │ │ └── banner.txt # 启动横幅 │ └── test/ # 测试代码 ├── uploads/ # 文件上传目录 ├── Dockerfile # Docker 构建文件 ├── docker-compose.yml # Docker Compose 配置 ├── pom.xml # Maven 配置 └── README.md # 项目文档 ``` ## 主要功能模块 ### 1. 容器管理 (Container) - Docker 容器创建、启动、停止、删除 - 容器状态监控 - 容器日志查看 - 容器网络和端口管理 ### 2. Docker 镜像管理 (DockerImage) - 镜像拉取、构建、删除 - 镜像仓库管理 - 镜像搜索功能 - 镜像缓存管理 ### 3. 虚拟机管理 (VirtualMachine) - 虚拟机创建、启动、停止、删除 - 虚拟机快照管理 - 虚拟机操作日志 - 基于 Libvirt 的虚拟化支持 ### 4. SSH 服务器管理 (SshServer) - SSH 连接管理 - 远程命令执行 - 终端会话管理 - 基于 JSch 的 SSH 实现 ### 5. MySQL 管理 (Mysql) - MySQL 连接配置 - 数据库查询执行 - 连接池管理 ### 6. 系统监控 (SystemMonitor) - CPU 使用率监控 - 内存使用率监控 - 磁盘使用率监控 - 基于 Oshi 的系统信息获取 ### 7. AI 对话 (DeepSeek) - 集成 DeepSeek AI 模型 - 支持 Ollama 和 OpenAI API - 流式响应支持 ### 8. 用户管理 (User) - 用户注册、登录 - JWT 认证 - 权限管理 - 基于 Spring Security 的安全控制 ### 9. 系统设置 (SystemSetting) - 系统参数配置 - 全局设置管理 ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.6+ - MySQL 8.0+ - Docker (可选,用于容器管理功能) - Libvirt (可选,用于虚拟机管理功能) ### 数据库配置 1. 创建数据库: ```sql CREATE DATABASE qymh CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 执行数据库脚本: ```bash # 执行 schema.sql 创建表结构 mysql -u root -p qymh < src/main/resources/db/schema.sql ``` 3. 修改配置文件 `application.yml` 中的数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/qymh?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: your_password ``` ### 安装依赖 ```bash mvn clean install ``` ### 运行应用 ```bash mvn spring-boot:run ``` 应用将在 http://localhost:8080 启动 ### Docker 部署 ```bash # 构建镜像 docker build -t tomhui:latest . # 使用 Docker Compose 启动 docker-compose up -d ``` ## API 文档 启动应用后,访问 Swagger UI 查看完整 API 文档: ``` http://localhost:8080/swagger-ui.html ``` OpenAPI JSON 文档: ``` http://localhost:8080/v3/api-docs ``` ## 配置说明 ### 应用配置 (application.yml) ```yaml server: port: 8080 # 服务端口 spring: datasource: url: jdbc:mysql://localhost:3306/qymh username: root password: 123456 ai: ollama: base-url: http://172.16.2.124:11434 chat: options: model: deepseek-r1:7b openai: api-key: your_api_key base-url: https://api.openai-hk.com/v1/chat/completions mybatis-plus: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.qymh.pojo upload: path: ${user.dir}/uploads/ url-prefix: /uploads/ ``` ### JWT 配置 JWT 密钥和过期时间在 `JwtUtil.java` 中配置。 ### 跨域配置 跨域请求在 `CorsConfig.java` 中配置,默认允许所有来源。 ## WebSocket 支持 项目支持以下 WebSocket 连接: - VNC WebSocket: 用于虚拟机 VNC 连接 - SSH WebSocket: 用于 SSH 终端连接 ## 安全说明 ### 认证机制 - 使用 JWT (JSON Web Token) 进行用户认证 - 基于 Spring Security 的安全框架 - 支持角色和权限管理 ### 密码加密 用户密码使用 BCrypt 加密存储。 ### CORS 配置 生产环境建议配置具体的允许来源,而非允许所有来源。 ## 开发规范 ### 代码风格 - 遵循阿里巴巴 Java 开发规范 - 使用 Lombok 简化代码 - 统一异常处理 ### 分层架构 - Controller 层:处理 HTTP 请求 - Service 层:业务逻辑处理 - Mapper 层:数据访问 - Entity/DTO:数据传输对象 ### 命名规范 - 类名使用 PascalCase - 方法名和变量名使用 camelCase - 常量使用 UPPER_SNAKE_CASE ## 常见问题 ### Q: 如何修改 JWT 密钥? A: 在 `JwtUtil.java` 中修改 `SECRET_KEY` 常量。 ### Q: 如何配置 Docker 连接? A: 在 `DockerClientManager.java` 中配置 Docker daemon 的连接地址。 ### Q: 如何添加新的 API 接口? A: 在 `controller` 包下创建新的 Controller 类,使用 `@RestController` 和 `@RequestMapping` 注解。 ### Q: 如何启用 HTTPS? A: 在 `application.yml` 中配置 SSL 证书,或使用反向代理(如 Nginx)。 ## 依赖说明 ### Spring Boot Starters - `spring-boot-starter-web`: Web 支持 - `spring-boot-starter-security`: 安全支持 - `spring-boot-starter-websocket`: WebSocket 支持 - `spring-boot-starter-oauth2-*`: OAuth2 支持 ### 数据库 - `mysql-connector-j`: MySQL 驱动 - `mybatis-plus-spring-boot3-starter`: MyBatis Plus ### 工具库 - `lombok`: 简化 Java 代码 - `hutool-all`: Java 工具集 - `fastjson`: JSON 处理 - `oshi-core`: 系统信息获取 ### 第三方集成 - `docker-java`: Docker API - `jsch`: SSH 连接 - `libvirt`: 虚拟机管理 - `jjwt-*`: JWT 处理 ## 许可证 本项目采用 MIT 许可证。 ## 联系方式 - 项目地址: [GitHub Repository] - 问题反馈: [Issues] - 联系人: Tomhui - 邮箱: tomhui@ibwedu.com - 网站: www.ibwedu.com