This commit is contained in:
wsl-d4
2025-10-22 09:35:58 +08:00
parent 722e15b458
commit 144ed3cbdf
9 changed files with 672 additions and 5 deletions

22
fastgpt/.env Normal file
View File

@@ -0,0 +1,22 @@
# PostgreSQL 配置
POSTGRES_PASSWORD=fastgpt_password
# MongoDB 配置
MONGO_USERNAME=root
MONGO_PASSWORD=fastgpt_mongo_password
# OpenAI API 配置(必需)
OPENAI_API_KEY=sk-fake_key_for_local_testing_only
OPENAI_BASE_URL=https://api.openai.com/v1
# 安全配置
JWT_SECRET=your_jwt_secret_key_here_please_change_in_production
APIKEY=your_api_key_here_please_change_in_production
FILE_TOKEN_KEY=your_file_token_key_here_please_change_in_production
# 系统配置
VECTOR_MAX_PROCESS=10
QA_MAX_PROCESS=10
# 默认管理员账号(首次登录使用)
DEFAULT_ROOT_PSW=admin123

29
fastgpt/.env.example Normal file
View File

@@ -0,0 +1,29 @@
# PostgreSQL 配置
POSTGRES_PASSWORD=your_postgres_password_here
# MongoDB 配置
MONGO_USERNAME=root
MONGO_PASSWORD=your_mongo_password_here
# OpenAI API 配置(必需)
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
# Claude API 配置(可选)
CLAUDE_API_KEY=your_claude_api_key_here
CLAUDE_BASE_URL=https://api.anthropic.com
# 安全配置
JWT_SECRET=your_jwt_secret_here_32_chars_min
APIKEY=your_api_key_here
FILE_TOKEN_KEY=your_file_token_key_here
SESSION_SECRET=your_session_secret_here
# 系统配置
SHARE_USER_ID=
SUB_PLANS=
VECTOR_MAX_PROCESS=10
QA_MAX_PROCESS=10
# 默认管理员账号(首次登录使用)
DEFAULT_ROOT_PSW=your_admin_password_here

136
fastgpt/README.md Normal file
View File

