mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-27 08:25:07 +00:00
feat: 中转安全凭证;perf: 部署文件
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
# proxy
|
# proxy
|
||||||
AXIOS_PROXY_HOST=127.0.0.1
|
# AXIOS_PROXY_HOST=127.0.0.1
|
||||||
AXIOS_PROXY_PORT=7890
|
# AXIOS_PROXY_PORT=7890
|
||||||
|
# OPENAI_BASE_URL=https://api.openai.com/v1
|
||||||
|
# OPENAI_BASE_URL_AUTH=可选的安全凭证
|
||||||
|
# 是否开启队列任务。 1-开启,0-关闭(请求parentUrl去执行任务,单机时直接填1)
|
||||||
queueTask=1
|
queueTask=1
|
||||||
parentUrl=https://hostname/api/openapi/startEvents
|
parentUrl=https://hostname/api/openapi/startEvents
|
||||||
# email
|
# email
|
||||||
@@ -15,7 +18,6 @@ aliTemplateCode=SMS_xxx
|
|||||||
TOKEN_KEY=xxx
|
TOKEN_KEY=xxx
|
||||||
# openai
|
# openai
|
||||||
OPENAIKEY=sk-xxx
|
OPENAIKEY=sk-xxx
|
||||||
OPENAI_BASE_URL=https://api.openai.com/v1
|
|
||||||
# db
|
# db
|
||||||
MONGODB_URI=mongodb://username:password@0.0.0.0:27017/test?authSource=admin
|
MONGODB_URI=mongodb://username:password@0.0.0.0:27017/test?authSource=admin
|
||||||
PG_HOST=0.0.0.0
|
PG_HOST=0.0.0.0
|
||||||
|
24
README.md
24
README.md
@@ -6,14 +6,15 @@ Fast GPT 允许你使用自己的 openai API KEY 来快速的调用 openai 接
|
|||||||

|

