docs: add comprehensive deployment guide
Add deployment-guide.md covering build, deployment, and operations for the entire IT0 platform including all microservices, web admin, Flutter app, and voice service. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
e761b65b6e
commit
8116f17fd0
|
|
@ -0,0 +1,625 @@
|
|||
# IT0 系统编译与部署指南
|
||||
|
||||
IT0 是一个 AI 驱动的服务器集群运维平台,采用 DDD + Clean Architecture + 微服务架构。本文档涵盖系统的编译、部署和运维全流程。
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
- [架构概览](#架构概览)
|
||||
- [前置依赖](#前置依赖)
|
||||
- [项目结构](#项目结构)
|
||||
- [安装依赖](#安装依赖)
|
||||
- [本地开发](#本地开发)
|
||||
- [编译构建](#编译构建)
|
||||
- [Docker 部署](#docker-部署)
|
||||
- [生产部署](#生产部署)
|
||||
- [语音服务(GPU)](#语音服务gpu)
|
||||
- [数据库迁移](#数据库迁移)
|
||||
- [环境变量说明](#环境变量说明)
|
||||
- [服务端口](#服务端口)
|
||||
- [运维命令](#运维命令)
|
||||
- [关键文件索引](#关键文件索引)
|
||||
- [快速上手清单](#快速上手清单)
|
||||
|
||||
---
|
||||
|
||||
## 架构概览
|
||||
|
||||
```
|
||||
客户端 (Web/App/语音)
|
||||
│
|
||||
▼
|
||||
Nginx (SSL/TLS 反向代理)
|
||||
│
|
||||
▼
|
||||
Kong API Gateway (:8000)
|
||||
│
|
||||
├── auth-service (:3001) JWT 认证与 RBAC
|
||||
├── agent-service (:3002) AI 代理编排(Claude CLI/API)
|
||||
├── ops-service (:3003) 运维任务管理
|
||||
├── inventory-service (:3004) 服务器资产管理
|
||||
├── monitor-service (:3005) 健康监控与告警
|
||||
├── comm-service (:3006) 多渠道消息通知
|
||||
├── audit-service (:3007) 审计日志
|
||||
└── voice-service (:3008) 语音交互(STT/TTS)
|
||||
|
||||
基础设施:
|
||||
PostgreSQL 16 ── 主数据库(Schema-per-Tenant 多租户隔离)
|
||||
Redis 7 ── 事件总线(Redis Streams)+ 缓存 + 限流
|
||||
```
|
||||
|
||||
**技术栈:**
|
||||
|
||||
| 组件 | 技术 |
|
||||
|------|------|
|
||||
| 后端微服务 | NestJS (TypeScript) |
|
||||
| API 网关 | Kong 3.7 (DB-less 模式) |
|
||||
| Web 管理端 | Next.js (React/TypeScript) |
|
||||
| 移动端 | Flutter (Dart) |
|
||||
| 语音引擎 | FastAPI + Pipecat + Whisper + Kokoro |
|
||||
| 构建工具 | Turbo + pnpm Workspaces |
|
||||
| 容器化 | Docker + Docker Compose |
|
||||
|
||||
---
|
||||
|
||||
## 前置依赖
|
||||
|
||||
| 软件 | 版本要求 | 用途 |
|
||||
|------|----------|------|
|
||||
| Node.js | v18+ | 后端 NestJS 服务运行时 |
|
||||
| pnpm | 最新稳定版 | 包管理器(Workspaces 支持) |
|
||||
| Docker | 最新稳定版 | 容器化运行环境 |
|
||||
| Docker Compose | v2.x+ | 服务编排 |
|
||||
| Python | 3.11 | 语音服务 |
|
||||
| Flutter | 最新稳定版 | 移动端 App 构建 |
|
||||
|
||||
---
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
IT0/
|
||||
├── packages/
|
||||
│ ├── services/ # 微服务
|
||||
│ │ ├── auth-service/ # 认证服务
|
||||
│ │ ├── agent-service/ # AI 代理服务
|
||||
│ │ ├── ops-service/ # 运维服务
|
||||
│ │ ├── inventory-service/ # 资产服务
|
||||
│ │ ├── monitor-service/ # 监控服务
|
||||
│ │ ├── comm-service/ # 通信服务
|
||||
│ │ ├── audit-service/ # 审计服务
|
||||
│ │ └── voice-service/ # 语音服务 (Python)
|
||||
│ ├── shared/ # 共享库
|
||||
│ │ ├── common/ # @it0/common 通用工具
|
||||
│ │ ├── database/ # @it0/database 数据层
|
||||
│ │ ├── events/ # @it0/events 事件总线
|
||||
│ │ ├── proto/ # @it0/proto gRPC 定义
|
||||
│ │ └── testing/ # @it0/testing 测试工具
|
||||
│ └── gateway/ # Kong API 网关配置
|
||||
├── it0-web-admin/ # Next.js Web 管理端
|
||||
├── it0_app/ # Flutter 移动端
|
||||
├── deploy/
|
||||
│ ├── docker/ # Docker 部署配置
|
||||
│ │ ├── docker-compose.yml # 主编排文件
|
||||
│ │ ├── docker-compose.voice.yml # GPU 语音覆盖
|
||||
│ │ ├── docker-compose.ssl.yml # SSL 代理覆盖
|
||||
│ │ ├── deploy.sh # 部署脚本
|
||||
│ │ ├── .env.example # 环境变量模板
|
||||
│ │ └── nginx/ # Nginx 配置
|
||||
│ └── k8s/ # Kubernetes 配置
|
||||
├── package.json # Monorepo 根配置
|
||||
├── turbo.json # Turbo 构建管道
|
||||
└── pnpm-lock.yaml # 依赖锁定文件
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 安装依赖
|
||||
|
||||
```bash
|
||||
# 在项目根目录执行,安装所有工作区依赖
|
||||
pnpm install
|
||||
```
|
||||
|
||||
此命令会自动安装以下工作区的依赖:
|
||||
- `packages/services/*` — 7 个 NestJS 微服务
|
||||
- `packages/shared/*` — 5 个共享库
|
||||
- `packages/gateway` — Kong API 网关
|
||||
- `it0-web-admin` — Next.js 前端
|
||||
|
||||
语音服务(Python)需单独安装:
|
||||
|
||||
```bash
|
||||
cd packages/services/voice-service
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
Flutter 移动端:
|
||||
|
||||
```bash
|
||||
cd it0_app
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 本地开发
|
||||
|
||||
### 方式 A:Docker Compose(推荐)
|
||||
|
||||
最简单的方式,一键启动所有服务和基础设施:
|
||||
|
||||
```bash
|
||||
cd deploy/docker
|
||||
|
||||
# 1. 首次安装(自动生成 .env 及安全密钥)
|
||||
./deploy.sh install
|
||||
|
||||
# 2. 编辑 .env,填入必要配置
|
||||
vi .env
|
||||
# 至少需要设置 ANTHROPIC_API_KEY
|
||||
|
||||
# 3. 构建所有 Docker 镜像
|
||||
./deploy.sh build
|
||||
|
||||
# 4. 启动所有服务
|
||||
./deploy.sh up
|
||||
|
||||
# 5. 运行数据库迁移
|
||||
./deploy.sh migrate
|
||||
```
|
||||
|
||||
启动完成后:
|
||||
- Web 管理端:`http://localhost:3000`
|
||||
- API 网关:`http://localhost:8000`
|
||||
|
||||
### 方式 B:原生开发(热重载)
|
||||
|
||||
适合需要频繁修改代码的开发场景:
|
||||
|
||||
```bash
|
||||
# 终端 1:启动基础设施(PostgreSQL + Redis)
|
||||
cd deploy/docker
|
||||
docker-compose up postgres redis -d
|
||||
|
||||
# 终端 2:启动所有后端服务(Watch 模式,自动重载)
|
||||
# 回到项目根目录
|
||||
pnpm dev
|
||||
|
||||
# 终端 3:启动 Web 前端(可选,pnpm dev 已包含)
|
||||
cd it0-web-admin
|
||||
npm run dev
|
||||
```
|
||||
|
||||
本地开发需要在根目录创建 `.env` 文件(参考 `.env.example`):
|
||||
|
||||
```env
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
DB_USERNAME=it0
|
||||
DB_PASSWORD=it0_dev
|
||||
DB_DATABASE=it0
|
||||
|
||||
REDIS_URL=redis://localhost:6379
|
||||
|
||||
JWT_SECRET=your-jwt-secret-change-in-production
|
||||
JWT_REFRESH_SECRET=your-refresh-secret-change-in-production
|
||||
|
||||
AGENT_ENGINE_TYPE=claude_code_cli
|
||||
ANTHROPIC_API_KEY=sk-ant-xxx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 编译构建
|
||||
|
||||
### 后端服务(NestJS)
|
||||
|
||||
```bash
|
||||
# Turbo 并行构建所有服务(自动处理依赖关系)
|
||||
pnpm build
|
||||
|
||||
# 构建单个服务
|
||||
pnpm --filter @it0/auth-service build
|
||||
pnpm --filter @it0/agent-service build
|
||||
pnpm --filter @it0/ops-service build
|
||||
|
||||
# 构建输出目录
|
||||
# packages/services/{service-name}/dist/
|
||||
```
|
||||
|
||||
每个 NestJS 服务使用 `nest build` 编译 TypeScript 到 JavaScript,输出到各自的 `dist/` 目录。
|
||||
|
||||
### Web 管理端(Next.js)
|
||||
|
||||
```bash
|
||||
cd it0-web-admin
|
||||
|
||||
# 开发模式
|
||||
npm run dev
|
||||
|
||||
# 生产构建
|
||||
npm run build
|
||||
# 输出:.next/ 目录
|
||||
|
||||
# 启动生产服务
|
||||
npm run start # 默认端口 3000
|
||||
```
|
||||
|
||||
### Flutter 移动端
|
||||
|
||||
```bash
|
||||
cd it0_app
|
||||
|
||||
# 获取依赖
|
||||
flutter pub get
|
||||
|
||||
# 代码生成(如有使用 build_runner)
|
||||
flutter pub run build_runner build --delete-conflicting-outputs
|
||||
|
||||
# 构建 Android APK
|
||||
flutter build apk
|
||||
|
||||
# 构建 iOS
|
||||
flutter build ios
|
||||
```
|
||||
|
||||
### 语音服务(Python)
|
||||
|
||||
Python 服务无需编译,直接运行:
|
||||
|
||||
```bash
|
||||
cd packages/services/voice-service
|
||||
|
||||
# 开发模式(自动重载)
|
||||
uvicorn src.api.main:app --reload --port 3008
|
||||
|
||||
# 生产模式
|
||||
uvicorn src.api.main:app --host 0.0.0.0 --port 3008 --workers 4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Docker 部署
|
||||
|
||||
### Docker Compose 文件说明
|
||||
|
||||
| 文件 | 用途 |
|
||||
|------|------|
|
||||
| `docker-compose.yml` | 主编排文件,包含所有服务和基础设施 |
|
||||
| `docker-compose.voice.yml` | GPU 覆盖层,为语音服务启用 NVIDIA GPU |
|
||||
| `docker-compose.ssl.yml` | SSL 覆盖层,添加 Nginx 反向代理 + Certbot |
|
||||
|
||||
### 构建镜像
|
||||
|
||||
```bash
|
||||
cd deploy/docker
|
||||
|
||||
# 并行构建所有镜像
|
||||
./deploy.sh build
|
||||
|
||||
# 无缓存构建(完全重建)
|
||||
./deploy.sh build-no-cache
|
||||
```
|
||||
|
||||
### Docker 网络与卷
|
||||
|
||||
**网络:**
|
||||
- `it0-network` — 所有服务共享的 bridge 网络
|
||||
|
||||
**数据卷:**
|
||||
|
||||
| 卷名 | 用途 |
|
||||
|------|------|
|
||||
| `postgres_data` | PostgreSQL 数据持久化 |
|
||||
| `certbot_webroot` | ACME 证书验证目录 |
|
||||
| `certbot_certs` | SSL 证书存储 |
|
||||
| `models` | 语音模型缓存(可选) |
|
||||
|
||||
---
|
||||
|
||||
## 生产部署
|
||||
|
||||
### 完整流程
|
||||
|
||||
```bash
|
||||
cd deploy/docker
|
||||
|
||||
# 1. 首次安装(生成安全密钥和配置)
|
||||
./deploy.sh install
|
||||
# 自动生成:
|
||||
# - JWT_SECRET(32 位随机字符)
|
||||
# - JWT_REFRESH_SECRET(32 位随机字符)
|
||||
# - VAULT_MASTER_KEY(64 位十六进制)
|
||||
# - POSTGRES_PASSWORD(32 位随机字符)
|
||||
|
||||
# 2. 编辑 .env 配置生产环境变量
|
||||
vi .env
|
||||
# 必须手动设置:
|
||||
# - ANTHROPIC_API_KEY
|
||||
# - API_DOMAIN(如 it0api.szaiai.com)
|
||||
# - WEB_DOMAIN(如 it0.szaiai.com)
|
||||
# - CERT_EMAIL(如 admin@szaiai.com)
|
||||
|
||||
# 3. 构建所有 Docker 镜像
|
||||
./deploy.sh build
|
||||
|
||||
# 4. 获取 SSL 证书(Let's Encrypt)
|
||||
./deploy.sh ssl-init
|
||||
|
||||
# 5. 带 SSL 启动所有服务
|
||||
./deploy.sh ssl-up
|
||||
|
||||
# 6. 运行数据库迁移
|
||||
./deploy.sh migrate
|
||||
|
||||
# 7. 验证部署
|
||||
./deploy.sh health
|
||||
```
|
||||
|
||||
### SSL/TLS 配置
|
||||
|
||||
Nginx 作为 SSL 反向代理,配置位于 `deploy/docker/nginx/`:
|
||||
|
||||
| 文件 | 用途 |
|
||||
|------|------|
|
||||
| `nginx.conf` | 主配置(反向代理 + 限流 + 压缩) |
|
||||
| `nginx-init.conf` | 初始配置(仅 HTTP,用于 ACME 验证) |
|
||||
| `ssl-params.conf` | SSL 参数(Mozilla Intermediate 配置) |
|
||||
|
||||
**SSL 特性:**
|
||||
- TLS 1.2 + 1.3 支持
|
||||
- ECDHE 密钥交换
|
||||
- HSTS 预加载头
|
||||
- OCSP Stapling
|
||||
- API 限流:30 请求/秒
|
||||
- Web 限流:50 请求/秒
|
||||
- Gzip 压缩
|
||||
|
||||
**生产域名映射:**
|
||||
- `https://it0api.szaiai.com` → Kong Gateway (:8000)
|
||||
- `https://it0.szaiai.com` → Web Admin (:3000)
|
||||
|
||||
### 证书管理
|
||||
|
||||
```bash
|
||||
# 获取证书(首次)
|
||||
./deploy.sh ssl-init
|
||||
|
||||
# 手动续期
|
||||
./deploy.sh ssl-renew
|
||||
|
||||
# 查看证书状态
|
||||
./deploy.sh ssl-status
|
||||
```
|
||||
|
||||
Certbot 容器会自动处理证书续期。
|
||||
|
||||
---
|
||||
|
||||
## 语音服务(GPU)
|
||||
|
||||
语音服务使用以下模型:
|
||||
- **STT(语音转文字):** faster-whisper (large-v3)
|
||||
- **TTS(文字转语音):** Kokoro-82M
|
||||
- **VAD(语音活动检测):** Silero VAD
|
||||
- **编排框架:** Pipecat
|
||||
|
||||
### 启用 GPU 支持
|
||||
|
||||
```bash
|
||||
# 使用 GPU 覆盖层启动
|
||||
./deploy.sh voice-up
|
||||
|
||||
# 重建语音服务
|
||||
./deploy.sh voice-rebuild
|
||||
```
|
||||
|
||||
GPU 模式通过 `docker-compose.voice.yml` 添加:
|
||||
- NVIDIA GPU 设备访问
|
||||
- `DEVICE=cuda` 环境变量
|
||||
- 模型缓存卷挂载
|
||||
|
||||
### CPU 模式
|
||||
|
||||
默认使用 CPU 运行,在 `.env` 中设置:
|
||||
|
||||
```env
|
||||
VOICE_DEVICE=cpu
|
||||
WHISPER_MODEL=large-v3
|
||||
KOKORO_MODEL=kokoro-82m
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 数据库迁移
|
||||
|
||||
IT0 使用 TypeORM 管理数据库迁移,采用 Schema-per-Tenant 多租户架构:
|
||||
|
||||
```sql
|
||||
-- 自动创建的 Schema
|
||||
shared -- 跨租户共享数据
|
||||
tenant_default -- 默认租户
|
||||
tenant_{id} -- 各租户独立 Schema
|
||||
```
|
||||
|
||||
### 迁移命令
|
||||
|
||||
```bash
|
||||
# 运行所有服务的迁移
|
||||
./deploy.sh migrate
|
||||
|
||||
# 生成新迁移
|
||||
./deploy.sh migrate-generate auth-service AddUserTable
|
||||
|
||||
# 回滚上一次迁移
|
||||
./deploy.sh migrate-revert auth-service
|
||||
|
||||
# 强制同步 Schema(仅开发环境)
|
||||
./deploy.sh schema-sync auth-service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 环境变量说明
|
||||
|
||||
### 必填变量
|
||||
|
||||
| 变量 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| `POSTGRES_USER` | 数据库用户名 | `it0` |
|
||||
| `POSTGRES_PASSWORD` | 数据库密码 | *自动生成* |
|
||||
| `POSTGRES_DB` | 数据库名 | `it0` |
|
||||
| `JWT_SECRET` | JWT 签名密钥 | *自动生成* |
|
||||
| `JWT_REFRESH_SECRET` | Refresh Token 密钥 | *自动生成* |
|
||||
| `VAULT_MASTER_KEY` | 凭证加密主密钥 | *自动生成* |
|
||||
| `ANTHROPIC_API_KEY` | Claude AI API 密钥 | `sk-ant-xxx` |
|
||||
|
||||
### 可选变量
|
||||
|
||||
| 变量 | 说明 | 默认值 |
|
||||
|------|------|--------|
|
||||
| `REDIS_PASSWORD` | Redis 密码 | 空(无认证) |
|
||||
| `API_DOMAIN` | API 域名 | `it0api.szaiai.com` |
|
||||
| `WEB_DOMAIN` | Web 域名 | `it0.szaiai.com` |
|
||||
| `CERT_EMAIL` | Let's Encrypt 邮箱 | `admin@szaiai.com` |
|
||||
| `TWILIO_ACCOUNT_SID` | Twilio 账号 SID | 空 |
|
||||
| `TWILIO_AUTH_TOKEN` | Twilio 认证令牌 | 空 |
|
||||
| `TWILIO_PHONE_NUMBER` | Twilio 电话号码 | 空 |
|
||||
| `WHISPER_MODEL` | Whisper 模型版本 | `large-v3` |
|
||||
| `KOKORO_MODEL` | Kokoro TTS 模型 | `kokoro-82m` |
|
||||
| `VOICE_DEVICE` | 语音计算设备 | `cpu` |
|
||||
|
||||
---
|
||||
|
||||
## 服务端口
|
||||
|
||||
### 内部端口(Docker 网络内)
|
||||
|
||||
| 服务 | 端口 | 健康检查 |
|
||||
|------|------|----------|
|
||||
| Kong API Gateway | 8000 (代理) / 8001 (管理) | `GET /status` |
|
||||
| Web Admin | 3000 | — |
|
||||
| Auth Service | 3001 | `GET /api/health` |
|
||||
| Agent Service | 3002 | `GET /api/health` |
|
||||
| Ops Service | 3003 | `GET /api/health` |
|
||||
| Inventory Service | 3004 | `GET /api/health` |
|
||||
| Monitor Service | 3005 | `GET /api/health` |
|
||||
| Comm Service | 3006 | `GET /api/health` |
|
||||
| Audit Service | 3007 | `GET /api/health` |
|
||||
| Voice Service | 3008 | `GET /health` |
|
||||
| PostgreSQL | 5432 | — |
|
||||
| Redis | 6379 | — |
|
||||
|
||||
### Kong 网关路由
|
||||
|
||||
```
|
||||
/api/v1/auth → http://auth-service:3001
|
||||
/api/v1/agent → http://agent-service:3002
|
||||
/api/v1/ops → http://ops-service:3003
|
||||
/api/v1/inventory → http://inventory-service:3004
|
||||
/api/v1/monitor → http://monitor-service:3005
|
||||
/api/v1/comm → http://comm-service:3006
|
||||
/api/v1/audit → http://audit-service:3007
|
||||
|
||||
# WebSocket 路由
|
||||
/ws/agent → ws://agent-service:3002
|
||||
/ws/voice → ws://voice-service:3008
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 运维命令
|
||||
|
||||
所有命令通过 `deploy/docker/deploy.sh` 执行:
|
||||
|
||||
### 服务管理
|
||||
|
||||
```bash
|
||||
./deploy.sh up # 启动所有服务
|
||||
./deploy.sh down # 停止所有服务
|
||||
./deploy.sh restart # 重启所有服务
|
||||
./deploy.sh start-svc <name> # 启动指定服务
|
||||
./deploy.sh rebuild-svc <name> # 重建并重启指定服务
|
||||
```
|
||||
|
||||
### 监控与日志
|
||||
|
||||
```bash
|
||||
./deploy.sh status # 查看容器运行状态
|
||||
./deploy.sh health # 健康检查所有服务
|
||||
./deploy.sh logs # 查看所有日志
|
||||
./deploy.sh logs <service> # 查看指定服务日志
|
||||
```
|
||||
|
||||
### 基础设施
|
||||
|
||||
```bash
|
||||
./deploy.sh infra-up # 仅启动 PostgreSQL + Redis
|
||||
./deploy.sh infra-reset # 重置基础设施(会删除数据!)
|
||||
```
|
||||
|
||||
### SSL 证书
|
||||
|
||||
```bash
|
||||
./deploy.sh ssl-init # 首次获取证书
|
||||
./deploy.sh ssl-up # 带 SSL 启动
|
||||
./deploy.sh ssl-renew # 手动续期证书
|
||||
./deploy.sh ssl-status # 查看证书状态
|
||||
```
|
||||
|
||||
### 数据库
|
||||
|
||||
```bash
|
||||
./deploy.sh migrate # 运行迁移
|
||||
./deploy.sh migrate-generate <svc> <name> # 生成迁移
|
||||
./deploy.sh migrate-revert <svc> # 回滚迁移
|
||||
./deploy.sh schema-sync <svc> # 同步 Schema(仅开发)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 关键文件索引
|
||||
|
||||
| 路径 | 说明 |
|
||||
|------|------|
|
||||
| `package.json` | Monorepo 根配置(pnpm workspaces + Turbo 脚本) |
|
||||
| `turbo.json` | Turbo 构建管道与缓存配置 |
|
||||
| `deploy/docker/deploy.sh` | 生产部署脚本(核心) |
|
||||
| `deploy/docker/docker-compose.yml` | 主 Docker Compose 编排文件 |
|
||||
| `deploy/docker/docker-compose.voice.yml` | GPU 语音服务覆盖层 |
|
||||
| `deploy/docker/docker-compose.ssl.yml` | SSL Nginx 代理覆盖层 |
|
||||
| `deploy/docker/.env.example` | 环境变量模板 |
|
||||
| `deploy/docker/nginx/nginx.conf` | Nginx SSL 反向代理配置 |
|
||||
| `deploy/k8s/base/` | Kubernetes 部署配置 |
|
||||
| `packages/gateway/config/kong.yml` | Kong 网关声明式配置 |
|
||||
| `packages/gateway/Dockerfile` | Kong 网关 Dockerfile |
|
||||
| `packages/services/voice-service/Dockerfile` | 语音服务 Dockerfile |
|
||||
|
||||
---
|
||||
|
||||
## 快速上手清单
|
||||
|
||||
### 本地开发(Docker)
|
||||
|
||||
- [ ] 安装 Docker、pnpm、Node.js v18+
|
||||
- [ ] `pnpm install` — 安装依赖
|
||||
- [ ] `cd deploy/docker && ./deploy.sh install` — 初始化配置
|
||||
- [ ] 编辑 `.env`,设置 `ANTHROPIC_API_KEY`
|
||||
- [ ] `./deploy.sh build` — 构建镜像
|
||||
- [ ] `./deploy.sh up` — 启动服务
|
||||
- [ ] `./deploy.sh migrate` — 数据库迁移
|
||||
- [ ] 访问 `http://localhost:3000`(Web)和 `http://localhost:8000`(API)
|
||||
|
||||
### 生产部署
|
||||
|
||||
- [ ] 准备服务器(Linux,已安装 Docker + Docker Compose)
|
||||
- [ ] 克隆代码仓库
|
||||
- [ ] `cd deploy/docker && ./deploy.sh install` — 初始化配置
|
||||
- [ ] 编辑 `.env`,设置所有必要变量(API Key、域名、邮箱)
|
||||
- [ ] `./deploy.sh build` — 构建镜像
|
||||
- [ ] `./deploy.sh ssl-init` — 获取 SSL 证书
|
||||
- [ ] `./deploy.sh ssl-up` — 带 SSL 启动
|
||||
- [ ] `./deploy.sh migrate` — 数据库迁移
|
||||
- [ ] `./deploy.sh health` — 验证所有服务健康
|
||||
Loading…
Reference in New Issue