diff --git a/README.md b/README.md index 749afcb19..244e1bfd0 100644 --- a/README.md +++ b/README.md @@ -2,303 +2,42 @@ Fast GPT 允许你使用自己的 openai API KEY 来快速的调用 openai 接口,目前集成了 gpt35 和 embedding. 可构建自己的知识库。 -## 知识库原理 +## 🛸 在线体验 + +🎉 [fastgpt.run](https://fastgpt.run/) (国内版) +🎉 [ai.fastgpt.run](https://ai.fastgpt.run/) (海外版) + +![Demo](docs/imgs/demo.png?raw=true 'demo') + +#### 知识库原理图 ![KBProcess](docs/imgs/KBProcess.jpg?raw=true 'KBProcess') -## 开发 +## 👨‍💻 开发 -**第一次开发,请先看下方部署,需要部署数据库.开发的环境变量和部署的环境变量几乎相同,仅 IP 地址不一样.所以部署好后,直接把部署文件的环境变量复制过来,改下 Ip 就 OK 了。** +项目技术栈: NextJs + TS + ChakraUI + Mongo + Postgres(Vector 插件) +这是一个平台项目,非单机项目,除了模型调用外还涉及非常多用户的内容。 +[本地开发 Quick Start](docs/dev/README.md) -**配置环境变量** -复制.env.template 文件,生成一个.env.local 环境变量文件夹,修改.env.local 内容,参考下方: +## 🚀 私有化部署 -```bash -# proxy(可选) -AXIOS_PROXY_HOST=127.0.0.1 -AXIOS_PROXY_PORT=7890 -# openai 中转连接(可选) -OPENAI_BASE_URL=https://api.openai.com/v1 -OPENAI_BASE_URL_AUTH=可选的安全凭证 -queueTask=1 -parentUrl=https://hostname/api/openapi/startEvents -# 发送邮箱验证码配置。用的是QQ邮箱。参考 nodeMail 获取MAILE_CODE,自行百度。 -MY_MAIL=xxx@qq.com -MAILE_CODE=xxx -aliAccessKeyId=xxx -aliAccessKeySecret=xxx -aliSignName=xxx -aliTemplateCode=SMS_xxx -TOKEN_KEY=xxx -OPENAIKEY=sk-xxx -# 和mongo镜像的username,password对应 -MONGODB_URI=mongodb://username:password@服务器IP:27017/test?authSource=admin -MONGODB_NAME=xxx -PG_HOST=服务器IP -PG_PORT=8100 -PG_USER=fastgpt # POSTGRES_USER -PG_PASSWORD=1234 # POSTGRES_PASSWORD -PG_DB_NAME=fastgpt # POSTGRES_DB -``` +[docker-compose 部署教程](docs/deploy/docker.md) -**运行** +## :point_right: RoadMap -``` -pnpm dev -``` +- [FastGpt RoadMap](https://kjqvjse66l.feishu.cn/docx/RVUxdqE2WolDYyxEKATcM0XXnte) -## 部署 +## 🏘️ 交流群 -### 代理环境(国外服务器可忽略) +wx: fastgpt123 +![Demo](docs/imgs/wx300.jpg?raw=true 'wx') -选择一个即可。 +## 👀 其他 -1. [clash 方案](./docs/proxy/clash.md) - 仅需一台服务器(需要有 clash) -2. [nginx 方案](./docs/proxy/nginx.md) - 需要一台国外服务器 -3. [cloudflare 方案](./docs/proxy/cloudflare.md) - 需要有域名(每日免费 10w 次代理请求) +- [FastGpt 常见问题](https://kjqvjse66l.feishu.cn/docx/HtrgdT0pkonP4kxGx8qcu6XDnGh) +- [FastGpt V3.4 更新集合](https://www.bilibili.com/video/BV1Lo4y147Qh/?vd_source=92041a1a395f852f9d89158eaa3f61b4) +- [FastGpt 知识库演示](https://www.bilibili.com/video/BV1Wo4y1p7i1/) -### docker 部署 +## 🌟 Star History -#### 1. 准备 - -> 1. 服务器开通 80 端口。用代理的话,对应的代理端口也需要打开。 -> 2. QQ 邮箱 Code:进入 QQ 邮箱 -> 账号 -> 申请 SMTP 账号 -> 3. 有域名的准备好 SSL 证书 - -#### 2. 安装 docker 和 docker-compose - -这个不同系统略有区别,百度安装下。验证安装成功后进行下一步。下面给出一个例子: - -```bash -# 安装docker -curl -L https://get.daocloud.io/docker | sh -sudo systemctl start docker -# 安装 docker-compose -curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose -# 验证安装 -docker -v -docker-compose -v -# 如果docker-compose运行不了,可以把 deploy/docker-compose 文件复制到服务器,然后在 docker-compose 文件夹里执行 sh init.sh。会把docker-compose文件复制到对应目录。 -``` - -#### 2. 创建 3 个初始化文件 - -手动创建或者直接把 deploy 里内容复制过去,然后把 deploy 文件夹改名为: fastgpt - -**/root/fast-gpt/pg/init.sql PG 数据库初始化** - -```sql -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 -``` - -**/root/fast-gpt/nginx/nginx.conf Nginx 配置** - -```conf -user nginx; -worker_processes auto; -worker_rlimit_nofile 51200; - -events { - worker_connections 1024; -} - -http { - resolver 8.8.8.8; - proxy_ssl_server_name on; - - access_log off; - server_names_hash_bucket_size 512; - client_header_buffer_size 64k; - large_client_header_buffers 4 64k; - client_max_body_size 50M; - - proxy_connect_timeout 240s; - proxy_read_timeout 240s; - proxy_buffer_size 128k; - proxy_buffers 4 256k; - - 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; - } -} -``` - -**/root/fast-gpt/docker-compose.yml 核心部署文件** - -```yml -version: '3.3' -services: - fast-gpt: - image: c121914yu/fast-gpt:latest - network_mode: host - restart: always - container_name: fast-gpt - environment: - # proxy(可选) - - AXIOS_PROXY_HOST=127.0.0.1 - - AXIOS_PROXY_PORT=7890 - # 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 - - MAILE_CODE=xxxx - # 阿里短信服务(邮箱和短信至少二选一) - - aliAccessKeyId=xxxx - - aliAccessKeySecret=xxxx - - aliSignName=xxxxx - - aliTemplateCode=SMS_xxxx - # token加密凭证(随便填,作为登录凭证) - - TOKEN_KEY=xxxx - - queueTask=1 - - parentUrl=https://hostname/api/openapi/startEvents - # 和下方mongo镜像的username,password对应 - - 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镜像对应. - - PG_USER=fastgpt # POSTGRES_USER - - PG_PASSWORD=1234 # POSTGRES_PASSWORD - - PG_DB_NAME=fastgpt # POSTGRES_DB - - OPENAIKEY=sk-xxxxx - nginx: - image: nginx:alpine3.17 - container_name: nginx - restart: always - network_mode: host - volumes: - # 刚创建的文件 - - /root/fastgpt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - - /root/fastgpt/nginx/logs:/var/log/nginx - # https证书,没有的话不填,对应的nginx.conf也要修改 - - /root/fastgpt/nginx/ssl/docgpt.key:/ssl/docgpt.key - - /root/fastgpt/nginx/ssl/docgpt.pem:/ssl/docgpt.pem - pg: - image: ankane/pgvector - container_name: pg - restart: always - ports: - - 8100:5432 - environment: - # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 - - POSTGRES_USER=fastgpt - - POSTGRES_PASSWORD=1234 - - POSTGRES_DB=fastgpt - volumes: - # 刚创建的文件 - - /root/fastgpt/pg/init.sql:/docker-entrypoint-initdb.d/init.sh - - /root/fastgpt/pg/data:/var/lib/postgresql/data - - /etc/localtime:/etc/localtime:ro - mongodb: - image: mongo:6.0.4 - container_name: mongo - restart: always - ports: - - 27017:27017 - environment: - # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 - - MONGO_INITDB_ROOT_USERNAME=username - - MONGO_INITDB_ROOT_PASSWORD=password - volumes: - - /root/fastgpt/mongo/data:/data/db - - /root/fastgpt/mongo/logs:/var/log/mongodb - - /etc/localtime:/etc/localtime:ro -``` - -#### 3. 运行 docker-compose - -下面是一个辅助脚本,也可以直接 docker-compose up -d - -**run.sh 运行文件** - -```bash -#!/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 -``` - -## 其他优化点 - -### Git Action 自动打包镜像 - -.github 里拥有一个 git 提交到 main 分支时自动打包 amd64 和 arm64 镜像的 actions。你仅需要提前在 git 配置好 session。 - -1. 创建账号 session: 头像 -> settings -> 最底部 Developer settings -> Personal access tokens -> tokens(classic) -> 创建新 session,把一些看起来需要的权限勾上。 -2. 添加 session 到仓库: 仓库 -> settings -> Secrets and variables -> Actions -> 创建 secret -3. 填写 secret: Name-GH_PAT, Secret-第一步的 tokens - -## 其他问题 - -### Mac 可能的问题 - -> 因为教程有部分镜像不兼容 arm64,所以写个文档指导新手如何快速在 mac 上面搭建 fast-gpt[如何在 mac 上面部署 fastgpt](./docs/mac.md) +[![Star History Chart](https://api.star-history.com/svg?repos=c121914yu/FastGPT&type=Date)](https://star-history.com/#c121914yu/FastGPT&Date) diff --git a/docs/deploy/docker.md b/docs/deploy/docker.md new file mode 100644 index 000000000..ffb75971b --- /dev/null +++ b/docs/deploy/docker.md @@ -0,0 +1,255 @@ +# Docker 部署 FastGpt + +## 代理环境(国外服务器可忽略) + +选择一个即可。 + +1. [clash 方案](./proxy/clash.md) - 仅需一台服务器(需要有 clash) +2. [nginx 方案](./proxy/nginx.md) - 需要一台国外服务器 +3. [cloudflare 方案](./proxy/cloudflare.md) - 需要有域名(每日免费 10w 次代理请求) + +### 1. 准备一些内容 + +> 1. 服务器开通 80 端口。用代理的话,对应的代理端口也需要打开。 +> 2. QQ 邮箱 Code:进入 QQ 邮箱 -> 账号 -> 申请 SMTP 账号 +> 3. 有域名的准备好 SSL 证书 + +### 2. 安装 docker 和 docker-compose + +这个不同系统略有区别,百度安装下。验证安装成功后进行下一步。下面给出一个例子: + +```bash +# 安装docker +curl -L https://get.daocloud.io/docker | sh +sudo systemctl start docker +# 安装 docker-compose +curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose +sudo chmod +x /usr/local/bin/docker-compose +# 验证安装 +docker -v +docker-compose -v +# 如果docker-compose运行不了,可以把 deploy/fastgpt/docker-compose 文件复制到服务器,然后在 docker-compose 文件夹里执行 sh init.sh。会把docker-compose文件复制到对应目录。 +``` + +### 2. 创建 3 个初始化文件 + +手动创建或者直接把 fastgpt 文件夹复制过去。 + +**/root/fastgpt/pg/init.sql PG 数据库初始化** + +```sql +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 +``` + +**/root/fastgpt/nginx/nginx.conf Nginx 配置** + +```conf +user nginx; +worker_processes auto; +worker_rlimit_nofile 51200; + +events { + worker_connections 1024; +} + +http { + resolver 8.8.8.8; + proxy_ssl_server_name on; + + access_log off; + server_names_hash_bucket_size 512; + client_header_buffer_size 64k; + large_client_header_buffers 4 64k; + client_max_body_size 50M; + + proxy_connect_timeout 240s; + proxy_read_timeout 240s; + proxy_buffer_size 128k; + proxy_buffers 4 256k; + + 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; + } +} +``` + +**/root/fastgpt/docker-compose.yml 核心部署文件** + +环境变量内容和开发时的环境变量基本相同,除了数据库的地址。 + +```yml +version: '3.3' +services: + fast-gpt: + image: c121914yu/fast-gpt:latest + network_mode: host + restart: always + container_name: fastgpt + environment: + # proxy(可选) + - AXIOS_PROXY_HOST=127.0.0.1 + - AXIOS_PROXY_PORT=7890 + # 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 + - MAILE_CODE=xxxx + # 阿里短信服务(邮箱和短信至少二选一) + - aliAccessKeyId=xxxx + - aliAccessKeySecret=xxxx + - aliSignName=xxxxx + - aliTemplateCode=SMS_xxxx + # token加密凭证(随便填,作为登录凭证) + - TOKEN_KEY=xxxx + - queueTask=1 + - parentUrl=https://hostname/api/openapi/startEvents + # 和下方mongo镜像的username,password对应 + - 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镜像对应. + - PG_USER=fastgpt # POSTGRES_USER + - PG_PASSWORD=1234 # POSTGRES_PASSWORD + - PG_DB_NAME=fastgpt # POSTGRES_DB + - OPENAIKEY=sk-xxxxx + nginx: + image: nginx:alpine3.17 + container_name: nginx + restart: always + network_mode: host + volumes: + # 刚创建的文件 + - /root/fastgpt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro + - /root/fastgpt/nginx/logs:/var/log/nginx + # https证书,没有的话不填,对应的nginx.conf也要修改 + - /root/fastgpt/nginx/ssl/docgpt.key:/ssl/docgpt.key + - /root/fastgpt/nginx/ssl/docgpt.pem:/ssl/docgpt.pem + pg: + image: ankane/pgvector + container_name: pg + restart: always + ports: + - 8100:5432 + environment: + # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 + - POSTGRES_USER=fastgpt + - POSTGRES_PASSWORD=1234 + - POSTGRES_DB=fastgpt + volumes: + # 刚创建的文件 + - /root/fastgpt/pg/init.sql:/docker-entrypoint-initdb.d/init.sh + - /root/fastgpt/pg/data:/var/lib/postgresql/data + - /etc/localtime:/etc/localtime:ro + mongodb: + image: mongo:6.0.4 + container_name: mongo + restart: always + ports: + - 27017:27017 + environment: + # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 + - MONGO_INITDB_ROOT_USERNAME=username + - MONGO_INITDB_ROOT_PASSWORD=password + volumes: + - /root/fastgpt/mongo/data:/data/db + - /root/fastgpt/mongo/logs:/var/log/mongodb + - /etc/localtime:/etc/localtime:ro +``` + +### 3. 运行 docker-compose + +下面是一个辅助脚本,也可以直接 docker-compose up -d + +**run.sh 运行文件** + +```bash +#!/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 +``` + +## 其他优化点 + +# Git Action 自动打包镜像 + +.github 里拥有一个 git 提交到 main 分支时自动打包 amd64 和 arm64 镜像的 actions。你仅需要提前在 git 配置好 session。 + +1. 创建账号 session: 头像 -> settings -> 最底部 Developer settings -> Personal access tokens -> tokens(classic) -> 创建新 session,把一些看起来需要的权限勾上。 +2. 添加 session 到仓库: 仓库 -> settings -> Secrets and variables -> Actions -> 创建 secret +3. 填写 secret: Name-GH_PAT, Secret-第一步的 tokens + +## 其他问题 + +### Mac 可能的问题 + +> 因为教程有部分镜像不兼容 arm64,所以写个文档指导新手如何快速在 mac 上面搭建 fast-gpt[在 mac 上面部署 fastgpt 可能存在的问题](./mac.md) diff --git a/deploy/clash/Country.mmdb b/docs/deploy/fastgpt/clash/Country.mmdb similarity index 100% rename from deploy/clash/Country.mmdb rename to docs/deploy/fastgpt/clash/Country.mmdb diff --git a/deploy/clash/clash-linux-amd64-v3 b/docs/deploy/fastgpt/clash/clash-linux-amd64-v3 similarity index 100% rename from deploy/clash/clash-linux-amd64-v3 rename to docs/deploy/fastgpt/clash/clash-linux-amd64-v3 diff --git a/deploy/clash/config.yaml b/docs/deploy/fastgpt/clash/config.yaml similarity index 100% rename from deploy/clash/config.yaml rename to docs/deploy/fastgpt/clash/config.yaml diff --git a/deploy/clash/proxy.sh b/docs/deploy/fastgpt/clash/proxy.sh similarity index 100% rename from deploy/clash/proxy.sh rename to docs/deploy/fastgpt/clash/proxy.sh diff --git a/deploy/clash/stop.sh b/docs/deploy/fastgpt/clash/stop.sh similarity index 100% rename from deploy/clash/stop.sh rename to docs/deploy/fastgpt/clash/stop.sh diff --git a/deploy/docker-compose.yml b/docs/deploy/fastgpt/docker-compose.yml similarity index 100% rename from deploy/docker-compose.yml rename to docs/deploy/fastgpt/docker-compose.yml diff --git a/deploy/docker-compose/docker-compose b/docs/deploy/fastgpt/docker-compose/docker-compose similarity index 100% rename from deploy/docker-compose/docker-compose rename to docs/deploy/fastgpt/docker-compose/docker-compose diff --git a/deploy/docker-compose/init.sh b/docs/deploy/fastgpt/docker-compose/init.sh similarity index 100% rename from deploy/docker-compose/init.sh rename to docs/deploy/fastgpt/docker-compose/init.sh diff --git a/deploy/nginx/nginx.conf b/docs/deploy/fastgpt/nginx/nginx.conf similarity index 100% rename from deploy/nginx/nginx.conf rename to docs/deploy/fastgpt/nginx/nginx.conf diff --git a/deploy/pg/init.sql b/docs/deploy/fastgpt/pg/init.sql similarity index 100% rename from deploy/pg/init.sql rename to docs/deploy/fastgpt/pg/init.sql diff --git a/deploy/run.sh b/docs/deploy/fastgpt/run.sh similarity index 100% rename from deploy/run.sh rename to docs/deploy/fastgpt/run.sh diff --git a/docs/mac.md b/docs/deploy/mac.md similarity index 74% rename from docs/mac.md rename to docs/deploy/mac.md index b0d162a1d..7262c5ad5 100644 --- a/docs/mac.md +++ b/docs/deploy/mac.md @@ -1,22 +1,22 @@ -## 怎么在mac上面部署fastgpt +## Mac 上部署可能遇到的问题 ### 前置条件 -1、可以 curl api.openai.com +1、可以 curl api.openai.com -2、有openai key +2、有 openai key -3、有邮箱MAILE_CODE +3、有邮箱 MAILE_CODE -4、有docker +4、有 docker ``` docker -v ``` -5、有pnpm ,可以使用`brew install pnpm`安装 +5、有 pnpm ,可以使用`brew install pnpm`安装 -6、需要创建一个放置pg和mongo数据的文件夹,这里创建在`~/fastgpt`目录中,里面有`pg` 和`mongo `两个文件夹 +6、需要创建一个放置 pg 和 mongo 数据的文件夹,这里创建在`~/fastgpt`目录中,里面有`pg` 和`mongo `两个文件夹 ``` ➜ fast-gpt pwd @@ -25,11 +25,9 @@ docker -v mongo pg ``` +### docker 部署方式 - -### docker部署方式 - -这种方式主要是为了方便调试,可以使用`pnpm dev ` 运行fast-gpt项目 +这种方式主要是为了方便调试,可以使用`pnpm dev ` 运行 fast-gpt 项目 **1、.env.local 文件** @@ -60,19 +58,19 @@ PG_PASSWORD=xxx PG_DB_NAME=xxx ``` -**2、部署mongo** +**2、部署 mongo** ``` docker run --name mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=username -e MONGO_INITDB_ROOT_PASSWORD=password -v ~/fast-gpt/mongo/data:/data/db -d mongo:4.0.1 ``` -**3、部署pgsql** +**3、部署 pgsql** ``` docker run -it --name pg -e "POSTGRES_PASSWORD=xxx" -e POSTGRES_USER=xxx -p 8100:5432 -v ~/fast-gpt/pg/data:/var/lib/postgresql/data -d octoberlan/pgvector:v0.4.1 ``` -进pgsql容器运行 +进 pgsql 容器运行 ``` psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL @@ -95,6 +93,4 @@ CREATE INDEX modelData_userId_index ON modelData (userId); EOSQL ``` - - -4、**最后在FASTGPT项目里面运行pnpm dev 运行项目,然后进入localhost:3000 看项目是否跑起来了** \ No newline at end of file +4、**最后在 FASTGPT 项目里面运行 pnpm dev 运行项目,然后进入 localhost:3000 看项目是否跑起来了** diff --git a/docs/proxy/clash.md b/docs/deploy/proxy/clash.md similarity index 100% rename from docs/proxy/clash.md rename to docs/deploy/proxy/clash.md diff --git a/docs/proxy/cloudflare.md b/docs/deploy/proxy/cloudflare.md similarity index 100% rename from docs/proxy/cloudflare.md rename to docs/deploy/proxy/cloudflare.md diff --git a/docs/proxy/nginx.md b/docs/deploy/proxy/nginx.md similarity index 100% rename from docs/proxy/nginx.md rename to docs/deploy/proxy/nginx.md diff --git a/docs/dev/README.md b/docs/dev/README.md new file mode 100644 index 000000000..0be2fbb54 --- /dev/null +++ b/docs/dev/README.md @@ -0,0 +1,47 @@ +# FastGpt 本地开发 + +第一次开发,请先[部署教程](docs/deploy/docker.md),需要部署数据库. + +## 环境变量配置 + +复制.env.template 文件,生成一个.env.local 环境变量文件夹,修改.env.local 里内容。 + +```bash +# proxy(可选) +AXIOS_PROXY_HOST=127.0.0.1 +AXIOS_PROXY_PORT=7890 +# 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 +MAILE_CODE=xxxx +# 阿里短信服务(邮箱和短信至少二选一) +aliAccessKeyId=xxxx +aliAccessKeySecret=xxxx +aliSignName=xxxxx +aliTemplateCode=SMS_xxxx +# token加密凭证(随便填,作为登录凭证) +TOKEN_KEY=xxxx +queueTask=1 +parentUrl=https://hostname/api/openapi/startEvents +# 和mongo镜像的username,password对应 +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镜像对应. +PG_USER=fastgpt # POSTGRES_USER +PG_PASSWORD=1234 # POSTGRES_PASSWORD +PG_DB_NAME=fastgpt # POSTGRES_DB +OPENAIKEY=sk-xxxxx +``` + +## 运行 + +``` +pnpm dev +``` diff --git a/docs/imgs/demo.png b/docs/imgs/demo.png new file mode 100644 index 000000000..733b3bbbb Binary files /dev/null and b/docs/imgs/demo.png differ diff --git a/docs/imgs/wx300.jpg b/docs/imgs/wx300.jpg new file mode 100644 index 000000000..b862d23ce Binary files /dev/null and b/docs/imgs/wx300.jpg differ