diff --git a/backend/services/identity-service/docs/DEPLOYMENT_GUIDE.md b/backend/services/identity-service/docs/DEPLOYMENT_GUIDE.md index 4a3ac5ac..b964f744 100644 --- a/backend/services/identity-service/docs/DEPLOYMENT_GUIDE.md +++ b/backend/services/identity-service/docs/DEPLOYMENT_GUIDE.md @@ -470,161 +470,136 @@ server { ## 4. MPC-System 部署 (192.168.1.100) -MPC-System 是一个独立的 Go 服务,负责 TSS (Threshold Signature Scheme) 密钥生成和签名操作。 +MPC-System 是一组 Go 微服务,负责 TSS (Threshold Signature Scheme) 密钥生成和签名操作。 +采用 2-of-3 阈值签名方案,包含多个内部服务通过 Docker Compose 一键部署。 ### 4.1 系统要求 -- Go 1.21+ -- 最小 2GB RAM -- 10GB 磁盘空间 +- Docker 24.0+ +- Docker Compose v2.20+ +- 最小 4GB RAM +- 20GB 磁盘空间 -### 4.2 部署方式 +### 4.2 服务架构 -#### 方式一: 直接运行 (推荐生产环境) +``` +MPC-System (Docker Compose) +├── account-service # 对外 API 入口 (端口 4000) +├── session-coordinator # 会话协调器 +├── message-router # 消息路由 +├── server-party-1 # TSS 参与方 1 +├── server-party-2 # TSS 参与方 2 +├── server-party-3 # TSS 参与方 3 +├── postgres # 数据库 +├── redis # 缓存 +└── rabbitmq # 消息队列 +``` + +### 4.3 一键部署 (Docker Compose) ```bash -# 1. 创建部署目录 -mkdir -p /opt/mpc-system -cd /opt/mpc-system +# ============================================ +# 步骤 1: 安装 Docker +# ============================================ +curl -fsSL https://get.docker.com | sh +usermod -aG docker $USER +# 重新登录以使 docker 组生效 -# 2. 下载或复制编译好的二进制文件 -# 从构建服务器复制 mpc-system 可执行文件 -scp build-server:/path/to/mpc-system . +# ============================================ +# 步骤 2: 克隆代码 +# ============================================ +cd /home/ceshi +git clone https://github.com/your-org/rwadurian.git +cd rwadurian/backend/mpc-system -# 3. 创建配置文件 -cat > config.yaml << 'EOF' -server: - host: 0.0.0.0 - port: 4000 +# ============================================ +# 步骤 3: 配置环境变量 +# ============================================ +cp .env.example .env +vim .env # 修改为生产环境配置 +``` -# TSS 配置 -tss: - threshold: 2 # 签名阈值 (t of n) - parties: 3 # 总参与方数量 +**.env 文件内容:** -# 日志配置 -log: - level: info - format: json - output: /var/log/mpc-system/mpc.log +```bash +# 环境标识 +ENVIRONMENT=production -# 安全配置 -security: - # 只允许后端服务器访问 - allowed_ips: - - 192.168.1.111 - # API 认证密钥 - api_key: ${MPC_API_KEY} -EOF +# PostgreSQL 数据库 +POSTGRES_USER=mpc_user +POSTGRES_PASSWORD=your_secure_postgres_password_here -# 4. 创建日志目录 -mkdir -p /var/log/mpc-system +# Redis 缓存 (留空表示不需要密码) +REDIS_PASSWORD= -# 5. 创建 systemd 服务 -cat > /etc/systemd/system/mpc-system.service << 'EOF' -[Unit] -Description=MPC System - TSS Key Generation and Signing Service -After=network.target +# RabbitMQ 消息队列 +RABBITMQ_USER=mpc_user +RABBITMQ_PASSWORD=your_secure_rabbitmq_password_here -[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 +# JWT 配置 (至少 32 字符) +JWT_SECRET_KEY=your_super_secure_jwt_secret_key_at_least_32_characters -# 安全限制 -NoNewPrivileges=true -PrivateTmp=true -ProtectSystem=strict -ProtectHome=true -ReadWritePaths=/var/log/mpc-system /opt/mpc-system/data +# 主加密密钥 (64 位十六进制 = 256 位密钥,用于加密密钥分片) +CRYPTO_MASTER_KEY=your_64_hex_characters_master_key_here -[Install] -WantedBy=multi-user.target -EOF +# API 认证密钥 (与 mpc-service 配置的 MPC_API_KEY 一致) +MPC_API_KEY=your_very_secure_api_key_at_least_32_characters -# 6. 创建专用用户 -useradd -r -s /bin/false mpc -chown -R mpc:mpc /opt/mpc-system /var/log/mpc-system +# 允许访问的 IP 地址 (后端服务器) +ALLOWED_IPS=192.168.1.111 +``` -# 7. 启动服务 -systemctl daemon-reload -systemctl enable mpc-system -systemctl start mpc-system +```bash +# ============================================ +# 步骤 4: 构建并启动服务 +# ============================================ +docker compose up -d --build -# 8. 检查状态 -systemctl status mpc-system +# 查看服务状态 +docker compose ps + +# 查看日志 +docker compose logs -f + +# ============================================ +# 步骤 5: 验证部署 +# ============================================ +# 健康检查 curl http://localhost:4000/health + +# 查看所有容器状态 +docker compose ps ``` -#### 方式二: Docker 部署 +### 4.4 服务端口说明 -```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 +| 服务 | 容器内端口 | 主机端口 | 说明 | +|------|-----------|---------|------| +| account-service | 8080 | **4000** | 对外 API 入口,供 mpc-service 调用 | +| session-coordinator | 8080, 50051 | - | 会话协调 (内部) | +| message-router | 8080, 50051 | - | 消息路由 (内部) | +| server-party-1/2/3 | 8080, 50051 | - | TSS 参与方 (内部) | +| postgres | 5432 | - | 数据库 (内部) | +| redis | 6379 | - | 缓存 (内部) | +| rabbitmq | 5672, 15672 | - | 消息队列 (内部) | -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 +> **注意**: 生产环境仅暴露端口 4000,其他服务仅在 Docker 内部网络可访问。 -# 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 +### 4.5 MPC-System API 端点 -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 端点 +Account Service (端口 4000) 对外提供以下 API: | 端点 | 方法 | 说明 | |------|------|------| | `/health` | GET | 健康检查 | -| `/api/v1/keygen` | POST | TSS 密钥生成 | -| `/api/v1/sign` | POST | TSS 签名 | -| `/api/v1/reshare` | POST | 密钥重新分片 | +| `/api/v1/account/create` | POST | 创建 MPC 账户 (触发密钥生成) | +| `/api/v1/account/sign` | POST | 请求签名 | +| `/api/v1/account/recovery` | POST | 账户恢复 | -### 4.4 防火墙配置 +### 4.6 防火墙配置 ```bash -# 只允许后端服务器 (192.168.1.111) 访问 MPC-System +# 只允许后端服务器 (192.168.1.111) 访问 MPC-System 端口 4000 iptables -A INPUT -p tcp --dport 4000 -s 192.168.1.111 -j ACCEPT iptables -A INPUT -p tcp --dport 4000 -j DROP @@ -632,16 +607,31 @@ 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`: +### 4.7 运维命令 ```bash -# MPC API 认证密钥 (与 mpc-service 配置一致) -MPC_API_KEY=your_very_secure_api_key_at_least_32_characters +cd /home/ceshi/rwadurian/backend/mpc-system -# 日志级别 -LOG_LEVEL=info +# 查看服务状态 +docker compose ps + +# 查看日志 +docker compose logs -f # 所有服务 +docker compose logs -f account-service # 单个服务 +docker compose logs --tail=100 account-service # 最近 100 行 + +# 重启服务 +docker compose restart # 重启所有 +docker compose restart account-service # 重启单个 + +# 停止服务 +docker compose down + +# 重新构建并启动 +docker compose up -d --build + +# 清理数据 (危险! 会删除所有数据) +docker compose down -v ``` ## 5. 后端服务器配置 (192.168.1.111)