Skip to content

项目结构

哆啦A梦是一个基于微服务架构的现代化网络转发面板,采用前后端分离设计,集成了多个核心组件。

需要帮助?

📱 加入 Telegram 群组 | 🐛 GitHub Issues | 🚀 快速开始

总体架构

forward-panel/
├── 部署配置文件
├── 转发引擎 (go-gost)
├── 后端服务 (Spring Boot)
├── 前端界面 (Vue.js)
└── 文档站点 (VitePress)

完整目录结构

forward-panel/
├── docker-compose-v4.yml          # IPv4 环境部署配置
├── docker-compose-v6.yml          # IPv6 环境部署配置
├── gost.sql                       # MySQL 数据库初始化脚本
├── panel_install.sh               # 一键安装部署脚本
├── README.md                      # 项目说明文档

├── go-gost/                       # 转发引擎核心 (基于 go-gost)
│   ├── config.go                  # 主配置文件
│   ├── go.mod                     # Go 模块依赖管理
│   ├── go.sum                     # 依赖版本锁定
│   └── x/                         # 扩展功能模块
│       ├── admission/             # 准入控制
│       │   ├── admission.go       # 准入控制逻辑
│       │   └── plugin/            # 插件实现
│       ├── api/                   # API 接口定义
│       │   ├── api.go            # API 核心逻辑
│       │   ├── config_*.go       # 各种配置 API
│       │   └── service/          # 服务层实现
│       ├── auth/                  # 认证模块
│       ├── bypass/                # 绕行规则
│       ├── chain/                 # 转发链管理
│       ├── config/                # 配置管理
│       │   ├── cmd/              # 命令行工具
│       │   ├── loader/           # 配置加载器
│       │   └── parsing/          # 配置解析器
│       ├── connector/             # 连接器实现
│       │   ├── direct/           # 直连模式
│       │   ├── http/             # HTTP 连接器
│       │   ├── socks/            # SOCKS 代理
│       │   ├── relay/            # 中继连接
│       │   └── ...               # 其他连接器
│       ├── dialer/                # 拨号器实现
│       │   ├── direct/           # 直接拨号
│       │   ├── tcp/              # TCP 拨号器
│       │   ├── tls/              # TLS 拨号器
│       │   ├── ws/               # WebSocket 拨号器
│       │   └── ...               # 其他拨号器
│       ├── handler/               # 处理器实现
│       │   ├── http/             # HTTP 处理器
│       │   ├── socks/            # SOCKS 处理器
│       │   ├── relay/            # 中继处理器
│       │   ├── tunnel/           # 隧道处理器
│       │   └── ...               # 其他处理器
│       ├── listener/              # 监听器实现
│       │   ├── tcp/              # TCP 监听器
│       │   ├── tls/              # TLS 监听器
│       │   ├── ws/               # WebSocket 监听器
│       │   ├── quic/             # QUIC 监听器
│       │   └── ...               # 其他监听器
│       ├── limiter/               # 限流控制
│       │   ├── conn/             # 连接限流
│       │   ├── rate/             # 速率限流
│       │   └── traffic/          # 流量限流
│       ├── metrics/               # 监控指标
│       ├── recorder/              # 记录器
│       ├── resolver/              # 域名解析
│       ├── router/                # 路由管理
│       └── ...                   # 其他核心模块

├── springboot-backend/            # Spring Boot 后端服务
│   ├── Dockerfile                # 后端 Docker 镜像构建文件
│   ├── pom.xml                   # Maven 项目配置和依赖管理
│   ├── applog/                   # 应用日志目录
│   ├── src/                      # 源代码目录
│   │   ├── main/                 # 主要源码
│   │   │   ├── java/             # Java 源码
│   │   │   │   └── com/          # 包结构
│   │   │   │       └── panel/    # 项目主包
│   │   │   │           ├── controller/  # 控制层 (API 接口)
│   │   │   │           ├── service/     # 服务层 (业务逻辑)
│   │   │   │           ├── mapper/      # 数据访问层 (MyBatis)
│   │   │   │           ├── entity/      # 实体类 (数据模型)
│   │   │   │           ├── config/      # 配置类
│   │   │   │           └── util/        # 工具类
│   │   │   └── resources/        # 资源文件
│   │   │       ├── application.yml      # 应用配置
│   │   │       ├── mapper/              # MyBatis 映射文件
│   │   │       └── static/              # 静态资源
│   │   └── test/                 # 测试代码
│   │       └── java/             # 测试源码
│   └── target/                   # 编译输出目录

