# MeshRay 运行指南

**更新时间**: 2026-03-24  
**状态**: ✅ **可以正常运行**

---

## 🚀 **快速启动**

### **方式一：使用 go run（推荐）**

```bash
# 在项目根目录执行
cd e:\Project\MeshRay
go run ./cmd/meshray
```

**优点**:
- ✅ 不会被 Windows SmartScreen 拦截
- ✅ 开发调试方便
- ✅ 可以看到实时日志输出

**访问地址**: http://localhost:9531

---

### **方式二：运行编译后的 exe**

```bash
# 直接运行
.\meshray.exe
```

**如果遇到"应用程序控制策略已阻止此文件"**：

#### **解决方案 1：右键解锁**
1. 右键点击 `meshray.exe`
2. 选择"属性"
3. 在底部勾选"解除锁定"
4. 点击"确定"
5. 再次运行

#### **解决方案 2：使用数字证书签名**
需要购买代码签名证书对 exe 进行签名（适合生产环境）

#### **解决方案 3：临时禁用 SmartScreen**
不推荐，会降低系统安全性

---

## ✅ **验证运行状态**

### **成功启动的标志**

```
MeshRay v2.0.0 - Starting...
✅ 配置加载成功
✅ 日志系统初始化成功
正在连接数据库...
✅ 数据库初始化成功
正在初始化管理员账户...
✅ 管理员账户已存在（用户名：admin）
正在初始化管理策...
✅ 默认策略初始化成功
🚀 正在启动 MeshRay...
🌐 MeshRay 启动成功！
📍 访问地址：http://localhost:9531
💡 提示：请在浏览器中打开上述地址访问管理面板
```

---

### **检查服务是否正常**

#### **1. 访问登录页面**
```
http://localhost:9531
```
应该看到登录界面

#### **2. 健康检查接口**
```bash
curl http://localhost:9531/health
```

**预期响应**:
```json
{
  "status": "ok"
}
```

#### **3. 测试 API**
```bash
# 获取统计数据（需要先登录）
curl http://localhost:9531/api/v1/dashboard/stats
```

---

## 🔧 **常见问题解决**

### **问题 1：端口被占用**

**错误信息**:
```
bind: address already in use
```

**解决方案**:

1. **查找占用端口的进程**:
```powershell
netstat -ano | findstr :9531
```

2. **杀死占用端口的进程**:
```powershell
taskkill /F /PID <进程 ID>
```

3. **或者修改配置端口**:
编辑 `configs/config.yaml`:
```yaml
server:
  port: 9532  # 改为其他端口
```

---

### **问题 2：数据库锁定**

**错误信息**:
```
database is locked
```

**解决方案**:

1. **停止应用**

2. **删除数据库锁文件**:
```powershell
rm data\*.db-shm
rm data\*.db-wal
```

3. **重新启动应用**

---

### **问题 3：前端资源找不到**

**错误信息**:
```
open web/dist/index.html: The system cannot find the path specified.
```

**解决方案**:

1. **重新编译前端**:
```bash
cd web
npm run build
```

2. **确保 dist 目录存在**:
```bash
ls web/dist
```

3. **重新编译后端**:
```bash
go build -o meshray.exe ./cmd/meshray
```

---

### **问题 4：托盘图标错误**

**错误信息**:
```
ERROR systray: Unable to set icon
```

**说明**: 
- ⚠️ 这是 Windows 11 的已知问题
- ✅ **不影响功能使用**
- ✅ 可以安全忽略

**解决方案**（可选）:
如果不想看到这个错误，可以在 `internal/tray/tray.go` 中注释掉设置图标的代码。

---

## 📊 **运行日志示例**

### **正常启动日志**

```
2026-03-24T10:30:00.000+0800    INFO    api/server.go:150      MeshRay v2.0.0 - Starting...
2026-03-24T10:30:00.001+0800    INFO    config/config.go:45    ✅ 配置加载成功
2026-03-24T10:30:00.002+0800    INFO    logging/zap.go:30      ✅ 日志系统初始化成功
2026-03-24T10:30:00.003+0800    INFO    store/sqlite.go:78     正在连接数据库...
2026-03-24T10:30:00.010+0800    INFO    store/sqlite.go:85     ✅ 数据库初始化成功
2026-03-24T10:30:00.011+0800    INFO    service/user.go:50     正在初始化管理员账户...
2026-03-24T10:30:00.015+0800    INFO    service/user.go:65     ✅ 管理员账户已存在（用户名：admin）
2026-03-24T10:30:00.016+0800    INFO    service/policy.go:40   正在初始化管理策...
2026-03-24T10:30:00.020+0800    INFO    service/policy.go:55   ✅ 默认策略初始化成功
2026-03-24T10:30:00.021+0800    INFO    api/server.go:200      🚀 正在启动 MeshRay...
2026-03-24T10:30:00.025+0800    INFO    api/server.go:210      🌐 MeshRay 启动成功！
2026-03-24T10:30:00.026+0800    INFO    api/server.go:211      📍 访问地址：http://localhost:9531
2026-03-24T10:30:00.027+0800    INFO    api/server.go:212      💡 提示：请在浏览器中打开上述地址访问管理面板
```

