FastGPT 生产部署实战:从 Docker Compose 到 HTTPS、备份与升级全流程
问答社区 2026-06-18 04:16 6

FastGPT 生产环境部署指南|附完整命令

FastGPT 是一套面向企业知识库问答、工作流编排和大模型应用落地的开源平台。很多人第一次上手时,通常是在本地通过 Docker 跑起来做体验;但真正进入生产环境后,部署方式、网络安全、数据持久化、日志、升级和备份,都会变成必须认真考虑的问题。

这篇文章会以 Linux 服务器 + Docker Compose 为主线,手把手讲清楚 FastGPT 的生产环境部署思路,并附上尽量完整、可直接参考的命令。文章目标不是“能跑就行”,而是帮助你部署出一个更稳、更可维护、更接近生产标准的 FastGPT 服务。


一、部署前先明确架构

FastGPT 生产环境通常至少包含以下几个部分:

  • FastGPT Web/API 服务
  • MongoDB:存储业务数据
  • MySQL:存储部分结构化数据
  • Redis:缓存与任务队列
  • OneAPI / OpenAI 接口转发服务:用于统一管理模型调用
  • 反向代理:Nginx 或 Caddy,用于域名、HTTPS、访问控制

如果你只是在测试阶段,可以先简化为单机 Docker Compose;如果是正式生产,建议至少做到:

  1. 数据库与应用分离;
  2. 所有数据卷持久化;
  3. 配置文件独立管理;
  4. 对外只暴露必要端口;
  5. 开启 HTTPS;
  6. 定期备份数据库与文件卷。

二、服务器准备

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_PASSWORD
  • MYSQL_ROOT_PASSWORD
  • MYSQL_PASSWORD
  • REDIS_PASSWORD
  • JWT_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