# 开源项目 FAST-GPT


# Docker Compose 快速部署

# 注意:前置依赖

Git (opens new window) Docker(构建镜像) (opens new window)Node.js v18.x (不推荐最新的,可能有兼容问题) (opens new window)小心有坑如果你的电脑系统是家庭版 (opens new window)Node.js v18.x (不推荐最新的,可能有兼容问题) (opens new window) pnpm (opens new window) 版本 8.x.x (安装完node也有npm,也可以通过npm安装 pnpm ,npm install pnpm -g) (opens new window)

# 推荐配置

# 部署架构图

# 1. 准备好代理环境(国外服务器可忽略)

确保可以访问 OpenAI,具体方案可以参考:代理方案。或直接在 Sealos 上 部署 OneAPI,既解决代理问题也能实现多 Key 轮询、接入其他大模型。

# 2. 多模型支持

FastGPT 使用了 one-api 项目来管理模型池,其可以兼容 OpenAI 、Azure 、国内主流模型和本地模型等。

可选择 Sealos 快速部署 OneAPI,更多部署方法可参考该项目的 README (opens new window),也可以直接通过以下按钮一键部署:

# 一、安装 Docker 和 docker-compose

Linux

# 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable --now docker
# 安装 docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 验证安装
docker -v
docker-compose -v
# 如失效,自行百度~

MacOS 推荐直接使用 Orbstack (opens new window)。可直接通过 Homebrew 来安装:

brew install orbstack

或者直接下载安装包 (opens new window)进行安装。

Windows 我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。

可以选择直接使用 WSL 2 后端在 Windows 中安装 Docker Desktop (opens new window)

也可以直接在 WSL 2 中安装命令行版本的 Docker (opens new window)

# 二、创建目录并下载 docker-compose.yml

依次执行下面命令,创建 FastGPT 文件并拉取docker-compose.ymlconfig.json,执行完后目录下会有 2 个文件。 (下载不来建议去clone github代码,从里面复制出来)

非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载下面2个链接的文件: docker-compose.yml (opens new window),config.json (opens new window)

注意: docker-compose.yml 配置文件中 Mongo 为 5.x,部分服务器不支持,需手动更改其镜像版本为 4.4.24

mkdir fastgpt
cd fastgpt
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

# 三、修改 docker-compose.yml 的环境变量

修改docker-compose.yml中的OPENAI_BASE_URL(API 接口的地址,需要加/v1)和CHAT_API_KEY(API 接口的凭证)。

使用 OneAPI 的话,OPENAI_BASE_URL=OneAPI访问地址/v1;CHAT_API_KEY=令牌

# 四、启动容器

在 docker-compose.yml 同级目录下执行 注意:docker会根据yml后缀的文件配置创建docker运行文件,所以需要同级目录

# 进入项目目录
cd 项目目录
# 启动容器
#docker compose [OPTIONS] COMMAND
#docker 常用命令格式
docker-compose pull
docker-compose up -d

命令解释: docker-compose pull 拉取服务依赖的镜像。 docker compose pull [OPTIONS] [SERVICE...]

docker-compose up -d 用于启动使用 Docker Compose 编排的多个容器。它会根据指定的配置文件(默认为 docker-compose.yml)创建并运行多个容器,使它们协同工作。 docker_compose up [OPTIONS] [SERVICE...] 具体请看: docker-compose 常用命令(附 docker-compose 的安装教程) (opens new window)

# 五、初始化 Mongo 副本集(4.6.8以前可忽略)

FastGPT 4.6.8 后使用了 MongoDB 的事务,需要运行在副本集上。副本集没法自动化初始化,需手动操作。

# 查看 mongo 容器是否正常运行
docker ps 
# 进入容器
docker exec -it mongo bash

# 连接数据库(这里要填Mongo的用户名和密码)
mongo -u myusername -p mypassword --authenticationDatabase admin

# 初始化副本集。如果需要外网访问,mongo:27017 可以改成 ip:27017。但是需要同时修改 FastGPT 连接的参数(MONGODB_URI=mongodb://myname:mypassword@mongo:27017/fastgpt?authSource=admin => MONGODB_URI=mongodb://myname:mypassword@ip:27017/fastgpt?authSource=admin)
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "mongo:27017" }
  ]
})
# 检查状态。如果提示 rs0 状态,则代表运行成功
rs.status()

关于 host: "mongo:27017" 说明 (这里很重要ip替换成公网ip,可以通过ipconfig来看)

  1. mongo:27017 代表指向同一个 docker 网络的 mongo 容器的 27017 服务。因此,如果使用该参数,外网是无法访问到数据库的。(登录失败的原因之一)
  2. ip:27017 (ip替换成公网IP):代表通过你的公网IP进行访问。如果用该方法,同时需要修改 docker-compose 中 mongo 的连接参数,因为默认是用 mongo:27017 进行连接。

# 五、访问 FastGPT

目前可以通过 ip:3000 直接访问(注意防火墙)。登录用户名为 root,密码为docker-compose.yml环境变量里设置的 DEFAULT_ROOT_PSW

如果需要域名访问,请自行安装并配置 Nginx。

# FAQ

# Mongo 启动失败

docker-compose 示例优化 Mongo 副本集参数,不需要手动创建再挂载。如果无法启动,可以尝试更换下面的脚本:

  1. 终端中执行:
openssl rand -base64 756 > ./mongodb.key
chmod 600 ./mongodb.key
chown 999:root ./mongodb.key
  1. 修改 docker-compose.yml:
mongo:
  #  image: mongo:5.0.18
  # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
  container_name: mongo
  ports:
    - 27017:27017
  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
    - ./mongodb.key:/data/mongodb.key
  1. 重启服务
docker-compose down
docker-compose up -d
  1. 进入容器执行副本集合初始化(看上方)

官方原始文档地址 (opens new window)