├── vue-frontend/                  # Vue.js 前端应用
│   ├── Dockerfile                # 前端 Docker 镜像构建文件
│   ├── nginx.conf               # Nginx 服务器配置
│   ├── package.json             # NPM 包管理和脚本配置
│   ├── package-lock.json        # NPM 依赖版本锁定
│   ├── babel.config.js          # Babel 编译配置
│   ├── vue.config.js            # Vue CLI 构建配置
│   ├── jsconfig.json            # JavaScript 项目配置
│   ├── public/                  # 静态资源
│   │   ├── index.html           # HTML 模板
│   │   └── favicon.ico          # 网站图标
│   ├── src/                     # 前端源码
│   │   ├── main.js              # 应用入口文件
│   │   ├── App.vue              # 根组件
│   │   ├── api/                 # API 接口封装
│   │   │   ├── index.js         # 主 API 文件
│   │   │   └── network.js       # 网络请求配置
│   │   ├── assets/              # 静态资源
│   │   │   └── logo.png         # 项目 Logo
│   │   ├── components/          # 可复用组件
│   │   │   └── EmptyState.vue   # 空状态组件
│   │   ├── directives/          # 自定义指令
│   │   │   └── permission.js    # 权限指令
│   │   ├── router/              # 路由配置
│   │   │   └── index.js         # 路由定义
│   │   ├── utils/               # 工具函数
│   │   │   ├── auth.js          # 认证工具
│   │   │   ├── clipboard.js     # 剪贴板工具
│   │   │   └── jwt.js           # JWT 处理
│   │   └── views/               # 页面组件
│   │       ├── Login.vue        # 登录页面
│   │       ├── Home.vue         # 主框架页面
│   │       ├── Index.vue        # 仪表板首页
│   │       ├── ChangePassword.vue  # 修改密码页面
│   │       ├── node.vue         # 节点管理页面
│   │       ├── Tunnel.vue       # 隧道管理页面
│   │       ├── Forward.vue      # 转发管理页面
│   │       ├── User.vue         # 用户管理页面
│   │       └── Limit.vue        # 限速规则页面
│   └── node_modules/            # NPM 依赖包

└── vitepress/                     # 文档站点 (VitePress)
    ├── .vitepress/               # VitePress 配置
    │   └── config.js             # 站点配置文件
    ├── package.json              # 文档站点依赖
    ├── index.md                  # 文档首页
    ├── getting-started.md        # 快速开始指南
    ├── guide.md                  # 详细使用指南
    └── public/                   # 静态资源
        └── favicon.ico           # 文档站点图标

核心组件详解

1. 转发引擎 (go-gost)

功能: 网络流量转发的核心引擎 技术栈: Go 语言 主要特性:

  • 支持多种协议: TCP, UDP, TLS, WebSocket, QUIC 等
  • 灵活的连接器和监听器架构
  • 内置流量限制和监控功能
  • 支持中继链和负载均衡
  • 插件化的认证和绕行机制

关键模块:

  • connector/: 实现各种出站连接器
  • listener/: 实现各种入站监听器
  • handler/: 处理不同协议的数据转发
  • limiter/: 提供流量控制和限速功能
  • recorder/: 记录流量统计和连接信息

2. 后端服务 (Spring Boot)

功能: 提供 RESTful API 和业务逻辑处理 技术栈: Java + Spring Boot + MyBatis + MySQL 主要特性:

  • 用户认证和权限管理
  • 节点、隧道、转发规则的 CRUD 操作
  • 流量统计和监控数据收集
  • 与 go-gost 引擎的配置同步
  • 用户权限分级和资源限额管理

核心模块:

  • controller/: REST API 接口层
  • service/: 业务逻辑处理层
  • mapper/: 数据访问层 (MyBatis)
  • entity/: 数据模型和实体类
  • config/: 系统配置和安全配置

3. 前端界面 (Vue.js)

功能: 现代化的 Web 管理界面 技术栈: Vue.js 2 + Element UI + Axios 主要特性:

  • 响应式设计,支持桌面和移动端
  • 实时数据更新和图表展示
  • 直观的操作界面和用户体验
  • 权限控制和路由守卫
  • 组件化开发和代码复用

页面结构:

  • Login.vue: 用户登录界面
  • Home.vue: 主框架布局
  • Index.vue: 仪表板和统计概览
  • node.vue: 节点管理和监控
  • Tunnel.vue: 隧道配置和管理
  • Forward.vue: 转发规则管理
  • User.vue: 用户和权限管理
  • Limit.vue: 限速规则配置

4. 数据库设计

技术: MySQL 8.0+ 主要表结构:

  • users: 用户账号和基本信息
  • nodes: 节点信息和状态
  • tunnels: 隧道配置和参数
  • forwards: 转发规则定义
  • user_permissions: 用户权限分配
  • traffic_stats: 流量统计数据
  • limit_rules: 限速规则配置

5. 部署架构

容器化: Docker + Docker Compose 网络模式: 支持 IPv4/IPv6 双栈 服务组件:

  • vue-frontend: Nginx + Vue.js 静态文件服务
  • springboot-backend: Spring Boot API 服务
  • mysql: MySQL 数据库服务
  • go-gost: 转发引擎实例

端口分配:

  • 6366: 前端 Web 界面
  • 6365: 后端 API 服务
  • 3306: MySQL 数据库 (内部)
  • 动态: 转发端口范围

开发和扩展

添加新功能

  1. 后端 API: 在 springboot-backend/src/main/java/ 中添加新的 Controller 和 Service
  2. 前端页面: 在 vue-frontend/src/views/ 中创建新的 Vue 组件
  3. 数据库: 修改 gost.sql 添加新的表结构
  4. 转发逻辑: 扩展 go-gost/x/ 中的相关模块

自定义配置

  • Docker 配置: 修改 docker-compose-*.yml 文件
  • 前端配置: 调整 vue-frontend/vue.config.js
  • 后端配置: 修改 springboot-backend/src/main/resources/application.yml
  • Nginx 配置: 更新 vue-frontend/nginx.conf

文档维护

  • 用户文档: 在 vitepress/ 目录下编辑 Markdown 文件
  • API 文档: 使用 Swagger 注解自动生成
  • 代码注释: 遵循各语言的文档注释规范

这个项目采用了现代化的微服务架构,各个组件职责明确,易于维护和扩展。通过容器化部署,可以快速在不同环境中部署和运行。