logo
0
0
WeChat Login

家庭资产管理平台

一个基于 Spring Boot + Vue 3 + CNB 的家庭资产管理平台,支持资产扫描发现、端口监控和服务部署清单管理。

功能特性

1. 资产管理

  • 局域网 IP 扫描
  • 设备信息收集(IP、MAC 地址、主机名)
  • 在线/离线状态监控
  • 资产分类管理

2. 端口监控

  • 常用端口扫描(HTTP, SSH, MySQL, Redis 等)
  • 端口占用情况展示
  • 服务识别
  • Docker 端口映射关联

3. Docker 容器管理

  • 容器列表查看
  • 容器状态监控
  • 镜像信息展示
  • 端口映射查看

4. 服务部署清单

  • 服务信息记录
  • 部署类型管理(Docker、原生、Docker Compose)
  • 配置文件路径记录
  • 健康检查管理
  • 服务分类和搜索

技术栈

后端

  • Spring Boot 3.2.2
  • MyBatis 3.0.3
  • MySQL 8.0+
  • Redis 7.0+
  • MinIO 8.5+
  • Docker Java API 3.3.6
  • Lombok

前端

  • Vue 3.4.21 (Composition API)
  • TypeScript 5.4.2
  • Vite 5.1.6
  • Pinia 2.1.7
  • Element Plus 2.6.0
  • Axios 1.6.7
  • Vue Router 4.3.0

CNB 集成

  • CNB CI/CD
  • Docker 多架构构建
  • Kubernetes 自动部署

项目结构

home-asset-manager/ ├── home-asset-manager-backend/ # Spring Boot 后端 │ ├── src/main/java/com/homeasset/ │ │ ├── controller/ # 控制器层 │ │ ├── service/ # 服务层 │ │ ├── mapper/ # 数据访问层 │ │ ├── entity/ # 实体类 │ │ ├── dto/ # 数据传输对象 │ │ ├── config/ # 配置类 │ │ ├── scanner/ # 扫描器 │ │ └── handler/ # 全局异常处理 │ ├── src/main/resources/ │ │ └── application.yml # 应用配置 │ ├── pom.xml # Maven 配置 │ └── Dockerfile # 后端镜像构建 │ ├── home-asset-manager-frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── api/ # API 请求 │ │ ├── components/ # 公共组件 │ │ ├── views/ # 页面视图 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── types/ # TypeScript 类型 │ │ └── utils/ # 工具函数 │ ├── package.json # npm 配置 │ ├── vite.config.ts # Vite 配置 │ └── Dockerfile # 前端镜像构建 │ ├── docker-compose.yml # 本地开发环境 ├── .cnb.yml # CNB 构建配置 ├── schema.sql # 数据库初始化脚本 ├── .gitignore # Git 忽略规则 └── README.md # 项目文档

快速开始

使用 Docker Compose(推荐)

  1. 克隆项目:
git clone <repository-url> cd home-asset-manager
  1. 启动所有服务:
docker-compose up -d
  1. 访问应用:

手动运行

后端

  1. 初始化数据库:
mysql -u root -p < schema.sql
  1. 进入后端目录:
cd home-asset-manager-backend
  1. 修改配置文件 src/main/resources/application.yml(配置公共中间件地址)

  2. 运行后端:

mvn spring-boot:run

前端

  1. 进入前端目录:
cd home-asset-manager-frontend
  1. 安装依赖:
npm install
  1. 运行开发服务器:
npm run dev
  1. 构建生产版本:
npm run build

公共中间件配置

项目使用以下公共中间件(需要配置访问权限):

中间件地址用途
MySQL192.168.5.66:3306关系型数据库
Redis192.168.5.66:6379缓存数据库
MinIO192.168.5.66:9000对象存储

环境变量配置

application.yml 或环境变量中配置:

spring: datasource: url: jdbc:mysql://192.168.5.66:3306/home_asset_manager username: root password: password redis: host: 192.168.5.66 port: 6379 password: password minio: endpoint: http://192.168.5.66:9000 access-key: minioadmin secret-key: minioadmin123

