上一篇 下一篇 分享链接 返回 返回顶部

FastGPT Docker 一键部署指南:配置文件、Nginx 反代与常见问题全整理

发布人:慈云数据-客服中心 发布时间:12小时前 阅读量:5

FastGPT Docker部署教程|附配置文件

FastGPT 是一款基于大语言模型的知识库问答与 AI 应用编排平台,支持知识库导入、向量检索、工作流编排、多模型接入、API 调用等能力。对于个人开发者、企业内部知识库、智能客服、RAG 应用原型验证等场景来说,FastGPT 都是一个非常实用的开源项目。

本文将以 Docker Compose 的方式介绍 FastGPT 的部署流程,并提供一套可参考的配置文件,帮助你快速在 Linux 服务器上完成部署。

说明:FastGPT 版本更新较快,不同版本的配置项可能会有所差异。本文以常见 Docker Compose 部署思路为主,实际生产环境建议结合官方文档与具体版本进行调整。


一、部署前准备

在开始部署之前,需要准备一台 Linux 服务器。推荐配置如下:

项目 推荐配置
系统 Ubuntu 20.04 / Ubuntu 22.04 / Debian 11+ / CentOS 7+
CPU 2 核及以上
内存 4GB 起步,推荐 8GB 以上
磁盘 40GB 起步,知识库较多建议更大
Docker 20.x 及以上
Docker Compose v2 版本

如果只是个人测试,2 核 4G 也可以运行;如果用于团队知识库、多人访问或大量文档解析,建议至少 4 核 8G。


二、安装 Docker 和 Docker Compose

如果服务器已经安装 Docker,可以跳过本节。

1. 更新系统软件包

sudo apt update
sudo apt upgrade -y

2. 安装 Docker

使用官方脚本安装:

curl -fsSL https://get.docker.com | bash

安装完成后,启动 Docker:

sudo systemctl enable docker
sudo systemctl start docker

查看 Docker 版本:

docker version

3. 安装 Docker Compose

新版 Docker 一般已经内置 Compose 插件,可以使用以下命令检查:

docker compose version

如果能够正常输出版本号,说明已经安装成功。


三、FastGPT 部署目录规划

建议将 FastGPT 相关文件统一放在一个目录中,例如:

mkdir -p /opt/fastgpt
cd /opt/fastgpt

后续所有配置文件都放在该目录下,便于维护、升级和备份。

推荐目录结构如下:

/opt/fastgpt
├── docker-compose.yml
├── config.json
├── mongo
│   └── data
├── pg
│   └── data
└── nginx
    └── fastgpt.conf

其中:

  • docker-compose.yml:Docker Compose 主配置文件;
  • config.json:FastGPT 应用配置文件;
  • mongo/data:MongoDB 数据持久化目录;
  • pg/data:PostgreSQL 数据持久化目录;
  • nginx/fastgpt.conf:可选,反向代理配置。

四、编写 FastGPT 配置文件

/opt/fastgpt 目录下创建 config.json

vim config.json

示例配置如下:

{
  "systemEnv": {
    "vectorMaxProcess": 15,
    "qaMaxProcess": 15,
    "pgHNSWEfSearch": 100
  },
  "llmModels": [
    {
      "model": "gpt-4o-mini",
      "name": "GPT-4o Mini",
      "maxContext": 128000,
      "maxResponse": 16000,
      "quoteMaxToken": 120000,
      "maxTemperature": 1.2,
      "charsPointsPrice": 0,
      "censor": false,
      "vision": true,
      "datasetProcess": true,
      "usedInClassify": true,
      "usedInExtractFields": true,
      "usedInToolCall": true,
      "usedInQueryExtension": true,
      "toolChoice": true,
      "functionCall": true
    }
  ],
  "vectorModels": [
    {
      "model": "text-embedding-3-small",
      "name": "text-embedding-3-small",
      "charsPointsPrice": 0,
      "defaultToken": 700,
      "maxToken": 3000,
      "weight": 100
    }
  ],
  "reRankModels": [],
  "audioSpeechModels": [],
  "whisperModel": {
    "model": "whisper-1",
    "name": "Whisper"
  }
}

以上配置只是示例,主要定义了:

  • 可用的大语言模型;
  • 向量模型;
  • 语音识别模型;
  • 系统处理参数。

如果你使用的是 OpenAI 兼容接口,例如 One API、New API、LiteLLM、硅基流动、DeepSeek、通义千问、智谱等平台,需要根据实际模型名称进行修改。

例如 DeepSeek Chat 模型可以配置为:

