FastGPT Docker 一键部署指南:配置文件、Nginx 反代与常见问题全整理
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 代理,则需要放行 80 和 443 端口。
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 部署在公网环境,建议至少做好以下安全措施:
-
修改默认管理员密码
不要使用123456、admin123等弱密码。 -
不要暴露数据库端口
MongoDB 和 PostgreSQL 不需要映射到公网,保持 Docker 内部网络访问即可。 -
启用 HTTPS
使用 Nginx + Let's Encrypt 配置 HTTPS,避免登录信息明文传输。 -
限制后台访问来源
如果是企业内部使用,可以通过防火墙或 Nginx 限制访问 IP。 -
定期备份数据
知识库数据和应用配置非常重要,建议每天或每周定期备份。 -
固定镜像版本
生产环境尽量不要使用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 的核心步骤并不复杂,主要包括:
- 安装 Docker 和 Docker Compose;
- 创建部署目录;
- 编写
docker-compose.yml; - 配置
config.json; - 启动 MongoDB、PostgreSQL 和 FastGPT;
- 配置模型 API;
- 使用 Nginx 和 HTTPS 对外提供服务。
对于个人用户来说,FastGPT 可以快速搭建自己的 AI 知识库系统;对于企业用户来说,它也可以作为内部知识问答、智能客服、流程自动化助手的基础平台。
如果是生产环境部署,建议重点关注三件事:数据备份、访问安全、版本稳定性。只要这三点做好,FastGPT 就可以相对稳定地运行在你的服务器上,为团队提供长期可用的 AI 应用能力。