|
||||||
|
|
||||||
## 开发
|
## 开发
|
||||||
复制 .env.template 成 .env.local ,填写核心参数
|
复制 .env.template 成 .env.local ,填写核心参数。可选内容不需要可留空或去掉。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# proxy(不需要代理可忽略)
|
# proxy(可选)
|
||||||
AXIOS_PROXY_HOST=127.0.0.1
|
AXIOS_PROXY_HOST=127.0.0.1
|
||||||
AXIOS_PROXY_PORT=7890
|
AXIOS_PROXY_PORT=7890
|
||||||
# 中转方案,修改 openai 的 base url
|
# openai 中转连接(可选)
|
||||||
OPENAI_BASE_URL=https://api.openai.com/v1
|
OPENAI_BASE_URL=https://api.openai.com/v1
|
||||||
|
OPENAI_BASE_URL_AUTH=可选的安全凭证
|
||||||
# 是否开启队列任务。 1-开启,0-关闭(请求parentUrl去执行任务,单机时直接填1)
|
# 是否开启队列任务。 1-开启,0-关闭(请求parentUrl去执行任务,单机时直接填1)
|
||||||
queueTask=1
|
queueTask=1
|
||||||
parentUrl=https://hostname/api/openapi/startEvents
|
parentUrl=https://hostname/api/openapi/startEvents
|
||||||
@@ -90,17 +91,10 @@ nohup ./clash-linux-amd64-v1.10.0 -d ./ &
|
|||||||
echo "Restart clash"
|
echo "Restart clash"
|
||||||
```
|
```
|
||||||
|
|
||||||
### 本地 docker 打包
|
### 准备初始化文件,需要自己创建
|
||||||
```bash
|
可以直接把 deploy 里内容复制过去
|
||||||
docker build -t imageName:tag .
|
|
||||||
docker push imageName:tag
|
|
||||||
# 或者直接拉镜像,见下方
|
|
||||||
```
|
|
||||||
|
|
||||||
### 准备初始化文件
|
|
||||||
**/root/fast-gpt/pg/init.sql**
|
**/root/fast-gpt/pg/init.sql**
|
||||||
```sql
|
```sql
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
set -e
|
||||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||||
|
|
||||||
@@ -183,8 +177,10 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
container_name: fast-gpt
|
container_name: fast-gpt
|
||||||
environment:
|
environment:
|
||||||
- AXIOS_PROXY_HOST=127.0.0.1
|
# - AXIOS_PROXY_HOST=127.0.0.1
|
||||||
- AXIOS_PROXY_PORT=7890
|
# - AXIOS_PROXY_PORT=7890
|
||||||
|
# - OPENAI_BASE_URL=https://api.openai.com/v1
|
||||||
|
# - OPENAI_BASE_URL_AUTH=可选的安全凭证
|
||||||
- MY_MAIL=xxxx@qq.com
|
- MY_MAIL=xxxx@qq.com
|
||||||
- MAILE_CODE=xxxx
|
- MAILE_CODE=xxxx
|
||||||
- aliAccessKeyId=xxxx
|
- aliAccessKeyId=xxxx
|
||||||
|
66
deploy/docker-compose.yml
Normal file
66
deploy/docker-compose.yml
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
version: '3.3'
|
||||||
|
services:
|
||||||
|
fast-gpt:
|
||||||
|
image: c121914yu/fast-gpt:latest
|
||||||
|
network_mode: host
|
||||||
|
restart: always
|
||||||
|
container_name: fast-gpt
|
||||||
|
environment:
|
||||||
|
# - AXIOS_PROXY_HOST=127.0.0.1
|
||||||
|
# - AXIOS_PROXY_PORT=7890
|
||||||
|
# - OPENAI_BASE_URL=https://api.openai.com/v1
|
||||||
|
# - OPENAI_BASE_URL_AUTH=可选的安全凭证
|
||||||
|
- MY_MAIL=xxxx@qq.com
|
||||||
|
- MAILE_CODE=xxxx
|
||||||
|
- aliAccessKeyId=xxxx
|
||||||
|
- aliAccessKeySecret=xxxx
|
||||||
|
- aliSignName=xxxxx
|
||||||
|
- aliTemplateCode=SMS_xxxx
|
||||||
|
- TOKEN_KEY=xxxx
|
||||||
|
- queueTask=1
|
||||||
|
- parentUrl=https://hostname/api/openapi/startEvents
|
||||||
|
- MONGODB_URI=mongodb://username:passsword@0.0.0.0:27017/?authSource=admin
|
||||||
|
- MONGODB_NAME=xxx
|
||||||
|
- PG_HOST=0.0.0.0
|
||||||
|
- PG_PORT=8100
|
||||||
|
- PG_USER=xxx
|
||||||
|
- PG_PASSWORD=xxx
|
||||||
|
- PG_DB_NAME=xxx
|
||||||
|
- OPENAIKEY=sk-xxxxx
|
||||||
|
nginx:
|
||||||
|
image: nginx:alpine3.17
|
||||||
|
container_name: nginx
|
||||||
|
restart: always
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- /root/fast-gpt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
|
- /root/fast-gpt/nginx/logs:/var/log/nginx
|
||||||
|
- /root/fast-gpt/nginx/ssl/docgpt.key:/ssl/docgpt.key
|
||||||
|
- /root/fast-gpt/nginx/ssl/docgpt.pem:/ssl/docgpt.pem
|
||||||
|
pg:
|
||||||
|
image: ankane/pgvector
|
||||||
|
container_name: pg
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 8100:5432
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=xxx
|
||||||
|
- POSTGRES_PASSWORD=xxx
|
||||||
|
- POSTGRES_DB=xxx
|
||||||
|
volumes:
|
||||||
|
- /root/fast-gpt/pg/data:/var/lib/postgresql/data
|
||||||
|
- /root/fast-gpt/pg/init.sql:/docker-entrypoint-initdb.d/init.sh
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
mongodb:
|
||||||
|
image: mongo:4.0.1
|
||||||
|
container_name: mongo
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 27017:27017
|
||||||
|
environment:
|
||||||
|
- MONGO_INITDB_ROOT_USERNAME=username
|
||||||
|
- MONGO_INITDB_ROOT_PASSWORD=password
|
||||||
|
volumes:
|
||||||
|
- /root/fast-gpt/mongo/data:/data/db
|
||||||
|
- /root/fast-gpt/mongo/logs:/var/log/mongodb
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
49
deploy/nginx/nginx.conf
Normal file
49
deploy/nginx/nginx.conf
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
user nginx;
|
||||||
|
worker_processes auto;
|
||||||
|
worker_rlimit_nofile 51200;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
access_log off;
|
||||||
|
server_names_hash_bucket_size 512;
|
||||||
|
client_header_buffer_size 32k;
|
||||||
|
large_client_header_buffers 4 32k;
|
||||||
|
client_max_body_size 50M;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_min_length 1k;
|
||||||
|
gzip_buffers 4 8k;
|
||||||
|
gzip_http_version 1.1;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_types text/plain application/x-javascript text/css application/javascript application/json application/xml;
|
||||||
|
gzip_disable "MSIE [1-6]\.";
|
||||||
|
|
||||||
|
open_file_cache max=1000 inactive=1d;
|
||||||
|
open_file_cache_valid 30s;
|
||||||
|
open_file_cache_min_uses 8;
|
||||||
|
open_file_cache_errors off;
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name docgpt.ahapocket.cn;
|
||||||
|
ssl_certificate /ssl/docgpt.pem;
|
||||||
|
ssl_certificate_key /ssl/docgpt.key;
|
||||||
|
ssl_session_timeout 5m;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://localhost:3000;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name docgpt.ahapocket.cn;
|
||||||
|
rewrite ^(.*) https://$server_name$1 permanent;
|
||||||
|
}
|
||||||
|
}
|
19
deploy/pg/init.sql
Normal file
19
deploy/pg/init.sql
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
set -e
|
||||||
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||||
|
|
||||||
|
CREATE EXTENSION vector;
|
||||||
|
-- init table
|
||||||
|
CREATE TABLE modelData (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
vector VECTOR(1536),
|
||||||
|
status VARCHAR(50) NOT NULL,
|
||||||
|
user_id VARCHAR(50) NOT NULL,
|
||||||
|
model_id VARCHAR(50) NOT NULL,
|
||||||
|
q TEXT NOT NULL,
|
||||||
|
a TEXT NOT NULL
|
||||||
|
);
|
||||||
|
-- create index
|
||||||
|
CREATE INDEX modelData_status_index ON modelData USING HASH (status);
|
||||||
|
CREATE INDEX modelData_userId_index ON modelData USING HASH (user_id);
|
||||||
|
CREATE INDEX modelData_modelId_index ON modelData USING HASH (model_id);
|
||||||
|
EOSQL
|
19
deploy/run.sh
Normal file
19
deploy/run.sh
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
docker-compose pull
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
echo "Docker Compose 重新拉取镜像完成!"
|
||||||
|
|
||||||
|
# 删除本地旧镜像
|
||||||
|
images=$(docker images --format "{{.ID}} {{.Repository}}" | grep fast-gpt)
|
||||||
|
|
||||||
|
# 将镜像 ID 和名称放入数组中
|
||||||
|
IFS=$'\n' read -rd '' -a image_array <<<"$images"
|
||||||
|
|
||||||
|
# 遍历数组并删除所有旧的镜像
|
||||||
|
for ((i=1; i<${#image_array[@]}; i++))
|
||||||
|
do
|
||||||
|
image=${image_array[$i]}
|
||||||
|
image_id=${image%% *}
|
||||||
|
docker rmi $image_id
|
||||||
|
done
|
@@ -86,7 +86,12 @@ export const authOpenApiKey = async (req: NextApiRequest) => {
|
|||||||
|
|
||||||
/* openai axios config */
|
/* openai axios config */
|
||||||
export const axiosConfig = {
|
export const axiosConfig = {
|
||||||
httpsAgent: global.httpsAgent
|
httpsAgent: global.httpsAgent,
|
||||||
|
headers: process.env.OPENAI_BASE_URL_AUTH
|
||||||
|
? {
|
||||||
|
auth: process.env.OPENAI_BASE_URL_AUTH
|
||||||
|
}
|
||||||
|
: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* delete invalid symbol */
|
/* delete invalid symbol */
|
||||||
|
Reference in New Issue
Block a user