{
  "model": "deepseek-chat",
  "name": "DeepSeek Chat",
  "maxContext": 64000,
  "maxResponse": 8000,
  "quoteMaxToken": 30000,
  "maxTemperature": 1.2,
  "charsPointsPrice": 0,
  "censor": false,
  "vision": false,
  "datasetProcess": true,
  "usedInClassify": true,
  "usedInExtractFields": true,
  "usedInToolCall": true,
  "usedInQueryExtension": true,
  "toolChoice": true,
  "functionCall": true
}

五、编写 Docker Compose 配置文件

/opt/fastgpt 目录下创建 docker-compose.yml

vim docker-compose.yml

下面是一份较完整的示例配置:

version: "3.9"

services:
  mongo:
    image: mongo:5.0
    container_name: fastgpt-mongo
    restart: always
    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
    networks:
      - fastgpt

  mongo-init:
    image: mongo:5.0
    container_name: fastgpt-mongo-init
    depends_on:
      - mongo
    restart: "no"
    entrypoint: >
      bash -c "
      sleep 8;
      mongosh --host mongo:27017 -u myusername -p mypassword --authenticationDatabase admin
      --eval '
      rs.initiate({
        _id: \"rs0\",
        members: [
          { _id: 0, host: \"mongo:27017\" }
        ]
      })
      ';
      "
    networks:
      - fastgpt

  postgres:
    image: pgvector/pgvector:0.7.0-pg15
    container_name: fastgpt-postgres
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: pgpassword
      POSTGRES_DB: fastgpt
    volumes:
      - ./pg/data:/var/lib/postgresql/data
    networks:
      - fastgpt

  fastgpt:
    image: ghcr.io/labring/fastgpt:latest
    container_name: fastgpt
    restart: always
    depends_on:
      - mongo
      - postgres
    ports:
      - "3000:3000"
    environment:
      DEFAULT_ROOT_PSW: "123456"
      OPENAI_BASE_URL: "https://api.openai.com/v1"
      CHAT_API_KEY: "sk-xxxxxxxxxxxxxxxxxxxxxxxx"
      DB_MAX_LINK: 30
      TOKEN_KEY: "any-random-string"
      ROOT_KEY: "root-random-string"
      FILE_TOKEN_KEY: "file-random-string"
      MONGODB_URI: "mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin&replicaSet=rs0"
      PG_URL: "postgresql://postgres:pgpassword@postgres:5432/fastgpt"
    volumes:
      - ./config.json:/app/data/config.json
    networks:
      - fastgpt

networks:
  fastgpt:
    driver: bridge

六、生成 MongoDB KeyFile

由于示例中 MongoDB 使用了副本集模式,需要创建 mongodb.key 文件。

/opt/fastgpt 目录下执行:

openssl rand -base64 756 > mongodb.key
chmod 400 mongodb.key

如果不设置正确权限,MongoDB 容器可能会启动失败。


七、配置项说明

下面对几个关键配置项进行说明。

1. FastGPT 镜像

image: ghcr.io/labring/fastgpt:latest

latest 表示使用最新版本。生产环境不建议长期使用 latest,因为升级不可控,建议指定明确版本号,例如:

image: ghcr.io/labring/fastgpt:v4.x.x

具体版本可以到 FastGPT 官方仓库或镜像仓库查看。

2. 默认管理员密码

DEFAULT_ROOT_PSW: "123456"

首次启动后,系统会创建默认管理员账号。请务必修改默认密码,不要在公网环境使用弱密码。

建议改成复杂密码,例如:

DEFAULT_ROOT_PSW: "FastGPT@2025#StrongPassword"

3. OpenAI 接口地址

OPENAI_BASE_URL: "https://api.openai.com/v1"

如果你使用的是 OpenAI 官方接口,保持该地址即可。

如果你使用 One API 或 New API 中转服务,则填写对应地址,例如:

OPENAI_BASE_URL: "https://oneapi.example.com/v1"

如果使用本地模型服务,比如 Ollama、vLLM、Xinference,也可以填写兼容 OpenAI API 的地址,例如:

OPENAI_BASE_URL: "http://host.docker.internal:8000/v1"

Linux Docker 环境中,如果容器访问宿主机服务,可以考虑使用宿主机内网 IP,或额外配置 extra_hosts

4. 模型 API Key

CHAT_API_KEY: "sk-xxxxxxxxxxxxxxxxxxxxxxxx"

这里填写模型供应商的 API Key。

如果使用 One API,一般填写 One API 中生成的令牌。

5. MongoDB 连接地址

MONGODB_URI: "mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin&replicaSet=rs0"

这里需要注意:

  • 用户名和密码要与 MongoDB 环境变量一致;
  • 主机名 mongo 对应 Docker Compose 中的服务名;
  • replicaSet=rs0 要与 MongoDB 启动参数一致;
  • authSource=admin 表示认证数据库为 admin。

6. PostgreSQL 连接地址

PG_URL: "postgresql://postgres:pgpassword@postgres:5432/fastgpt"

PostgreSQL 主要用于向量数据存储。这里使用的是带 pgvector 扩展的 PostgreSQL 镜像。


八、启动 FastGPT

/opt/fastgpt 目录下执行:

docker compose up -d

查看容器状态:

docker compose ps

正常情况下可以看到类似容器:

fastgpt
fastgpt-mongo
fastgpt-postgres

查看日志:

docker compose logs -f fastgpt

如果日志中没有明显报错,等待几十秒后即可访问:

http://服务器IP:3000

首次访问后,使用默认管理员账号登录,具体账号以当前版本说明为准,常见为:

用户名:admin
密码:docker-compose.yml 中 DEFAULT_ROOT_PSW 设置的值

九、配置 Nginx 反向代理

如果需要绑定域名并使用 HTTPS,建议通过 Nginx 做反向代理。

例如你的域名是:

fastgpt.example.com

可以创建 Nginx 配置文件:

vim /etc/nginx/conf.d/fastgpt.conf

写入以下内容:

server {
    listen 80;
    server_name fastgpt.example.com;

    client_max_body_size 200m;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

检查 Nginx 配置:

nginx -t

重载 Nginx:

systemctl reload nginx

此时可以通过域名访问:

http://fastgpt.example.com

十、配置 HTTPS 证书

推荐使用 Certbot 免费申请 Let's Encrypt 证书。

1. 安装 Certbot

Ubuntu/Debian:

sudo apt install certbot python3-certbot-nginx -y

2. 申请证书

certbot --nginx -d fastgpt.example.com

根据提示选择是否自动跳转 HTTPS。

完成后访问:

https://fastgpt.example.com

如果证书申请成功,Certbot 通常会自动配置续期任务。

可以测试续期:

certbot renew --dry-run

十一、常见问题排查

1. FastGPT 页面打不开

先检查容器是否启动:

docker compose ps

查看日志:

docker compose logs -f fastgpt

同时确认服务器防火墙或云安全组是否放行了 3000 端口。如果使用 Nginx 代理,则需要放行 80443 端口。

2. MongoDB 启动失败

如果看到 keyFile 权限相关错误,执行:

chmod 400 mongodb.key

然后重启:

docker compose restart mongo

如果副本集初始化失败,可以进入 MongoDB 容器检查:

docker exec -it fastgpt-mongo mongosh -u myusername -p mypassword --authenticationDatabase admin

查看副本集状态:

rs.status()

3. 模型调用失败

如果页面中提示模型调用失败,需要检查:

  • OPENAI_BASE_URL 是否正确;
  • CHAT_API_KEY 是否有效;
  • config.json 中模型名称是否与供应商一致;
  • 当前模型是否支持 Chat Completions;
  • 中转服务是否正常工作;
  • 服务器是否能访问模型服务地址。

可以在服务器上使用 curl 测试:

curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer sk-xxxxxxxxxxxxxxxx"

如果使用 One API,也可以测试:

curl https://oneapi.example.com/v1/models \
  -H "Authorization: Bearer your-token"

4. 知识库导入失败

知识库导入失败通常与以下因素有关:

  • 向量模型配置错误;
  • embedding 模型名称不正确;
  • API Key 无权限调用 embedding;
  • 文档过大;
  • 服务器内存不足;
  • PostgreSQL 或 MongoDB 状态异常。

可以重点查看 FastGPT 日志:

docker compose logs -f fastgpt

如果是 embedding 模型名称错误,需要修改 config.json 中的 vectorModels 配置。


十二、升级 FastGPT

升级前一定要备份数据。

1. 备份目录

由于本文使用了本地目录挂载,核心数据主要在:

/opt/fastgpt/mongo/data
/opt/fastgpt/pg/data
/opt/fastgpt/config.json
/opt/fastgpt/docker-compose.yml

可以直接打包备份:

cd /opt
tar -czvf fastgpt-backup-$(date +%F).tar.gz fastgpt

2. 拉取新镜像

cd /opt/fastgpt
docker compose pull

3. 重启服务

docker compose up -d

查看日志确认是否正常:

docker compose logs -f fastgpt

生产环境不建议直接使用 latest,更推荐先在测试环境验证新版本,再升级正式环境。


十三、安全建议

如果 FastGPT 部署在公网环境,建议至少做好以下安全措施:

  1. 修改默认管理员密码
    不要使用 123456admin123 等弱密码。

  2. 不要暴露数据库端口
    MongoDB 和 PostgreSQL 不需要映射到公网,保持 Docker 内部网络访问即可。

  3. 启用 HTTPS
    使用 Nginx + Let's Encrypt 配置 HTTPS,避免登录信息明文传输。

  4. 限制后台访问来源
    如果是企业内部使用,可以通过防火墙或 Nginx 限制访问 IP。

  5. 定期备份数据
    知识库数据和应用配置非常重要,建议每天或每周定期备份。

  6. 固定镜像版本
    生产环境尽量不要使用 latest,避免自动升级导致兼容问题。


十四、完整配置文件汇总

下面给出一份简化后的完整配置,方便直接参考。

docker-compose.yml

version: "3.9"

services:
  mongo:
    image: mongo:5.0
    container_name: fastgpt-mongo
    restart: always
    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
    networks:
      - fastgpt

  mongo-init:
    image: mongo:5.0
    container_name: fastgpt-mongo-init
    depends_on:
      - mongo
    restart: "no"
    entrypoint: >
      bash -c "
      sleep 8;
      mongosh --host mongo:27017 -u myusername -p mypassword --authenticationDatabase admin
      --eval '
      rs.initiate({
        _id: \"rs0\",
        members: [
          { _id: 0, host: \"mongo:27017\" }
        ]
      })
      ';
      "
    networks:
      - fastgpt

  postgres:
    image: pgvector/pgvector:0.7.0-pg15
    container_name: fastgpt-postgres
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: pgpassword
      POSTGRES_DB: fastgpt
    volumes:
      - ./pg/data:/var/lib/postgresql/data
    networks:
      - fastgpt

  fastgpt:
    image: ghcr.io/labring/fastgpt:latest
    container_name: fastgpt
    restart: always
    depends_on:
      - mongo
      - postgres
    ports:
      - "3000:3000"
    environment:
      DEFAULT_ROOT_PSW: "FastGPT@2025"
      OPENAI_BASE_URL: "https://api.openai.com/v1"
      CHAT_API_KEY: "sk-xxxxxxxxxxxxxxxxxxxxxxxx"
      DB_MAX_LINK: 30
      TOKEN_KEY: "replace-with-random-token-key"
      ROOT_KEY: "replace-with-random-root-key"
      FILE_TOKEN_KEY: "replace-with-random-file-token-key"
      MONGODB_URI: "mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin&replicaSet=rs0"
      PG_URL: "postgresql://postgres:pgpassword@postgres:5432/fastgpt"
    volumes:
      - ./config.json:/app/data/config.json
    networks:
      - fastgpt

networks:
  fastgpt:
    driver: bridge

config.json

{
  "systemEnv": {
    "vectorMaxProcess": 15,
    "qaMaxProcess": 15,
    "pgHNSWEfSearch": 100
  },
  "llmModels": [
    {
      "model": "gpt-4o-mini",
      "name": "GPT-4o Mini",
      "maxContext": 128000,
      "maxResponse": 16000,
      "quoteMaxToken": 120000,
      "maxTemperature": 1.2,
      "charsPointsPrice": 0,
      "censor": false,
      "vision": true,
      "datasetProcess": true,
      "usedInClassify": true,
      "usedInExtractFields": true,
      "usedInToolCall": true,
      "usedInQueryExtension": true,
      "toolChoice": true,
      "functionCall": true
    }
  ],
  "vectorModels": [
    {
      "model": "text-embedding-3-small",
      "name": "text-embedding-3-small",
      "charsPointsPrice": 0,
      "defaultToken": 700,
      "maxToken": 3000,
      "weight": 100
    }
  ],
  "reRankModels": [],
  "audioSpeechModels": [],
  "whisperModel": {
    "model": "whisper-1",
    "name": "Whisper"
  }
}

十五、总结

通过 Docker Compose 部署 FastGPT 的核心步骤并不复杂,主要包括:

  1. 安装 Docker 和 Docker Compose;
  2. 创建部署目录;
  3. 编写 docker-compose.yml
  4. 配置 config.json
  5. 启动 MongoDB、PostgreSQL 和 FastGPT;
  6. 配置模型 API;
  7. 使用 Nginx 和 HTTPS 对外提供服务。

对于个人用户来说,FastGPT 可以快速搭建自己的 AI 知识库系统;对于企业用户来说,它也可以作为内部知识问答、智能客服、流程自动化助手的基础平台。

如果是生产环境部署,建议重点关注三件事:数据备份、访问安全、版本稳定性。只要这三点做好,FastGPT 就可以相对稳定地运行在你的服务器上,为团队提供长期可用的 AI 应用能力。

目录结构
全文