- go.mod module path matches repo zkcoi/Meshray-Manager (case-distinct from zkcoi/Meshray/core)
- rewrite internal imports meshray/{internal,web,pkg} -> Meshray-Manager/... (core refs kept)
- sync README.md / install.sh repo URLs; add CHANGELOG entry
200 lines
5.5 KiB
Markdown
200 lines
5.5 KiB
Markdown
# MeshRay
|
||
|
||
> 去中心化 P2P 组网平台
|
||
|
||
> **💤 项目状态:个人练手的 Vibecoding 项目,目前已暂时搁置,后续有时间再继续完善。**
|
||
|
||
[](https://git.zkcoi.com/zkcoi/Meshray-Manager)
|
||
[](https://git.zkcoi.com/zkcoi/Meshray-Manager)
|
||
[](https://golang.org)
|
||
[](LICENSE)
|
||
|
||
---
|
||
|
||
## 🌟 核心特性
|
||
|
||
- ✅ **去中心化架构** — 无中心服务器,设备间直接 P2P 通信
|
||
- ✅ **智能穿透** — STUN + TURN 自动打洞,支持多种 NAT 类型
|
||
- ✅ **9 层降级传输** — 从 Direct-UDP 到 WS/WSS,链路不通自动切换
|
||
- ✅ **Mesh 中继** — 设备间中继转发,突破网络限制
|
||
- ✅ **安全加密** — WireGuard 官方库 + Ed25519 签名 + AES-256-GCM
|
||
- ✅ **DDNS 动态域名** — Cloudflare / 腾讯云 DNS 自动同步
|
||
- ✅ **Web 管理面板** — Go embed 内嵌静态资源,单文件部署
|
||
- ✅ **完整通知系统** — WebSocket 实时推送 + 持久化存储
|
||
|
||
---
|
||
|
||
## 🚀 快速开始
|
||
|
||
**Windows**:
|
||
```bash
|
||
start.bat
|
||
```
|
||
|
||
**Linux/Mac**:
|
||
```bash
|
||
chmod +x start.sh
|
||
./start.sh
|
||
```
|
||
|
||
**手动编译运行**:
|
||
```bash
|
||
go build -o meshray.exe ./cmd/meshray
|
||
./meshray.exe
|
||
```
|
||
|
||
访问:http://localhost:9531
|
||
|
||
> 前端已内嵌到 Go 二进制中,无需安装 Node.js 或单独编译前端。
|
||
|
||
---
|
||
|
||
## 📋 功能清单
|
||
|
||
### ✅ 已实现
|
||
|
||
| 功能模块 | 说明 |
|
||
|---------|------|
|
||
| 设备管理 | WG 设备增删改查、配置生成 |
|
||
| 组网管理 | 组网创建/加入/启停、MeshSeed 凭证 |
|
||
| 传输策略 | 9 层降级策略、自动/自定义/手动三种模式 |
|
||
| DDNS | Cloudflare + 腾讯云、IP 自动检测、TXT 记录 |
|
||
| 通知推送 | WebSocket 实时推送 + SQLite 持久化 |
|
||
| 备份恢复 | 创建/列表/恢复/删除/下载 |
|
||
| 系统设置 | 修改密码、重启核心、版本更新 |
|
||
| 仪表盘 | 网络状态、链路分布、系统信息 |
|
||
|
||
### ⏳ 待完善
|
||
|
||
| 功能模块 | 说明 |
|
||
|---------|------|
|
||
| 阿里云 DNS Provider | 依赖 libdns/aliyun 安装 |
|
||
| 备份恢复(完整实现) | 数据库导出 + 文件打包 |
|
||
| WebSocket 中间件 | 已有轮询,可增加实时推送 |
|
||
|
||
---
|
||
|
||
## 🛠️ 技术栈
|
||
|
||
### 后端
|
||
| 组件 | 技术 | 用途 |
|
||
|------|------|------|
|
||
| 语言 | Go 1.21+ | 主要编程语言 |
|
||
| Web 框架 | Gin | HTTP 服务器和路由 |
|
||
| ORM | GORM | 数据库操作 |
|
||
| 数据库 | SQLite (glebarez) | 嵌入式数据库 |
|
||
| 日志 | Zap | 结构化日志 |
|
||
| 配置 | Viper | 配置管理 |
|
||
| WireGuard | golang.zx2c4.com/wireguard | 用户态 WG 实现 |
|
||
| 认证 | bcrypt + golang-jwt | 密码加密 + JWT |
|
||
| NAT 穿透 | pion/turn, pion/webrtc | STUN/TURN/ICE |
|
||
|
||
### 前端
|
||
| 组件 | 技术 | 用途 |
|
||
|------|------|------|
|
||
| UI | 纯 JavaScript (ES6+) | 管理面板 |
|
||
| 静态资源 | Go embed | 内嵌到二进制 |
|
||
|
||
---
|
||
|
||
## 📖 文档
|
||
|
||
- 📗 [项目架构与详细介绍](docs/README.md)
|
||
- 📙 [完整功能开发总览](docs/README_开发完成总览.md)
|
||
- 📕 [功能验证与测试报告](docs/功能验证与测试报告.md)
|
||
|
||
---
|
||
|
||
## 🎯 使用场景
|
||
|
||
### 家庭组网
|
||
- 远程访问家中 NAS
|
||
- 搭建私有云服务
|
||
- 连接多个智能设备
|
||
|
||
### 企业办公
|
||
- 分支机构互联
|
||
- 远程办公接入
|
||
- 安全数据传输
|
||
|
||
### 开发测试
|
||
- 本地环境暴露公网
|
||
- 多设备联调测试
|
||
- Demo 演示环境
|
||
|
||
---
|
||
|
||
## 📊 项目结构
|
||
|
||
```
|
||
meshray/
|
||
├── cmd/ # 可执行文件入口
|
||
├── core/ # MeshRay-Core 建连层(9 层传输策略)
|
||
│ ├── connect/ # Direct-UDP / FakeTCP / TURN / STUN / ICE / WS
|
||
│ ├── transport/ # ConnManager + Relay 转发
|
||
│ └── plugins/wg/ # WireGuard 插件
|
||
├── internal/ # 内部实现
|
||
│ ├── api/ # REST API(Gin Handler + Middleware)
|
||
│ ├── ctr/ # 调度中心(WG 设备管理)
|
||
│ ├── dnsprovider/ # DNS Provider 抽象层
|
||
│ ├── service/ # 业务逻辑层
|
||
│ └── store/sqlite/ # 数据库访问层
|
||
├── pkg/ # 公共工具库
|
||
├── web/ # 前端静态资源(Go embed 内嵌)
|
||
├── deploy/ # Docker / Systemd 部署
|
||
├── docs/ # 技术文档
|
||
└── config.yaml # 运行配置
|
||
```
|
||
|
||
---
|
||
|
||
## 🔒 安全性
|
||
|
||
- ✅ **bcrypt 密码加密** — DefaultCost 强度
|
||
- ✅ **JWT 身份验证** — Token 过期机制
|
||
- ✅ **CORS 跨域控制** — 仅允许特定来源
|
||
- ✅ **SQL 参数化查询** — GORM 防注入
|
||
- ✅ **操作日志记录** — AuditLog 审计追踪
|
||
|
||
---
|
||
|
||
## 📈 性能指标
|
||
|
||
- **启动时间**: < 2 秒
|
||
- **API 响应**: < 100ms (本地)
|
||
- **数据库查询**: < 50ms
|
||
- **并发连接**: 支持 100+ 客户端
|
||
- **二进制体积**: 前端内嵌,单文件部署
|
||
|
||
---
|
||
|
||
## 🤝 开发
|
||
|
||
```bash
|
||
# 克隆项目
|
||
git clone https://git.zkcoi.com/zkcoi/Meshray-Manager.git
|
||
cd meshray
|
||
|
||
# 安装依赖
|
||
go mod download
|
||
|
||
# 运行
|
||
go run cmd/meshray/main.go
|
||
# 访问 http://localhost:9531
|
||
```
|
||
|
||
---
|
||
|
||
## 📄 许可证
|
||
|
||
MIT License
|
||
|
||
---
|
||
|
||
## 🙏 致谢
|
||
|
||
- [WireGuard](https://www.wireguard.com/) — 安全的 VPN 技术
|
||
- [Gin](https://gin-gonic.com/) — Go Web 框架
|
||
- [libdns](https://github.com/libdns/libdns) — DNS Provider 库
|
||
- [pion](https://github.com/pion) — WebRTC / TURN / STUN 实现
|