CNB 平台集成

CNB 配置

  1. 组织:code-channel
  2. 仓库:home-asset-manager
  3. 平台地址:https://cnb.cool

部署到 CNB

  1. 配置 Git:
git config --local user.name cool.cnb git config --local user.email "WyCMvfISebPSRhNfPflU92+cool.cnb@noreply.cnb.cool"
  1. 添加远程仓库:
git remote add origin https://cnb.cool/code-channel/home-asset-manager.git
  1. 推送代码:
git add . git commit -m "初始化项目" git push -u origin master
  1. CNB 会自动触发 CI/CD 流程:
    • 构建 Docker 镜像
    • 推送到镜像仓库
    • 更新 Kubernetes 集群

CNB 环境变量

CNB 会自动注入以下环境变量:

  • CNB_DOCKER_REGISTRY - Docker 仓库地址(docker.cnb.cool)
  • CNB_REPO_SLUG_LOWERCASE - 仓库路径
  • CI_COMMIT_SHORT_SHA - Git 提交短哈希

密钥配置

在密钥仓库 code-channel/secret 创建配置文件:

  • kuboard-cicd-home-asset-manager.yml

API 接口

资产管理 API

  • POST /api/assets/scan - 扫描网络资产
  • GET /api/assets - 获取所有资产
  • GET /api/assets/online - 获取在线资产
  • GET /api/assets/offline - 获取离线资产
  • PUT /api/assets/{id} - 更新资产信息
  • DELETE /api/assets/{id} - 删除资产
  • GET /api/assets/statistics - 获取资产统计

端口扫描 API

  • POST /api/scan/ports/{ip} - 扫描指定 IP 的端口
  • GET /api/scan/ports/{ip} - 获取指定 IP 的端口信息
  • GET /api/scan/ports - 获取所有开放端口

Docker API

  • POST /api/scan/docker - 扫描 Docker 容器
  • GET /api/scan/docker - 获取所有容器
  • GET /api/scan/docker/running - 获取运行中的容器

服务清单 API

  • GET /api/services - 获取所有服务
  • POST /api/services - 创建服务
  • PUT /api/services/{id} - 更新服务
  • DELETE /api/services/{id} - 删除服务
  • GET /api/services/statistics - 获取服务统计

开发指南

后端开发规范

  1. 分层结构

    • Controller:接收请求,参数校验
    • Service:业务逻辑处理
    • Mapper:数据访问
    • Entity:数据库实体
    • DTO:数据传输对象
  2. 统一响应格式

Result<Asset> result = Result.success(asset);
  1. 全局异常处理
@RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public Result<?> handleException(Exception e) { return Result.error(500, e.getMessage()); } }

前端开发规范

  1. 组合式 API
<script setup lang="ts"> import { ref, onMounted } from 'vue' import { getAssets } from '@/api/asset' const assets = ref<Asset[]>([]) onMounted(async () => { assets.value = await getAssets() }) </script>
  1. API 请求封装
import request from '@/utils/request' export const getAssets = () => { return request<Asset[]>({ url: '/assets', method: 'get' }) }
  1. Pinia 状态管理
export const useAppStore = defineStore('app', () => { const loading = ref(false) const setLoading = (value: boolean) => { loading.value = value } return { loading, setLoading } })

注意事项

  1. Docker 权限:后端需要访问 Docker socket,确保有相应权限
  2. 网络扫描:网络扫描可能需要一些时间,请耐心等待
  3. 防火墙:确保防火墙允许访问所需的端口
  4. 资源限制:大量 IP 扫描会消耗较多系统资源
  5. 中间件访问:确保能访问公共中间件服务

许可证

MIT License

About

家庭资产管理平台 - 支持资产扫描、端口监控、Docker容器管理和自动化部署

Language
Java65.4%
Vue26.1%
JavaScript3.9%
TypeScript2.9%
Others1.7%