docs: 更新部署指南,MPC-System 部署在 Nginx 服务器 192.168.1.100
架构更新: - Nginx + MPC-System 服务器 (192.168.1.100) - Nginx 反向代理 (80/443) - MPC-System Go 服务 (4000) - 后端微服务服务器 (192.168.1.111) - 所有 NestJS 微服务 - mpc-service 调用 192.168.1.100:4000 新增内容: - MPC-System 部署指南 (systemd/Docker 两种方式) - MPC-System API 端点说明 - 防火墙配置 (只允许后端服务器访问) - MPC 相关故障排查 - 健康检查命令更新 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
a9dc2b441e
commit
e082cda8b7
|
|
@ -12,22 +12,31 @@
|
|||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ Nginx 服务器 (公网) │
|
||||
│ Nginx + MPC-System 服务器 192.168.1.100 (公网) │
|
||||
│ https://rwaapi.szaiai.com │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ /etc/nginx/conf.d/rwaapi.conf │ │
|
||||
│ │ │ │
|
||||
│ │ /api/v1/user/* → 192.168.1.111:3000 (Identity) │ │
|
||||
│ │ /api/v1/auth/* → 192.168.1.111:3000 (Identity) │ │
|
||||
│ │ /api/v1/wallet/* → 192.168.1.111:3002 (Wallet) │ │
|
||||
│ │ /api/v1/trading/* → 192.168.1.111:3002 (Wallet) │ │
|
||||
│ │ /api/v1/planting/* → 192.168.1.111:3003 (Planting) │ │
|
||||
│ │ /api/v1/referral/* → 192.168.1.111:3004 (Referral) │ │
|
||||
│ │ /api/v1/mining/* → 192.168.1.111:3005 (Reward) │ │
|
||||
│ │ /api/v1/ranking/* → 192.168.1.111:3007 (Leaderboard) │ │
|
||||
│ │ /api/v1/telemetry/*→ 192.168.1.111:3008 (Reporting) │ │
|
||||
│ └──────────────────────────────────────────────────────────────────┘ │
|
||||
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Nginx 反向代理 │ │
|
||||
│ │ /etc/nginx/conf.d/rwaapi.conf │ │
|
||||
│ │ │ │
|
||||
│ │ /api/v1/user/* → 192.168.1.111:3000 (Identity) │ │
|
||||
│ │ /api/v1/auth/* → 192.168.1.111:3000 (Identity) │ │
|
||||
│ │ /api/v1/wallet/* → 192.168.1.111:3002 (Wallet) │ │
|
||||
│ │ /api/v1/trading/* → 192.168.1.111:3002 (Wallet) │ │
|
||||
│ │ /api/v1/planting/* → 192.168.1.111:3003 (Planting) │ │
|
||||
│ │ /api/v1/referral/* → 192.168.1.111:3004 (Referral) │ │
|
||||
│ │ /api/v1/mining/* → 192.168.1.111:3005 (Reward) │ │
|
||||
│ │ /api/v1/ranking/* → 192.168.1.111:3007 (Leaderboard) │ │
|
||||
│ │ /api/v1/telemetry/*→ 192.168.1.111:3008 (Reporting) │ │
|
||||
│ └────────────────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌───────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ MPC-System (Go 服务) │ │
|
||||
│ │ localhost:4000 │ │
|
||||
│ │ • TSS 密钥生成 (Keygen) │ │
|
||||
│ │ • TSS 签名 (Sign) │ │
|
||||
│ │ • 密钥分片管理 │ │
|
||||
│ └───────────────────────────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────┬───────────────────────────────────────────┘
|
||||
│ 内网
|
||||
▼
|
||||
|
|
@ -35,10 +44,13 @@
|
|||
│ 后端服务器 192.168.1.111 │
|
||||
│ │
|
||||
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
|
||||
│ │ Identity │ │ MPC │ │ Wallet │ │ Planting │ │
|
||||
│ │ Identity │ │ MPC-Service │ │ Wallet │ │ Planting │ │
|
||||
│ │ :3000 │ │ :3001 │ │ :3002 │ │ :3003 │ │
|
||||
│ └───────────────┘ └───────────────┘ └───────────────┘ └───────────────┘ │
|
||||
│ │
|
||||
│ │ │ │
|
||||
│ │ │ 调用 MPC-System │
|
||||
│ │ └──────────────────────► 192.168.1.100:4000 │
|
||||
│ │ │
|
||||
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
|
||||
│ │ Referral │ │ Reward │ │ Authorization │ │ Leaderboard │ │
|
||||
│ │ :3004 │ │ :3005 │ │ :3006 │ │ :3007 │ │
|
||||
|
|
@ -56,14 +68,35 @@
|
|||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 2. 后端服务端口规划
|
||||
### 服务器角色说明
|
||||
|
||||
所有后端服务部署在 **192.168.1.111** 服务器上:
|
||||
| 服务器 | IP 地址 | 角色 | 部署服务 |
|
||||
|-------|---------|------|---------|
|
||||
| Nginx + MPC 服务器 | 192.168.1.100 (公网) | API 网关 + MPC 核心 | Nginx, MPC-System (Go) |
|
||||
| 后端服务器 | 192.168.1.111 (内网) | 业务微服务 | 所有 NestJS 微服务 + 基础设施 |
|
||||
|
||||
### 为什么 MPC-System 部署在 Nginx 服务器上?
|
||||
|
||||
**安全隔离原则**: MPC-System 是处理密钥分片的核心安全组件,与业务数据库隔离部署可以:
|
||||
1. 减少攻击面 - 即使业务服务器被入侵,MPC 密钥分片仍然安全
|
||||
2. 物理隔离 - 密钥分片和业务数据在不同机器上
|
||||
3. 独立运维 - MPC 系统可以独立升级和维护
|
||||
|
||||
## 2. 服务端口规划
|
||||
|
||||
### 2.1 Nginx + MPC 服务器 (192.168.1.100)
|
||||
|
||||
| 服务名称 | 端口 | 说明 |
|
||||
|---------|------|------|
|
||||
| Nginx | 80, 443 | HTTP/HTTPS 反向代理 |
|
||||
| MPC-System (Go) | 4000 | TSS 密钥生成、签名服务 |
|
||||
|
||||
### 2.2 后端服务器 (192.168.1.111)
|
||||
|
||||
| 服务名称 | 端口 | API 前缀 | 说明 |
|
||||
|---------|------|----------|------|
|
||||
| Identity Service | 3000 | `/api/v1` | 用户身份、认证、钱包创建 |
|
||||
| MPC Service | 3001 | `/api/v1` | MPC 密钥分片管理 (内部) |
|
||||
| MPC Service (NestJS) | 3001 | `/api/v1` | MPC 中间层,调用 MPC-System |
|
||||
| Wallet Service | 3002 | `/api/v1` | 钱包余额、交易、充值 |
|
||||
| Planting Service | 3003 | `/api/v1` | 认种业务 |
|
||||
| Referral Service | 3004 | `/api/v1` | 推荐关系、分享链接 |
|
||||
|
|
@ -73,6 +106,14 @@
|
|||
| Reporting Service | 3008 | `/api/v1` | 遥测统计、报表 |
|
||||
| Backup Service | 3009 | - | MPC 备份 (内部服务) |
|
||||
|
||||
### 2.3 MPC 调用链路
|
||||
|
||||
```
|
||||
用户请求 → Identity Service (3000) → MPC Service (3001) → MPC-System (192.168.1.100:4000)
|
||||
↓
|
||||
TSS 密钥生成/签名
|
||||
```
|
||||
|
||||
## 3. Nginx 配置文件
|
||||
|
||||
### 3.1 目录结构
|
||||
|
|
@ -386,9 +427,185 @@ server {
|
|||
}
|
||||
```
|
||||
|
||||
## 4. 后端服务器配置 (192.168.1.111)
|
||||
## 4. MPC-System 部署 (192.168.1.100)
|
||||
|
||||
### 4.1 Docker Compose 部署文件
|
||||
MPC-System 是一个独立的 Go 服务,负责 TSS (Threshold Signature Scheme) 密钥生成和签名操作。
|
||||
|
||||
### 4.1 系统要求
|
||||
|
||||
- Go 1.21+
|
||||
- 最小 2GB RAM
|
||||
- 10GB 磁盘空间
|
||||
|
||||
### 4.2 部署方式
|
||||
|
||||
#### 方式一: 直接运行 (推荐生产环境)
|
||||
|
||||
```bash
|
||||
# 1. 创建部署目录
|
||||
mkdir -p /opt/mpc-system
|
||||
cd /opt/mpc-system
|
||||
|
||||
# 2. 下载或复制编译好的二进制文件
|
||||
# 从构建服务器复制 mpc-system 可执行文件
|
||||
scp build-server:/path/to/mpc-system .
|
||||
|
||||
# 3. 创建配置文件
|
||||
cat > config.yaml << 'EOF'
|
||||
server:
|
||||
host: 0.0.0.0
|
||||
port: 4000
|
||||
|
||||
# TSS 配置
|
||||
tss:
|
||||
threshold: 2 # 签名阈值 (t of n)
|
||||
parties: 3 # 总参与方数量
|
||||
|
||||
# 日志配置
|
||||
log:
|
||||
level: info
|
||||
format: json
|
||||
output: /var/log/mpc-system/mpc.log
|
||||
|
||||
# 安全配置
|
||||
security:
|
||||
# 只允许后端服务器访问
|
||||
allowed_ips:
|
||||
- 192.168.1.111
|
||||
# API 认证密钥
|
||||
api_key: ${MPC_API_KEY}
|
||||
EOF
|
||||
|
||||
# 4. 创建日志目录
|
||||
mkdir -p /var/log/mpc-system
|
||||
|
||||
# 5. 创建 systemd 服务
|
||||
cat > /etc/systemd/system/mpc-system.service << 'EOF'
|
||||
[Unit]
|
||||
Description=MPC System - TSS Key Generation and Signing Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=mpc
|
||||
Group=mpc
|
||||
WorkingDirectory=/opt/mpc-system
|
||||
ExecStart=/opt/mpc-system/mpc-system -config /opt/mpc-system/config.yaml
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
Environment=MPC_API_KEY=your_secure_api_key_here
|
||||
|
||||
# 安全限制
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
ReadWritePaths=/var/log/mpc-system /opt/mpc-system/data
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# 6. 创建专用用户
|
||||
useradd -r -s /bin/false mpc
|
||||
chown -R mpc:mpc /opt/mpc-system /var/log/mpc-system
|
||||
|
||||
# 7. 启动服务
|
||||
systemctl daemon-reload
|
||||
systemctl enable mpc-system
|
||||
systemctl start mpc-system
|
||||
|
||||
# 8. 检查状态
|
||||
systemctl status mpc-system
|
||||
curl http://localhost:4000/health
|
||||
```
|
||||
|
||||
#### 方式二: Docker 部署
|
||||
|
||||
```bash
|
||||
# 1. 创建 Dockerfile (如果需要)
|
||||
cat > /opt/mpc-system/Dockerfile << 'EOF'
|
||||
FROM golang:1.21-alpine AS builder
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
RUN go build -o mpc-system ./cmd/main.go
|
||||
|
||||
FROM alpine:3.19
|
||||
RUN apk add --no-cache ca-certificates
|
||||
COPY --from=builder /app/mpc-system /usr/local/bin/
|
||||
COPY --from=builder /app/config.yaml /etc/mpc-system/
|
||||
EXPOSE 4000
|
||||
CMD ["mpc-system", "-config", "/etc/mpc-system/config.yaml"]
|
||||
EOF
|
||||
|
||||
# 2. 使用 docker-compose
|
||||
cat > /opt/mpc-system/docker-compose.yml << 'EOF'
|
||||
services:
|
||||
mpc-system:
|
||||
build: .
|
||||
ports:
|
||||
- "4000:4000"
|
||||
environment:
|
||||
- MPC_API_KEY=${MPC_API_KEY}
|
||||
volumes:
|
||||
- ./config.yaml:/etc/mpc-system/config.yaml:ro
|
||||
- mpc_data:/opt/mpc-system/data
|
||||
- mpc_logs:/var/log/mpc-system
|
||||
restart: unless-stopped
|
||||
# 网络隔离 - 只允许内网访问
|
||||
networks:
|
||||
- internal
|
||||
|
||||
networks:
|
||||
internal:
|
||||
driver: bridge
|
||||
internal: true
|
||||
|
||||
volumes:
|
||||
mpc_data:
|
||||
mpc_logs:
|
||||
EOF
|
||||
|
||||
# 3. 启动
|
||||
cd /opt/mpc-system
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### 4.3 MPC-System API 端点
|
||||
|
||||
| 端点 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `/health` | GET | 健康检查 |
|
||||
| `/api/v1/keygen` | POST | TSS 密钥生成 |
|
||||
| `/api/v1/sign` | POST | TSS 签名 |
|
||||
| `/api/v1/reshare` | POST | 密钥重新分片 |
|
||||
|
||||
### 4.4 防火墙配置
|
||||
|
||||
```bash
|
||||
# 只允许后端服务器 (192.168.1.111) 访问 MPC-System
|
||||
iptables -A INPUT -p tcp --dport 4000 -s 192.168.1.111 -j ACCEPT
|
||||
iptables -A INPUT -p tcp --dport 4000 -j DROP
|
||||
|
||||
# 保存规则
|
||||
iptables-save > /etc/iptables/rules.v4
|
||||
```
|
||||
|
||||
### 4.5 环境变量
|
||||
|
||||
在 192.168.1.100 服务器上创建 `/opt/mpc-system/.env`:
|
||||
|
||||
```bash
|
||||
# MPC API 认证密钥 (与 mpc-service 配置一致)
|
||||
MPC_API_KEY=your_very_secure_api_key_at_least_32_characters
|
||||
|
||||
# 日志级别
|
||||
LOG_LEVEL=info
|
||||
```
|
||||
|
||||
## 5. 后端服务器配置 (192.168.1.111)
|
||||
|
||||
### 5.1 Docker Compose 部署文件
|
||||
|
||||
在 192.168.1.111 服务器上创建 `/opt/rwadurian/docker-compose.yml`:
|
||||
|
||||
|
|
@ -426,6 +643,8 @@ services:
|
|||
- DATABASE_URL=postgresql://postgres:${DB_PASSWORD}@postgres:5432/rwa_mpc
|
||||
- REDIS_HOST=redis
|
||||
- APP_ENV=production
|
||||
# MPC-System 部署在 192.168.1.100 (Nginx 服务器)
|
||||
- MPC_SYSTEM_URL=http://192.168.1.100:4000
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
|
@ -644,7 +863,7 @@ volumes:
|
|||
redis_data:
|
||||
```
|
||||
|
||||
### 4.2 数据库初始化脚本
|
||||
### 5.2 数据库初始化脚本
|
||||
|
||||
在 192.168.1.111 服务器上创建 `/opt/rwadurian/scripts/init-databases.sql`:
|
||||
|
||||
|
|
@ -662,7 +881,7 @@ CREATE DATABASE rwa_reporting;
|
|||
CREATE DATABASE rwa_backup;
|
||||
```
|
||||
|
||||
### 4.3 环境变量文件
|
||||
### 5.3 环境变量文件
|
||||
|
||||
在 192.168.1.111 服务器上创建 `/opt/rwadurian/.env`:
|
||||
|
||||
|
|
@ -683,9 +902,9 @@ SERVICE_JWT_SECRET=your_service_jwt_secret_for_internal_calls
|
|||
WALLET_ENCRYPTION_SALT=your_wallet_encryption_salt
|
||||
```
|
||||
|
||||
## 5. 部署步骤
|
||||
## 6. 部署步骤
|
||||
|
||||
### 5.1 Nginx 服务器配置
|
||||
### 6.1 Nginx + MPC 服务器 (192.168.1.100) 配置
|
||||
|
||||
```bash
|
||||
# 1. 安装 Nginx
|
||||
|
|
@ -709,7 +928,7 @@ systemctl restart nginx
|
|||
systemctl enable nginx
|
||||
```
|
||||
|
||||
### 5.2 后端服务器 (192.168.1.111) 配置
|
||||
### 6.2 后端服务器 (192.168.1.111) 配置
|
||||
|
||||
```bash
|
||||
# 1. 安装 Docker
|
||||
|
|
@ -750,7 +969,7 @@ docker compose exec leaderboard-service npx prisma migrate deploy
|
|||
docker compose exec reporting-service npx prisma migrate deploy
|
||||
```
|
||||
|
||||
### 5.3 验证部署
|
||||
### 6.3 验证部署
|
||||
|
||||
```bash
|
||||
# 从 Nginx 服务器测试
|
||||
|
|
@ -767,7 +986,7 @@ curl http://localhost:3000/api/v1/user/auto-create \
|
|||
-d '{"deviceId": "test-device-123"}'
|
||||
```
|
||||
|
||||
## 6. API 端点对照表
|
||||
## 7. API 端点对照表
|
||||
|
||||
| 前端调用路径 | Nginx 转发 | 后端服务 | 端口 |
|
||||
|-------------|-----------|---------|------|
|
||||
|
|
@ -786,9 +1005,9 @@ curl http://localhost:3000/api/v1/user/auto-create \
|
|||
| `/api/v1/telemetry/*` | → | Reporting Service | 3008 |
|
||||
| `/api/v1/report/*` | → | Reporting Service | 3008 |
|
||||
|
||||
## 7. 监控与运维
|
||||
## 8. 监控与运维
|
||||
|
||||
### 7.1 查看 Nginx 日志
|
||||
### 8.1 查看 Nginx 日志
|
||||
|
||||
```bash
|
||||
# 访问日志
|
||||
|
|
@ -801,30 +1020,49 @@ tail -f /var/log/nginx/error.log
|
|||
grep "/api/v1/user" /var/log/nginx/access.log | tail -100
|
||||
```
|
||||
|
||||
### 7.2 查看服务日志
|
||||
### 8.2 查看服务日志
|
||||
|
||||
```bash
|
||||
# 在 192.168.1.111 上执行
|
||||
# ========================================
|
||||
# 192.168.1.100 (Nginx + MPC 服务器) 日志
|
||||
# ========================================
|
||||
# MPC-System 日志
|
||||
tail -f /var/log/mpc-system/mpc.log
|
||||
journalctl -u mpc-system -f
|
||||
|
||||
# ========================================
|
||||
# 192.168.1.111 (后端服务器) 日志
|
||||
# ========================================
|
||||
# 查看所有服务日志
|
||||
docker compose logs -f
|
||||
|
||||
# 查看特定服务日志
|
||||
docker compose logs -f identity-service
|
||||
docker compose logs -f mpc-service
|
||||
docker compose logs -f wallet-service
|
||||
|
||||
# 查看最近 100 行
|
||||
docker compose logs --tail=100 identity-service
|
||||
```
|
||||
|
||||
### 7.3 服务健康检查
|
||||
### 8.3 服务健康检查
|
||||
|
||||
```bash
|
||||
# ========================================
|
||||
# 192.168.1.100 (Nginx + MPC 服务器) 健康检查
|
||||
# ========================================
|
||||
curl http://192.168.1.100:4000/health # MPC-System
|
||||
curl https://rwaapi.szaiai.com/health # Nginx 反向代理
|
||||
|
||||
# ========================================
|
||||
# 192.168.1.111 (后端服务器) 健康检查
|
||||
# ========================================
|
||||
# 检查所有服务状态
|
||||
docker compose ps
|
||||
|
||||
# 检查特定服务健康
|
||||
# 检查各微服务健康
|
||||
curl http://192.168.1.111:3000/health # Identity
|
||||
curl http://192.168.1.111:3001/health # MPC Service (NestJS)
|
||||
curl http://192.168.1.111:3002/health # Wallet
|
||||
curl http://192.168.1.111:3003/health # Planting
|
||||
curl http://192.168.1.111:3004/health # Referral
|
||||
|
|
@ -833,7 +1071,7 @@ curl http://192.168.1.111:3007/health # Leaderboard
|
|||
curl http://192.168.1.111:3008/health # Reporting
|
||||
```
|
||||
|
||||
### 7.4 重启服务
|
||||
### 8.4 重启服务
|
||||
|
||||
```bash
|
||||
# 重启单个服务
|
||||
|
|
@ -846,7 +1084,7 @@ docker compose restart
|
|||
docker compose up -d --build identity-service
|
||||
```
|
||||
|
||||
## 8. 常见问题
|
||||
## 9. 常见问题
|
||||
|
||||
### Q1: 502 Bad Gateway
|
||||
- 检查后端服务是否运行: `docker compose ps`
|
||||
|
|
@ -866,6 +1104,18 @@ docker compose up -d --build identity-service
|
|||
- 检查 Docker 网络: `docker network inspect rwa-network`
|
||||
- 检查服务名解析: `docker compose exec identity-service ping wallet-service`
|
||||
|
||||
### Q5: MPC-System 连接失败
|
||||
- 检查 MPC-System 服务状态: `systemctl status mpc-system` (在 192.168.1.100 上)
|
||||
- 检查 MPC-System 健康: `curl http://192.168.1.100:4000/health`
|
||||
- 检查防火墙规则是否允许 192.168.1.111 访问 4000 端口
|
||||
- 检查 mpc-service 环境变量 `MPC_SYSTEM_URL` 是否正确设置为 `http://192.168.1.100:4000`
|
||||
- 查看 MPC-System 日志: `tail -f /var/log/mpc-system/mpc.log`
|
||||
|
||||
### Q6: TSS 密钥生成/签名超时
|
||||
- MPC 操作可能需要较长时间,检查超时配置
|
||||
- 确保网络延迟在合理范围内: `ping 192.168.1.100`
|
||||
- 检查 MPC-System 资源使用: `htop` 或 `top`
|
||||
|
||||
---
|
||||
|
||||
**最后更新**: 2025-12-01
|
||||
|
|
|
|||
Loading…
Reference in New Issue