FastGPT 生产环境部署指南|附完整命令
FastGPT 是一套面向企业知识库问答、工作流编排和大模型应用落地的开源平台。很多人第一次上手时,通常是在本地通过 Docker 跑起来做体验;但真正进入生产环境后,部署方式、网络安全、数据持久化、日志、升级和备份,都会变成必须认真考虑的问题。
这篇文章会以 Linux 服务器 + Docker Compose 为主线,手把手讲清楚 FastGPT 的生产环境部署思路,并附上尽量完整、可直接参考的命令。文章目标不是“能跑就行”,而是帮助你部署出一个更稳、更可维护、更接近生产标准的 FastGPT 服务。
一、部署前先明确架构
FastGPT 生产环境通常至少包含以下几个部分:
- FastGPT Web/API 服务
- MongoDB:存储业务数据
- MySQL:存储部分结构化数据
- Redis:缓存与任务队列
- OneAPI / OpenAI 接口转发服务:用于统一管理模型调用
- 反向代理:Nginx 或 Caddy,用于域名、HTTPS、访问控制
如果你只是在测试阶段,可以先简化为单机 Docker Compose;如果是正式生产,建议至少做到:
- 数据库与应用分离;
- 所有数据卷持久化;
- 配置文件独立管理;
- 对外只暴露必要端口;
- 开启 HTTPS;
- 定期备份数据库与文件卷。
二、服务器准备
1. 推荐系统环境
建议使用:
- Ubuntu 22.04 LTS
- 2 核以上 CPU
- 4GB 内存起步,建议 8GB+
- SSD 存储
- 公网 IP 或可解析域名
如果并发较高、知识库文档较多、模型调用频繁,建议进一步提升配置。
2. 安装基础依赖
先更新系统并安装常用工具:
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl wget git vim ca-certificates gnupg lsb-release ufw
3. 安装 Docker 与 Docker Compose
如果服务器还没有 Docker,可以按下面方式安装:
curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable docker
sudo systemctl start docker
安装 Compose 插件:
sudo apt -y install docker-compose-plugin
验证版本:
docker --version
docker compose version
把当前用户加入 docker 组,避免每次都 sudo:
sudo usermod -aG docker $USER
newgrp docker
三、准备部署目录
建议统一放到一个独立目录中,便于后续升级和备份:
sudo mkdir -p /opt/fastgpt
sudo chown -R $USER:$USER /opt/fastgpt
cd /opt/fastgpt
推荐目录结构如下:
/opt/fastgpt
├── docker-compose.yml
├── .env
├── data/
│ ├── mongo/
│ ├── mysql/
│ └── logs/
└── nginx/
└── fastgpt.conf
四、准备环境变量
FastGPT 的生产部署通常依赖 .env 文件统一管理配置。下面给出一个常见示例,你可以根据自己的实际情况修改。
.env 示例
cat > /opt/fastgpt/.env << 'EOF'
# 站点信息
APP_URL=http://your-domain.com
SERVICE_PORT=3000
# MongoDB
MONGO_ROOT_USERNAME=fastgpt
MONGO_ROOT_PASSWORD=FastGPT@123456
MONGO_DATABASE=fastgpt
# MySQL
MYSQL_ROOT_PASSWORD=MySQL@123456
MYSQL_DATABASE=fastgpt
MYSQL_USER=fastgpt
MYSQL_PASSWORD=FastGPT@123456
# Redis
REDIS_PASSWORD=Redis@123456
# FastGPT 密钥
JWT_SECRET=change_me_to_a_long_random_string
EOF
建议你把以下内容替换成强密码:
MONGO_ROOT_PASSWORDMYSQL_ROOT_PASSWORDMYSQL_PASSWORDREDIS_PASSWORDJWT_SECRET
生成随机密钥可以用:
openssl rand -hex 32
五、Docker Compose 部署示例
下面给出一个较完整的 docker-compose.yml 示例。实际项目中 FastGPT 版本、镜像名和环境变量可能会随版本更新而调整,你应以官方文档为准;但部署思路基本一致。
docker-compose.yml
cat > /opt/fastgpt/docker-compose.yml << 'EOF'
version: "3.9"
services:
mongo:
image: mongo:6
container_name: fastgpt-mongo
restart: always
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
volumes:
- ./data/mongo:/data/db
networks:
- fastgpt
mysql:
image: mysql:8.0
container_name: fastgpt-mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
TZ: Asia/Shanghai
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./data/mysql:/var/lib/mysql
networks:
- fastgpt
redis:
image: redis:7
container_name: fastgpt-redis
restart: always
ports:
- "6379:6379"
command: ["redis-server", "--appendonly", "yes", "--requirepass", "${REDIS_PASSWORD}"]
volumes:
- ./data/redis:/data
networks:
- fastgpt
fastgpt:
image: ghcr.io/labring/fastgpt:latest
container_name: fastgpt-app
restart: always
depends_on:
- mongo
- mysql
- redis
ports:
- "3000:3000"
environment:
- TZ=Asia/Shanghai
- APP_URL=${APP_URL}
- MONGO_URI=mongodb://${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}@mongo:27017/${MONGO_DATABASE}?authSource=admin
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USERNAME=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
- JWT_SECRET=${JWT_SECRET}
volumes:
- ./data/logs:/app/logs
networks:
- fastgpt
networks:
fastgpt:
driver: bridge
EOF
六、启动服务
进入目录后执行:
cd /opt/fastgpt
docker compose up -d
查看容器状态:
docker ps
查看日志:
docker logs -f fastgpt-app
如果数据库初始化正常、镜像拉取成功,FastGPT 服务就会启动起来。首次启动可能需要几分钟,取决于镜像下载速度和数据库初始化速度。
七、配置 Nginx 反向代理
生产环境不建议直接暴露 3000 端口给外网,而是通过 Nginx 统一接入域名和 HTTPS。
1. 安装 Nginx
sudo apt -y install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
2. 配置站点
假设你的域名是 fastgpt.example.com,创建配置文件:
sudo mkdir -p /etc/nginx/sites-available
sudo tee /etc/nginx/sites-available/fastgpt.conf > /dev/null << 'EOF'
server {
listen 80;
server_name fastgpt.example.com;
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";
}
}
EOF
启用配置:
sudo ln -s /etc/nginx/sites-available/fastgpt.conf /etc/nginx/sites-enabled/fastgpt.conf
sudo nginx -t
sudo systemctl reload nginx
八、配置 HTTPS 证书
生产环境强烈建议启用 HTTPS。最简单的方式是使用 Let’s Encrypt。
1. 安装 Certbot
sudo apt -y install certbot python3-certbot-nginx
2. 申请证书
sudo certbot --nginx -d fastgpt.example.com
按提示完成邮箱、协议确认和自动跳转配置即可。
3. 自动续期验证
sudo certbot renew --dry-run
如果成功,说明证书自动续期机制正常。
九、防火墙建议
如果你使用 ufw,建议只放行必要端口:
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
sudo ufw status
如果 Nginx 已经负责对外服务,数据库端口不建议直接暴露给公网。生产环境更稳妥的做法是:
3306仅内网可访问;27017仅内网可访问;6379仅容器网络可访问;3000不直接暴露公网,只给 Nginx 代理。
十、初始化与后台配置
部署完成后,打开你的域名,就可以进入 FastGPT 的管理界面。首次登录后,建议尽快完成以下配置:
- 创建管理员账号;
- 配置模型供应商;
- 添加 API Key;
- 创建知识库;
- 检查向量模型和 embedding 配置;
- 测试文件上传、切片、召回效果。
如果你使用的是 OpenAI、Azure OpenAI、通义千问、智谱、硅基流动等模型供应商,通常需要在 FastGPT 控制台中配置对应的模型接口地址和密钥。建议先做一个最小可用配置,再逐步扩展到多模型路由和工作流编排。
十一、数据持久化与备份
生产环境最容易被忽视的部分,其实是备份。数据库和文件丢失,往往比服务停机更麻烦。
1. 备份 MongoDB
docker exec fastgpt-mongo mongodump \
-u fastgpt \
-p 'FastGPT@123456' \
--authenticationDatabase admin \
--db fastgpt \
--archive=/tmp/fastgpt-mongo.archive
docker cp fastgpt-mongo:/tmp/fastgpt-mongo.archive /opt/fastgpt/data/backup-mongo.archive
2. 备份 MySQL
docker exec fastgpt-mysql mysqldump \
-u root \
-p'MySQL@123456' \
fastgpt > /opt/fastgpt/data/backup-mysql.sql
3. 备份配置与日志
tar czf /opt/fastgpt/data/backup-config-$(date +%F).tar.gz \
/opt/fastgpt/.env \
/opt/fastgpt/docker-compose.yml \
/opt/fastgpt/data/logs
4. 建议做成定时任务
你可以通过 crontab 设置每日备份:
crontab -e
加入:
0 2 * * * /usr/bin/docker exec fastgpt-mysql mysqldump -u root -p'MySQL@123456' fastgpt > /opt/fastgpt/data/backup-mysql-$(date +\%F).sql
如果你想更稳妥,建议把备份文件同步到对象存储或异地服务器,避免单机故障导致备份与生产数据同时丢失。
十二、常见升级方式
FastGPT 升级通常就是拉取新镜像并重启容器,但生产环境不能盲目操作,至少要先做备份。
1. 先备份
cd /opt/fastgpt
cp .env .env.bak
cp docker-compose.yml docker-compose.yml.bak
2. 拉取新镜像
docker compose pull
3. 重启服务
docker compose up -d
4. 检查状态
docker ps
docker logs -f fastgpt-app
如果升级后出现异常,立即回滚到备份版本,并恢复数据库备份。
十三、排障思路
1. 页面打不开
先检查容器是否启动:
docker ps
再检查 Nginx 状态:
systemctl status nginx
再检查端口:
ss -lntp | grep -E '3000|80|443'
2. 数据库连不上
查看 Mongo、MySQL、Redis 容器日志:
docker logs fastgpt-mongo
docker logs fastgpt-mysql
docker logs fastgpt-redis
重点检查:
- 密码是否一致;
- 容器名称是否与配置匹配;
- 环境变量是否写错;
- 数据卷是否损坏。
3. 模型调用失败
一般需要检查:
- API Key 是否有效;
- Base URL 是否正确;
- 服务商是否限流;
- 出口网络是否能访问外部接口;
- FastGPT 内配置的模型名称是否与供应商一致。
4. 容器反复重启
先看日志:
docker logs --tail=200 fastgpt-app
常见原因包括:
- 环境变量缺失;
- 数据库启动慢,应用先连接导致失败;
- 配置格式错误;
- 资源不足;
- 镜像版本不兼容。
十四、生产环境建议
如果你准备把 FastGPT 用到正式业务里,建议再补充以下实践:
- 设置复杂密码,不要使用示例密码;
- 关闭不必要端口暴露;
- 所有访问走 HTTPS;
- 定期备份数据库;
- 升级前先备份,升级后先验收;
- 使用独立域名,便于权限和证书管理;
- 监控 CPU、内存、磁盘与容器状态;
- 为 Nginx 配置限流与访问日志;
- 把配置文件纳入版本管理,但不要提交密钥。
如果你有更高可用需求,还可以进一步做:
- 容器编排迁移到 Kubernetes;
- 数据库做主从复制;
- Nginx 前面再加一层负载均衡;
- 日志接入 ELK / Loki;
- 使用外部对象存储保存文件。
十五、完整部署命令汇总
下面把核心命令再汇总一次,方便你直接执行:
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl wget git vim ca-certificates gnupg lsb-release ufw
curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable docker
sudo systemctl start docker
sudo apt -y install docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker
sudo mkdir -p /opt/fastgpt
sudo chown -R $USER:$USER /opt/fastgpt
cd /opt/fastgpt
docker compose up -d
docker ps
docker logs -f fastgpt-app
sudo apt -y install nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo apt -y install certbot python3-certbot-nginx
sudo certbot --nginx -d fastgpt.example.com
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
结语
FastGPT 的生产环境部署并不复杂,但真正决定稳定性的,往往不是“能不能启动”,而是你有没有把 持久化、代理、HTTPS、安全、备份、升级 这些基础动作做到位。只要把本文的方案落地,基本就能搭建出一套可长期运行、可维护、可扩展的 FastGPT 服务。
如果你愿意,我还可以继续帮你补一版:
- 更适合公众号发布的排版版
- 更贴近 FastGPT 官方镜像的精确部署版
- Kubernetes 生产部署版
- 带一键安装脚本的版本
標籤:
- FastGPT
- 生产部署
- DockerCompose
- HTTPS