---

## 🎯 **首次使用**

### **1. 登录系统**

**默认管理员账户**:
- 用户名：`admin`
- 密码：`admin123`

**访问**: http://localhost:9531

---

### **2. 创建第一个组网**

1. 登录后进入 Dashboard
2. 点击左侧菜单"组网管理"
3. 点击"创建组网"按钮
4. 填写组网信息：
   - 名称：例如"我的第一个网络"
   - 描述：可选
   - 策略：选择默认策略
5. 点击"提交"

---

### **3. 添加设备**

1. 进入刚创建的组网详情
2. 点击"添加设备"
3. 填写设备信息：
   - 名称：例如"我的电脑"
   - IP 地址：自动分配或手动指定
4. 点击"提交"
5. 下载设备配置文件（.conf 文件）

---

### **4. 配置 WireGuard**

**Windows 客户端**:

1. 下载并安装 WireGuard: https://www.wireguard.com/install/
2. 打开 WireGuard 客户端
3. 点击"导入隧道"
4. 选择刚才下载的 `.conf` 文件
5. 点击"激活"按钮

**Linux 客户端**:

```bash
# 复制配置文件
sudo cp your-network.conf /etc/wireguard/

# 启动 WireGuard
sudo wg-quick up your-network

# 查看状态
sudo wg show
```

---

## 📈 **性能监控**

### **查看系统状态**

访问 Dashboard 可以看到：
- ✅ 组网数量统计
- ✅ 设备在线状态
- ✅ CPU/内存/磁盘使用率
- ✅ 网络流量监控
- ✅ 最近日志

---

### **查看日志**

**方法 1**: 通过 Web 界面
- 访问 `/settings/logs`

**方法 2**: 查看日志文件
```bash
# 日志文件位置
logs\meshray.log
```

**方法 3**: 实时日志输出
```bash
# go run 模式下会自动输出到终端
```

---

## 🔐 **安全建议**

### **1. 修改默认密码**

首次登录后立即修改：
1. 点击右上角用户头像
2. 选择"个人信息"
3. 修改密码
4. 保存

---

### **2. 配置 HTTPS（生产环境）**

编辑 `configs/config.yaml`:
```yaml
server:
  https:
    enabled: true
    cert_file: /path/to/cert.pem
    key_file: /path/to/key.pem
```

---

### **3. 配置防火墙**

**Windows**:
```powershell
# 允许 9531 端口
New-NetFirewallRule -DisplayName "MeshRay" -Direction Inbound -LocalPort 9531 -Protocol TCP -Action Allow
```

**Linux**:
```bash
sudo ufw allow 9531/tcp
```

---

## 🛠️ **开发模式**

### **前后端同时开发**

**终端 1 - 后端**:
```bash
cd e:\Project\MeshRay
go run ./cmd/meshray
```

**终端 2 - 前端**:
```bash
cd e:\Project\MeshRay\web
npm run dev
```

**访问**:
- 后端 API: http://localhost:9531
- 前端开发服务器：http://localhost:5173

**前端会自动代理到后端**:
- `vite.config.js` 中已配置代理
- 所有 `/api/*` 请求会转发到后端

---

## 📝 **总结**

### **推荐运行方式**

| 场景 | 方式 | 命令 |
|------|------|------|
| **开发调试** | go run | `go run ./cmd/meshray` |
| **生产部署** | 编译 exe | `go build -o meshray.exe` |
| **快速测试** | go run | `go run ./cmd/meshray` |

---

### **关键信息**

- ✅ **默认端口**: 9531
- ✅ **默认账户**: admin / admin123
- ✅ **数据库位置**: `data/meshray.db`
- ✅ **日志位置**: `logs/meshray.log`
- ✅ **配置文件**: `configs/config.yaml`

---

**运行状态**: ✅ **可以正常访问**  
**访问地址**: http://localhost:9531  
**下一步**: 在浏览器中打开上述地址开始使用！🚀

*MeshRay - 让 P2P 组网更简单！* ✨