@@ -0,0 +1,136 @@
# FastGPT Docker 部署指南
FastGPT 是一个基于大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。
## 快速开始
### 1. 创建目录并进入
```bash
mkdir fastgpt && cd fastgpt
```
### 2. 下载配置文件
```bash
# 复制 docker-compose.yml 文件
cp /mnt/e/020-awei-cloud-9900k-code/common-server-public/fastgpt/docker-compose.yml .
# 复制环境变量文件
cp /mnt/e/020-awei-cloud-9900k-code/common-server-public/fastgpt/.env.example .env
```
### 3. 配置环境变量
编辑 `.env` 文件,设置必要的配置:
```bash
# 必需配置
POSTGRES_PASSWORD=your_secure_postgres_password
MONGO_PASSWORD=your_secure_mongo_password
OPENAI_API_KEY=your_openai_api_key_here
JWT_SECRET=your_very_long_jwt_secret_key_here
APIKEY=your_api_key_here
FILE_TOKEN_KEY=your_file_token_key_here
# 默认管理员密码
DEFAULT_ROOT_PSW=your_admin_password
```
### 4. 启动服务
```bash
docker-compose up -d
```
### 5. 访问 FastGPT
- FastGPT 主应用http://localhost:3000
默认管理员账号:
- 用户名root
- 密码:您在 `.env` 中设置的 `DEFAULT_ROOT_PSW`
## 服务说明
### 核心服务
- **FastGPT**: 主应用服务(端口 3000
- **PostgreSQL**: 数据库服务,支持 pgvector 向量搜索
- **MongoDB**: 文档数据库
- **Redis**: 缓存服务
### 数据持久化
- PostgreSQL 数据:`postgres_data`
- MongoDB 数据:`mongo_data`
- Redis 数据:`redis_data`
## 配置说明
### 必需环境变量
- `OPENAI_API_KEY`: OpenAI API 密钥
- `POSTGRES_PASSWORD`: PostgreSQL 数据库密码
- `MONGO_PASSWORD`: MongoDB 数据库密码
- `JWT_SECRET`: JWT 密钥,用于用户认证
- `APIKEY`: FastGPT API 密钥
- `FILE_TOKEN_KEY`: 文件上传令牌密钥
### 可选配置
- `CLAUDE_API_KEY`: Claude API 密钥(可选)
- `VECTOR_MAX_PROCESS`: 向量处理最大进程数(默认 10
- `QA_MAX_PROCESS`: 问答处理最大进程数(默认 10
## 常用命令
```bash
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看日志
docker-compose logs -f
# 重启服务
docker-compose restart
# 更新镜像
docker-compose pull
docker-compose up -d
```
## 功能特性
- 📚 知识库管理
- 🔍 智能问答
- 📄 文档处理
- 🎯 向量搜索
- 🔗 多模型支持OpenAI、Claude 等)
- 📊 可视化工作流
- 👥 多用户管理
- 🔐 API 管理
## 注意事项
1. **安全性**: 生产环境请使用强密码和密钥
2. **端口冲突**: 确保端口 3000、5432、27017、6379 未被占用
3. **资源要求**: 建议至少 4GB 内存8GB 以上更佳
4. **备份**: 定期备份数据库数据
## 故障排查
### 服务无法启动
```bash
# 检查容器状态
docker-compose ps
# 查看具体服务日志
docker-compose logs [service-name]
```
### 数据库连接失败
确保 PostgreSQL 和 MongoDB 服务正常启动,检查环境变量配置是否正确。
### API 调用失败
检查 `OPENAI_API_KEY` 是否有效,以及 API 配额是否充足。
## 更多帮助
- FastGPT 官方文档https://doc.fastgpt.in/
- GitHub 仓库https://github.com/labring/FastGPT
- 社区支持https://github.com/labring/FastGPT/issues

22
fastgpt/config.json Normal file
View File

@@ -0,0 +1,22 @@
{
"feConfigs": {
"lafEnv": "https://laf.dev", // laf环境。 https://laf.run (杭州阿里云) ,或者私有化的laf环境。如果使用 Laf openapi 功能,需要最新版的 laf 。
"mcpServerProxyEndpoint": "" // mcp server 代理地址,例如: http://localhost:3005
},
"systemEnv": {
"datasetParseMaxProcess": 10, // 知识库文件解析最大线程数量
"vectorMaxProcess": 10, // 向量处理线程数量
"qaMaxProcess": 10, // 问答拆分线程数量
"vlmMaxProcess": 10, // 图片理解模型最大处理进程
"tokenWorkers": 30, // Token 计算线程保持数,会持续占用内存,不能设置太大。
"hnswEfSearch": 100, // 向量搜索参数,仅对 PG 和 OB 生效。越大搜索越精确但是速度越慢。设置为100有99%+精度。
"hnswMaxScanTuples": 100000, // 向量搜索最大扫描数据量,仅对 PG生效。
"customPdfParse": {
"url": "", // 自定义 PDF 解析服务地址
"key": "", // 自定义 PDF 解析服务密钥
"doc2xKey": "", // doc2x 服务密钥
"price": 0 // PDF 解析服务价格
}
}
}

267
fastgpt/docker-compose.yml Normal file
View File

@@ -0,0 +1,267 @@
# 用于部署的 docker-compose 文件:
# - FastGPT 端口映射为 3000:3000
# - FastGPT-mcp-server 端口映射 3005:3000
# - 建议修改账密后再运行
# plugin auth token
x-plugin-auth-token: &x-plugin-auth-token 'token'
# aiproxy token
x-aiproxy-token: &x-aiproxy-token 'token'
# 数据库连接相关配置
x-share-db-config: &x-share-db-config
MONGODB_URI: mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin
DB_MAX_LINK: 30
REDIS_URL: redis://default:mypassword@redis:6379
S3_EXTERNAL_BASE_URL:
S3_ENDPOINT: fastgpt-minio
S3_PORT: 9000
S3_USE_SSL: false
S3_ACCESS_KEY: minioadmin
S3_SECRET_KEY: minioadmin
S3_PUBLIC_BUCKET: fastgpt-public # 公开读私有写桶
S3_PRIVATE_BUCKET: fastgpt-private # 私有读写桶
# 向量库相关配置
x-vec-config: &x-vec-config
PG_URL: postgresql://username:password@pg:5432/postgres
version: '3.3'
services:
# Vector DB
vectorDB:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:0.8.0-pg15
container_name: pg
restart: always
networks:
- fastgpt
environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- POSTGRES_USER=username
- POSTGRES_PASSWORD=password
- POSTGRES_DB=postgres
volumes:
- ./pg/data:/var/lib/postgresql/data
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'username', '-d', 'postgres']
interval: 5s
timeout: 5s
retries: 10
mongo:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # cpu 不支持 AVX 时候使用 4.4.29
container_name: mongo
restart: always
networks:
- fastgpt
command: mongod --keyFile /data/mongodb.key --replSet rs0
environment:
- MONGO_INITDB_ROOT_USERNAME=myusername
- MONGO_INITDB_ROOT_PASSWORD=mypassword
volumes:
- ./mongo/data:/data/db
healthcheck:
test: ['CMD', 'mongo', '-u', 'myusername', '-p', 'mypassword', '--authenticationDatabase', 'admin', '--eval', "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
entrypoint:
- bash
- -c
- |
openssl rand -base64 128 > /data/mongodb.key
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
echo 'const isInited = rs.status().ok === 1
if(!isInited){
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
}' > /data/initReplicaSet.js
# 启动MongoDB服务
exec docker-entrypoint.sh "$$@" &
# 等待MongoDB服务启动
until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')"; do
echo "Waiting for MongoDB to start..."
sleep 2
done
# 执行初始化副本集的脚本
mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js
# 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
wait $$!
redis:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/redis:7.2-alpine
container_name: redis
networks:
- fastgpt
restart: always
command: |
redis-server --requirepass mypassword --loglevel warning --maxclients 10000 --appendonly yes --save 60 10 --maxmemory 4gb --maxmemory-policy noeviction
healthcheck:
test: ['CMD', 'redis-cli', '-a', 'mypassword', 'ping']
interval: 10s
timeout: 3s
retries: 3
start_period: 30s
volumes:
- ./redis/data:/data
fastgpt-minio:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/minio:RELEASE.2025-09-07T16-13-09Z
container_name: fastgpt-minio
restart: always
networks:
- fastgpt
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
volumes:
- ./fastgpt-minio:/data
command: server /data --console-address ":9001"
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live']
interval: 30s
timeout: 20s
retries: 3
fastgpt:
container_name: fastgpt
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.13.2 # git
ports:
- 3000:3000
networks:
- fastgpt
depends_on:
- mongo
- sandbox
- vectorDB
- fastgpt-plugin
restart: always
environment:
<<: [*x-share-db-config, *x-vec-config]
# 前端外部可访问的地址,用于自动补全文件资源路径。例如 https:fastgpt.cn不能填 localhost。这个值可以不填不填则发给模型的图片会是一个相对路径而不是全路径模型可能伪造Host。
FE_DOMAIN:
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
DEFAULT_ROOT_PSW: 1234
# 登录凭证密钥
TOKEN_KEY: any
# root的密钥常用于升级时候的初始化请求
ROOT_KEY: root_key
# 文件阅读加密
FILE_TOKEN_KEY: filetoken
# 密钥加密key
AES256_SECRET_KEY: fastgptkey
# plugin 地址
PLUGIN_BASE_URL: http://fastgpt-plugin:3000
PLUGIN_TOKEN: *x-plugin-auth-token
# sandbox 地址
SANDBOX_URL: http://sandbox:3000
# AI Proxy 的地址,如果配了该地址,优先使用
AIPROXY_API_ENDPOINT: http://aiproxy:3000
# AI Proxy 的 Admin Token与 AI Proxy 中的环境变量 ADMIN_KEY
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
WORKFLOW_MAX_LOOP_TIMES: 100
# 对话文件过期天数
CHAT_FILE_EXPIRE_TIME: 7
# 服务器接收请求,最大大小,单位 MB
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
volumes:
- ./config.json:/app/data/config.json
sandbox:
container_name: sandbox
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.13.2
networks:
- fastgpt
restart: always
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.13.2
networks:
- fastgpt
ports:
- 3006:3000
restart: always
environment:
- FASTGPT_ENDPOINT=http://fastgpt:3000
fastgpt-plugin:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin:v0.2.4
container_name: fastgpt-plugin
restart: always
networks:
- fastgpt
environment:
<<: *x-share-db-config
AUTH_TOKEN: *x-plugin-auth-token
S3_BUCKET: fastgpt-plugins
# 工具网络请求,最大请求和响应体
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
depends_on:
fastgpt-minio:
condition: service_healthy
# AI Proxy
aiproxy:
image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.3.2
container_name: aiproxy
restart: unless-stopped
depends_on:
aiproxy_pg:
condition: service_healthy
networks:
- fastgpt
- aiproxy
environment:
# 对应 fastgpt 里的AIPROXY_API_TOKEN
ADMIN_KEY: *x-aiproxy-token
# 错误日志详情保存时间(小时)
LOG_DETAIL_STORAGE_HOURS: 1
# 数据库连接地址
SQL_DSN: postgres://postgres:aiproxy@aiproxy_pg:5432/aiproxy
# 最大重试次数
RETRY_TIMES: 3
# 不需要计费
BILLING_ENABLED: false
# 不需要严格检测模型
DISABLE_MODEL_CONFIG: true
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:3000/api/status']
interval: 5s
timeout: 5s
retries: 10
aiproxy_pg:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:0.8.0-pg15 # docker hub
restart: unless-stopped
container_name: aiproxy_pg
volumes:
- ./aiproxy_pg:/var/lib/postgresql/data
networks:
- aiproxy
environment:
TZ: Asia/Shanghai
POSTGRES_USER: postgres
POSTGRES_DB: aiproxy
POSTGRES_PASSWORD: aiproxy
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'postgres', '-d', 'aiproxy']
interval: 5s
timeout: 5s
retries: 10
networks:
fastgpt:
aiproxy:
vector:

153
fastgpt/start.sh Normal file
View File

@@ -0,0 +1,153 @@
#!/bin/bash
# FastGPT 管理脚本
# 用于快速管理 FastGPT 服务的启动、停止、重启等操作
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 函数:显示帮助信息
show_help() {
echo "FastGPT 管理脚本"
echo "用法: $0 {start|stop|restart|status|logs|update|clean|backup}"
echo ""
echo "命令说明:"
echo " start - 启动 FastGPT 服务"
echo " stop - 停止 FastGPT 服务"
echo " restart - 重启 FastGPT 服务"
echo " status - 查看服务状态"
echo " logs - 查看实时日志"
echo " update - 更新镜像并重启"
echo " clean - 清理未使用的镜像和容器"
echo " backup - 备份数据库"
echo " help - 显示此帮助信息"
}
# 函数:检查环境
check_env() {
if [ ! -f ".env" ]; then
echo -e "${YELLOW}警告: .env 文件不存在,将使用默认配置${NC}"
echo -e "${YELLOW}建议复制 .env.example 为 .env 并进行配置${NC}"
fi
}
# 函数:启动服务
start() {
echo -e "${GREEN}正在启动 FastGPT 服务...${NC}"
check_env
docker-compose up -d
echo -e "${GREEN}FastGPT 服务已启动!${NC}"
echo -e "${GREEN}访问地址: http://localhost:3000${NC}"
}
# 函数:停止服务
stop() {
echo -e "${YELLOW}正在停止 FastGPT 服务...${NC}"
docker-compose down
echo -e "${YELLOW}FastGPT 服务已停止${NC}"
}
# 函数:重启服务
restart() {
echo -e "${GREEN}正在重启 FastGPT 服务...${NC}"
docker-compose restart
echo -e "${GREEN}FastGPT 服务已重启!${NC}"
}
# 函数:查看状态
status() {
echo -e "${GREEN}FastGPT 服务状态:${NC}"
docker-compose ps
echo ""
echo -e "${GREEN}容器资源使用情况:${NC}"
docker stats --no-stream $(docker-compose ps -q) 2>/dev/null || echo "容器未运行"
}
# 函数:查看日志
logs() {
if [ -n "$2" ]; then
# 查看特定服务的日志
docker-compose logs -f "$2"
else
# 查看所有日志
docker-compose logs -f
fi
}
# 函数:更新镜像
update() {
echo -e "${GREEN}正在更新 FastGPT 镜像...${NC}"
docker-compose pull
docker-compose up -d
echo -e "${GREEN}镜像更新完成!${NC}"
}
# 函数:清理系统
clean() {
echo -e "${YELLOW}正在清理未使用的 Docker 资源...${NC}"
docker system prune -f
echo -e "${GREEN}清理完成!${NC}"
}
# 函数:备份数据库
backup() {
BACKUP_DIR="./backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
echo -e "${GREEN}正在备份数据库...${NC}"
mkdir -p "$BACKUP_DIR"
# 备份 PostgreSQL
docker-compose exec -T postgres pg_dump -U postgres fastgpt > "$BACKUP_DIR/postgres_backup_$TIMESTAMP.sql"
# 备份 MongoDB
docker-compose exec -T mongo mongodump --username root --authenticationDatabase admin --db fastgpt --archive="/tmp/mongo_backup_$TIMESTAMP.archive" && \
docker-compose cp mongo:"/tmp/mongo_backup_$TIMESTAMP.archive" "$BACKUP_DIR/mongo_backup_$TIMESTAMP.archive" && \
docker-compose exec -T mongo rm "/tmp/mongo_backup_$TIMESTAMP.archive"
echo -e "${GREEN}数据库备份完成!备份文件保存在 $BACKUP_DIR${NC}"
}
# 主程序
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
logs)
logs "$@"
;;
update)
update
;;
clean)
clean
;;
backup)
backup
;;
help|--help|-h)
show_help
;;
*)
echo -e "${RED}错误: 未知命令 $1${NC}"
show_help
exit 1
;;
esac