故障排查深度场景内容11 分钟阅读决策矩阵页

离线与内网部署选型:镜像来源、可用能力边界与访问链路怎么定

本页提供了一份决策矩阵,帮助企业技术负责人与采购方在无外网环境下,评估FastGPT离线部署方案。矩阵从镜像来源、能力边界和访问链路等多个维度,提供可核对的取值,以辅助决策。

这个决定什么时候必须做

在企业技术架构规划中,当部署环境明确为无外网访问能力时,关于FastGPT的离线与内网部署选型就成为一个必须立即解决的关键问题。这种限制通常出现在涉密网络、金融机构、政府部门或对数据安全有极高要求的私有云环境中。过早做出决策可能导致不必要的资源投入,例如提前采购不匹配的硬件或软件许可,或者在尚未明确业务需求时锁定技术路线,增加后期调整的成本。例如,如果初期评估对外部模型依赖较轻,但后期业务快速发展,需要集成更多外部AI能力,则早期选择完全隔离的方案将面临巨大的改造工作量。

然而,过晚做出决策则会带来更大的风险和代价。如果等到项目开发后期或上线前才考虑离线部署,可能发现所需的镜像无法从公共仓库获取,导致部署延期;或者发现内网环境对某些组件的访问限制,需要重新设计网络架构,甚至推翻部分已完成的开发工作。例如,如果在无外网环境下,FastGPT主服务无法访问外部的GitHub API获取版本信息,可能导致前端页面显示异常或功能缺失。此外,如果未提前规划好内部镜像仓库和代理服务,将面临组件版本管理混乱、安全漏洞无法及时修补、以及新功能无法引入等一系列问题。因此,在项目启动初期,明确无外网部署的需求,并基于业务对AI能力、数据存储和网络访问的边界需求,进行审慎的方案评估和选择,是确保项目顺利推进的关键。

判据矩阵

候选方案镜像来源数据库部署模式对象存储访问链路外部AI模型访问链路内网代理支持PDF增强解析服务部署
方案一:完全离线部署 (本地镜像仓库)自建私有镜像仓库(如Harbor),预拉取所有Docker镜像(pgvector:0.7.0-pg15, mongo:5.0.18, redis:6.2.4, minio:RELEASE.2025-04-22T22-12-26Z, ghcr.io/labring/fastgpt:latest 等)容器化部署(Docker Compose),所有组件在同一宿主机或内网Docker网络STORAGE_S3_ENDPOINT 配置为内部MinIO服务名或IP,STORAGE_EXTERNAL_ENDPOINT 可配置为内部反向代理地址或不配置(存在XSS风险)OPENAI_BASE_URL 配置为内部OneAPI或AI Proxy服务地址支持(通过配置 AXIOS_PROXY_HOST 和 AXIOS_PROXY_PORT)容器化部署,Doc2x服务内嵌
方案二:内网受限部署 (阿里云/其他私有云镜像仓库)阿里云镜像仓库(registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0, registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 等)容器化部署(Docker Compose),所有组件在同一宿主机或内网Docker网络STORAGE_S3_ENDPOINT 配置为内部MinIO服务名或IP,STORAGE_EXTERNAL_ENDPOINT 可配置为内部反向代理地址或不配置(存在XSS风险)OPENAI_BASE_URL 配置为内部OneAPI或AI Proxy服务地址支持(通过配置 AXIOS_PROXY_HOST 和 AXIOS_PROXY_PORT)容器化部署,Doc2x服务内嵌
方案三:部分组件外部化部署 (数据库/MinIO独立)自建私有镜像仓库或阿里云镜像仓库外部独立数据库(MongoDB, PostgreSQL, Redis),通过内网IP或域名连接外部独立MinIO服务,通过内网IP或域名连接 S3_EXTERNAL_BASE_URL 和 S3_ENDPOINTOPENAI_BASE_URL 配置为内部OneAPI或AI Proxy服务地址支持(通过配置 AXIOS_PROXY_HOST 和 AXIOS_PROXY_PORT)容器化部署,Doc2x服务内嵌

每个判据为什么重要

镜像来源:在无外网环境下,镜像来源决定了部署的起点和持续维护的便利性。如果依赖公共Docker Hub或GitHub Container Registry,则必须提前将所有所需镜像拉取到本地私有镜像仓库,并确保仓库的可用性和版本管理。如果选择阿里云等私有云的镜像仓库,则需要确保内网与该私有云仓库的连通性。镜像来源的稳定性直接影响到首次部署的成功率和后续版本升级的便捷性。例如,如果无法访问公共镜像仓库,新版本更新将无法进行,导致无法获得新功能或安全补丁。

数据库部署模式:数据库是FastGPT的核心存储层,其部署模式直接影响到系统的性能、可扩展性和运维复杂度。容器化部署(如Docker Compose)通常更易于快速启动和管理,但可能在资源隔离和高级运维方面存在局限。将数据库部署在外部独立服务器上,可以利用现有数据库基础设施,实现更好的性能调优、备份恢复策略和高可用性。然而,这需要额外的网络配置和连接参数调整,例如 MONGODB_URI、PG_URL、REDIS_URL 等环境变量的准确配置。不当的数据库部署模式可能导致连接错误、性能瓶颈或数据丢失。

对象存储访问链路:FastGPT使用对象存储(如MinIO)来存储文件和数据。在无外网环境下,对象存储的访问链路至关重要。STORAGE_S3_ENDPOINT 配置为内部MinIO服务名或IP,确保FastGPT容器可以内部访问MinIO。STORAGE_EXTERNAL_ENDPOINT 用于签发文件上传URL,如果配置错误或不可用,可能导致文件上传失败,甚至FastGPT主服务无法启动。例如,如果 STORAGE_EXTERNAL_ENDPOINT 配置为 localhost 或 127.0.0.1,容器内部无法正确解析,将出现 ECONNREFUSED 错误。

