deploy docs

This commit is contained in:
archer
2023-05-08 10:25:17 +08:00
parent e2fccd391e
commit 3ef6d3fe63
3 changed files with 71 additions and 49 deletions

View File

@@ -8,6 +8,8 @@ Fast GPT 允许你使用自己的 openai API KEY 来快速的调用 openai 接
## 开发 ## 开发
**第一次开发,请先看下方部署,需要部署数据库.开发的环境变量和部署的环境变量几乎相同,仅 IP 地址不一样.所以部署好后,直接把部署文件的环境变量复制过来,改下 Ip 就 OK 了。**
**配置环境变量** **配置环境变量**
复制.env.template 文件,生成一个.env.local 环境变量文件夹,修改.env.local 内容,参考下方: 复制.env.template 文件,生成一个.env.local 环境变量文件夹,修改.env.local 内容,参考下方:
@@ -18,31 +20,24 @@ AXIOS_PROXY_PORT=7890
# openai 中转连接(可选) # openai 中转连接(可选)
OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_BASE_URL_AUTH=可选的安全凭证 OPENAI_BASE_URL_AUTH=可选的安全凭证
# 是否开启队列任务。 1-开启0-关闭(请求 parentUrl 去执行任务,单机时直接填1
queueTask=1 queueTask=1
parentUrl=https://hostname/api/openapi/startEvents parentUrl=https://hostname/api/openapi/startEvents
# 发送邮箱验证码配置。参考 nodeMail 获取参数,自行百度。
MY_MAIL=xxx@qq.com MY_MAIL=xxx@qq.com
MAILE_CODE=xxx MAILE_CODE=xxx
# 阿里短信服务(邮箱和短信至少二选一)
aliAccessKeyId=xxx aliAccessKeyId=xxx
aliAccessKeySecret=xxx aliAccessKeySecret=xxx
aliSignName=xxx aliSignName=xxx
aliTemplateCode=SMS_xxx aliTemplateCode=SMS_xxx
# token随便填作为登录凭证
TOKEN_KEY=xxx TOKEN_KEY=xxx
# openai key
OPENAIKEY=sk-xxx OPENAIKEY=sk-xxx
# mongo连接地址 # mongo镜像的username,password对应
MONGODB_URI=mongodb://username:password@0.0.0.0:27017/test?authSource=admin MONGODB_URI=mongodb://username:password@服务器IP:27017/test?authSource=admin
# mongo数据库名称
MONGODB_NAME=xxx MONGODB_NAME=xxx
# pg 数据库相关内容,和 docker-compose pg 部分对上 PG_HOST=服务器IP
PG_HOST=0.0.0.0 PG_PORT=8100
PG_PORT=8102 PG_USER=fastgpt # POSTGRES_USER
PG_USER=fastgpt PG_PASSWORD=1234 # POSTGRES_PASSWORD
PG_PASSWORD=1234 PG_DB_NAME=fastgpt # POSTGRES_DB
PG_DB_NAME=fastgpt
``` ```
**运行** **运行**
@@ -55,13 +50,21 @@ pnpm dev
### 代理环境(国外服务器可忽略) ### 代理环境(国外服务器可忽略)
选择一个即可。
1. [clash 方案](./docs/proxy/clash.md) - 仅需一台服务器(需要有 clash 1. [clash 方案](./docs/proxy/clash.md) - 仅需一台服务器(需要有 clash
2. [nginx 方案](./docs/proxy/nginx.md) - 需要一台国外服务器 2. [nginx 方案](./docs/proxy/nginx.md) - 需要一台国外服务器
3. [cloudflare 方案](./docs/proxy/cloudflare.md) - 需要有域名(每日免费 10w 次代理请求) 3. [cloudflare 方案](./docs/proxy/cloudflare.md) - 需要有域名(每日免费 10w 次代理请求)
### docker 部署 ### docker 部署
#### 1. 安装 docker 和 docker-compose #### 1. 准备
> 1. 服务器开通 80 端口。用代理的话,对应的代理端口也需要打开。
> 2. QQ 邮箱 Code进入 QQ 邮箱 -> 账号 -> 申请 SMTP 账号
> 3. 有域名的准备好 SSL 证书
#### 2. 安装 docker 和 docker-compose
这个不同系统略有区别,百度安装下。验证安装成功后进行下一步。下面给出一个例子: 这个不同系统略有区别,百度安装下。验证安装成功后进行下一步。下面给出一个例子:
@@ -75,13 +78,14 @@ sudo chmod +x /usr/local/bin/docker-compose
# 验证安装 # 验证安装
docker -v docker -v
docker-compose -v docker-compose -v
# 如果docker-compose运行不了可以把 deploy/docker-compose 文件复制到服务器,然后在 docker-compose 文件夹里执行 sh init.sh。会把docker-compose文件复制到对应目录。
``` ```
#### 2. 创建 3 个初始化文件 #### 2. 创建 3 个初始化文件
手动创建或者直接把 deploy 里内容复制过去 手动创建或者直接把 deploy 里内容复制过去
**/root/fast-gpt/pg/init.sql** **/root/fastgpt/pg/init.sql PG 数据库初始化**
```sql ```sql
set -e set -e
@@ -105,7 +109,7 @@ CREATE INDEX modelData_modelId_index ON modelData USING HASH (model_id);
EOSQL EOSQL
``` ```
**/root/fast-gpt/nginx/nginx.conf** **/root/fastgpt/nginx/nginx.conf Nginx 配置**
```conf ```conf
user nginx; user nginx;
@@ -147,6 +151,7 @@ http {
server { server {
listen 443 ssl; listen 443 ssl;
# 改成自己的域名和证书
server_name docgpt.ahapocket.cn; server_name docgpt.ahapocket.cn;
ssl_certificate /ssl/docgpt.pem; ssl_certificate /ssl/docgpt.pem;
ssl_certificate_key /ssl/docgpt.key; ssl_certificate_key /ssl/docgpt.key;
@@ -167,7 +172,7 @@ http {
} }
``` ```
**/root/fast-gpt/docker-compose.yml** **/root/fastgpt/docker-compose.yml 核心部署文件**
```yml ```yml
version: '3.3' version: '3.3'
@@ -178,26 +183,35 @@ services:
restart: always restart: always
container_name: fast-gpt container_name: fast-gpt
environment: environment:
# - AXIOS_PROXY_HOST=127.0.0.1 # proxy可选
# - AXIOS_PROXY_PORT=7890 - AXIOS_PROXY_HOST=127.0.0.1
# - OPENAI_BASE_URL=https://api.openai.com/v1 - AXIOS_PROXY_PORT=7890
# - OPENAI_BASE_URL_AUTH=可选的安全凭证 # openai 中转连接(可选)
- OPENAI_BASE_URL=https://api.openai.com/v1
- OPENAI_BASE_URL_AUTH=可选的安全凭证
# 是否开启队列任务。 1-开启0-关闭(请求 parentUrl 去执行任务,单机时直接填1
- queueTask=1
- parentUrl=https://hostname/api/openapi/startEvents
# 发送邮箱验证码配置。用的是QQ邮箱。参考 nodeMail 获取MAILE_CODE自行百度。
- MY_MAIL=xxxx@qq.com - MY_MAIL=xxxx@qq.com
- MAILE_CODE=xxxx - MAILE_CODE=xxxx
# 阿里短信服务(邮箱和短信至少二选一)
- aliAccessKeyId=xxxx - aliAccessKeyId=xxxx
- aliAccessKeySecret=xxxx - aliAccessKeySecret=xxxx
- aliSignName=xxxxx - aliSignName=xxxxx
- aliTemplateCode=SMS_xxxx - aliTemplateCode=SMS_xxxx
# token加密凭证随便填作为登录凭证
- TOKEN_KEY=xxxx - TOKEN_KEY=xxxx
- queueTask=1 # 和下方mongo镜像的username,password对应
- parentUrl=https://hostname/api/openapi/startEvents
- MONGODB_URI=mongodb://username:passsword@0.0.0.0:27017/?authSource=admin - MONGODB_URI=mongodb://username:passsword@0.0.0.0:27017/?authSource=admin
- MONGODB_NAME=xxx - MONGODB_NAME=xxx
- PG_HOST=0.0.0.0 - PG_HOST=0.0.0.0
- PG_PORT=8100 - PG_PORT=8100
- PG_USER=fastgpt # 和下方PG镜像对应.
- PG_PASSWORD=1234 - PG_USER=fastgpt # POSTGRES_USER
- PG_DB_NAME=fastgpt - PG_PASSWORD=1234 # POSTGRES_PASSWORD
- PG_DB_NAME=fastgpt # POSTGRES_DB
# openai api key
- OPENAIKEY=sk-xxxxx - OPENAIKEY=sk-xxxxx
nginx: nginx:
image: nginx:alpine3.17 image: nginx:alpine3.17
@@ -205,10 +219,12 @@ services:
restart: always restart: always
network_mode: host network_mode: host
volumes: volumes:
- /root/fast-gpt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro # 刚创建的文件
- /root/fast-gpt/nginx/logs:/var/log/nginx - /root/fastgpt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- /root/fast-gpt/nginx/ssl/docgpt.key:/ssl/docgpt.key - /root/fastgpt/nginx/logs:/var/log/nginx
- /root/fast-gpt/nginx/ssl/docgpt.pem:/ssl/docgpt.pem # https证书没有的话不填对应的nginx.conf也要修改
- /root/fastgpt/nginx/ssl/docgpt.key:/ssl/docgpt.key
- /root/fastgpt/nginx/ssl/docgpt.pem:/ssl/docgpt.pem
pg: pg:
image: ankane/pgvector image: ankane/pgvector
container_name: pg container_name: pg
@@ -216,12 +232,14 @@ services:
ports: ports:
- 8100:5432 - 8100:5432
environment: environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- POSTGRES_USER=fastgpt - POSTGRES_USER=fastgpt
- POSTGRES_PASSWORD=1234 - POSTGRES_PASSWORD=1234
- POSTGRES_DB=fastgpt - POSTGRES_DB=fastgpt
volumes: volumes:
- /root/fast-gpt/pg/data:/var/lib/postgresql/data # 刚创建的文件
- /root/fast-gpt/pg/init.sql:/docker-entrypoint-initdb.d/init.sh - /root/fastgpt/pg/init.sql:/docker-entrypoint-initdb.d/init.sh
- /root/fastgpt/pg/data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
mongodb: mongodb:
image: mongo:6.0.4 image: mongo:6.0.4
@@ -230,11 +248,12 @@ services:
ports: ports:
- 27017:27017 - 27017:27017
environment: environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- MONGO_INITDB_ROOT_USERNAME=username - MONGO_INITDB_ROOT_USERNAME=username
- MONGO_INITDB_ROOT_PASSWORD=password - MONGO_INITDB_ROOT_PASSWORD=password
volumes: volumes:
- /root/fast-gpt/mongo/data:/data/db - /root/fastgpt/mongo/data:/data/db
- /root/fast-gpt/mongo/logs:/var/log/mongodb - /root/fastgpt/mongo/logs:/var/log/mongodb
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
``` ```

View File

@@ -1 +1,2 @@
cp ./docker-compose /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

View File

@@ -563,6 +563,7 @@ const Chat = ({
<MenuItem onClick={() => router.replace(`/chat?modelId=${modelId}`)}> <MenuItem onClick={() => router.replace(`/chat?modelId=${modelId}`)}>
</MenuItem> </MenuItem>
{chatId && (
<MenuItem <MenuItem
onClick={async () => { onClick={async () => {
try { try {
@@ -577,6 +578,7 @@ const Chat = ({
> >
</MenuItem> </MenuItem>
)}
<MenuItem onClick={() => onclickExportChat('html')}>HTML格式</MenuItem> <MenuItem onClick={() => onclickExportChat('html')}>HTML格式</MenuItem>
<MenuItem onClick={() => onclickExportChat('pdf')}>PDF格式</MenuItem> <MenuItem onClick={() => onclickExportChat('pdf')}>PDF格式</MenuItem>
<MenuItem onClick={() => onclickExportChat('md')}>Markdown格式</MenuItem> <MenuItem onClick={() => onclickExportChat('md')}>Markdown格式</MenuItem>