# XYZW Token Manager 部署说明

## 快速启动

### 本地开发模式
```bash
start-local.bat
```
- 端口：3001
- 访问：http://localhost:3001
- 仅本地访问

### 部署模式（公网访问）
```bash
start-deploy.bat
```
- 端口：25432
- 本地访问：http://localhost:25432
- 域名访问：http://winnas.whtnas.top:25432
- 支持：IPv4本地 + IPv6公网

## 部署配置步骤

### 1. 域名DNS配置

确保域名 `winnas.whtnas.top` 已配置IPv6 AAAA记录：

```
类型: AAAA
主机记录: winnas (或 @)
记录值: [你的IPv6地址]
TTL: 600
```

可以通过以下命令验证DNS解析：
```bash
nslookup -type=AAAA winnas.whtnas.top
```

### 2. Windows防火墙配置

#### 方法一：通过PowerShell添加防火墙规则（推荐）

以管理员身份运行PowerShell，执行以下命令：

```powershell
# 添加入站规则 - 允许25432端口
New-NetFirewallRule -DisplayName "XYZW Token Manager - 25432" -Direction Inbound -LocalPort 25432 -Protocol TCP -Action Allow -Profile Any

# 验证规则是否添加成功
Get-NetFirewallRule -DisplayName "XYZW Token Manager - 25432"
```

#### 方法二：通过图形界面添加

1. 打开 `Windows Defender 防火墙` → `高级设置`
2. 点击左侧 `入站规则` → 右侧 `新建规则`
3. 选择 `端口` → 下一步
4. 选择 `TCP`，特定本地端口：`25432` → 下一步
5. 选择 `允许连接` → 下一步
6. 选择所有配置文件（域、专用、公用）→ 下一步
7. 名称：`XYZW Token Manager - 25432` → 完成

### 3. 路由器端口转发配置（如需要）

如果你的服务器在NAT后面，需要在路由器配置端口转发：

- 外部端口：25432
- 内部端口：25432
- 内部IP：[服务器的内网IP]
- 协议：TCP
- 备注：IPv6通常不需要NAT，可直接访问

### 4. 验证部署

#### 本地验证
```bash
# IPv4本地访问
curl http://localhost:25432

# IPv6本地访问
curl http://[::1]:25432
```

#### 远程验证
```bash
# 通过域名访问
curl http://winnas.whtnas.top:25432

# 直接IPv6访问
curl http://[你的IPv6地址]:25432
```

或在浏览器中访问：
- http://winnas.whtnas.top:25432

### 5. 安全建议

1. **定期更新依赖**
   ```bash
   npm update
   ```

2. **使用HTTPS（可选）**
   - 考虑使用反向代理（如Nginx）配置SSL证书
   - 推荐使用Let's Encrypt免费证书

3. **限制访问来源**
   - 如果不需要公网访问，可以只允许特定IP
   - 在防火墙规则中添加远程IP限制

4. **监控日志**
   - 定期检查访问日志
   - 关注异常访问行为

## 常见问题

### Q1: 无法通过域名访问
- 检查DNS是否正确解析：`nslookup winnas.whtnas.top`
- 检查防火墙规则是否生效
- 确认服务是否正常运行：`netstat -ano | findstr 25432`

### Q2: 只能本地访问，外网无法访问
- 检查服务器的公网IPv6地址是否正确
- 确认防火墙允许外部访问
- 检查路由器是否有IPv6防火墙规则

### Q3: IPv6无法访问
- 确认本地网络支持IPv6
- 检查DNS的AAAA记录是否正确
- 测试IPv6连通性：`ping -6 winnas.whtnas.top`

### Q4: 端口被占用
```bash
# 查看端口占用情况
netstat -ano | findstr 25432

# 结束占用端口的进程
taskkill /F /PID [进程ID]
```

## 维护命令

```bash
# 查看防火墙规则
Get-NetFirewallRule -DisplayName "*XYZW*"

# 禁用防火墙规则
Disable-NetFirewallRule -DisplayName "XYZW Token Manager - 25432"

# 启用防火墙规则
Enable-NetFirewallRule -DisplayName "XYZW Token Manager - 25432"

# 删除防火墙规则
Remove-NetFirewallRule -DisplayName "XYZW Token Manager - 25432"

# 查看端口监听状态
netstat -ano | findstr 25432
```

## 配置文件说明

### vite.config.js
服务器配置通过环境变量控制：
- `VITE_PORT`: 服务端口（默认3001）
- `VITE_HOST`: 监听地址（默认0.0.0.0，监听所有接口）

### 域名白名单
在 `vite.config.js` 中配置：
```javascript
allowedHosts: ['winnas.whtnas.top', 'localhost', '127.0.0.1']
```

如需添加其他域名，请在此数组中添加。

## 技术支持

如遇到问题，请检查：
1. Node.js版本（建议v18+）
2. npm依赖是否完整安装
3. 系统防火墙配置
4. 网络连通性

---

最后更新：2025-10-10