外部AI模型访问链路:FastGPT通常需要与AI模型进行交互,这些模型可能部署在内部,也可能通过代理访问。在无外网环境下,需要将 OPENAI_BASE_URL 配置为内部OneAPI或AI Proxy服务地址,确保FastGPT可以正确路由请求。如果配置不当,将导致FastGPT无法调用AI模型,出现“Connection error”或“model config not found”等错误。此外,AI Proxy或OneAPI本身也需要正确的模型配置和密钥管理。

内网代理支持:在某些复杂的内网环境中,可能需要通过HTTP代理才能访问内部其他服务或特定资源。FastGPT支持通过配置 AXIOS_PROXY_HOST 和 AXIOS_PROXY_PORT 来指定代理。如果内网环境要求使用代理,但未正确配置,则可能导致FastGPT无法与其他服务(如OneAPI)正常通信,出现“Connection error”。即使代理服务存在,如果配置的IP或端口不正确,也会导致连接失败。

PDF增强解析服务部署:FastGPT的PDF增强解析功能依赖Doc2x服务。在无外网环境下,Doc2x服务需要与FastGPT一同在内网部署。这通常意味着需要将Doc2x的Docker镜像也纳入私有镜像仓库管理,并确保FastGPT可以正确访问到Doc2x服务。如果Doc2x服务部署失败或FastGPT无法连接,将导致PDF文件无法进行增强解析,影响知识库的构建和应用效果。

换的代价

一旦选定了一种离线部署方案并投入实施,中途切换到另一种方案将面临显著的代价。

数据迁移代价:如果最初选择容器化部署数据库,后期决定切换到外部独立数据库,需要进行复杂的数据迁移工作。这包括MongoDB、PostgreSQL和Redis的数据导出、导入,以及数据一致性校验。数据迁移过程中可能存在数据丢失或损坏的风险,尤其是在处理大量知识库数据和用户会话数据时。如果对象存储从容器内MinIO切换到外部MinIO,也需要进行文件数据的迁移和路径更新。

索引重建代价:FastGPT使用向量数据库进行知识库索引。更换数据库实例或调整存储策略可能需要重新构建或同步索引。如果MongoDB中存在重复数据,启用索引同步可能导致 E11000 duplicate key error。索引重建是一个计算密集型任务,会消耗大量时间和计算资源,期间可能影响系统的查询性能和可用性。

停机窗口代价:任何涉及核心组件(数据库、对象存储、FastGPT主服务)的切换都需要一定的停机窗口。在生产环境中,这意味着业务中断,给用户带来不便。停机窗口的长度取决于数据量、迁移复杂度以及验证工作的彻底性。如果预估不足,可能导致停机时间超出预期。

验证工作量代价:切换方案后,需要对整个系统进行全面的回归测试和性能验证。这包括FastGPT主服务的各项功能、知识库的导入与查询、模型调用、文件上传下载、插件功能等。需要验证所有环境变量、网络配置、服务间通信是否正常,确保新方案下的系统稳定性和性能符合预期。例如,Nginx代理配置、沙盒组件的API Key一致性、以及各种密钥(TOKEN_KEY, AES256_SECRET_KEY, FILE_TOKEN_KEY)的正确性都需要重新验证。

环境配置与网络调整代价:更换部署方案通常意味着对 docker-compose.yml 文件、环境变量、内网网络路由和防火墙规则进行大量修改。例如,将数据库从 depends_on 中移除并配置为外部连接地址,或者调整MinIO的 STORAGE_EXTERNAL_ENDPOINT。这些调整需要专业的网络和运维知识,且容易引入新的配置错误,导致系统不稳定。

什么情况下这个决定可以先不做

在某些特定场景下,关于无外网环境部署的详细决策可以暂时搁置,但需要明确前提条件和后续的触发点。如果业务初期对AI能力的需求不明确,或者FastGPT仅作为概念验证(PoC)项目在隔离但可控的测试环境中运行,且该环境短期内具备有限的外网访问能力(例如,可以通过跳板机或临时网络策略进行镜像拉取和初始化配置),则可以暂时使用公共镜像仓库进行部署。

此外,如果FastGPT主要用于处理非敏感数据,且不涉及外部AI模型调用,仅利用其本地计算和存储能力,那么对外部AI模型访问链路和代理支持的详细评估可以延后。在这种情况下,可以先部署核心服务,待业务需求明确或数据敏感性提升时,再深入评估和实施完全离线或内网受限的方案。

然而,一旦以下任一条件成立,该决策就必须立即提上日程:

  1. 项目从PoC阶段进入生产环境部署,数据敏感性提高。
  2. 明确部署环境将永久性断开外网连接。
  3. 业务需求开始依赖外部AI模型或需要集成更多外部服务。
  4. 需要进行版本升级或引入新的组件,且无法通过临时外网访问获取所需资源。

推迟决策的前提是风险可控且有明确的触发机制,否则将为未来的部署和运维埋下隐患。

继续阅读

参考资料

需要进一步确认时

上述判据可依据公开文档与部署实测逐项核对。若需要结合具体业务规模、数据边界与运维条件确定选型,可通过商务咨询获取评估支持;云服务形态可直接开始使用,先验证业务可行性再决定部署形态。

  • 商务咨询:结合业务条件做选型评估
  • 立即开始:先用云服务验证可行性
  • 定价:对比不同形态的适用范围