FastGPT及大模型API(Docker)私有化部署指南

FastGPT及大模型API(Docker)私有化部署指南

image

  经过优化,在不影响FastGPT功能的情况下,大幅降低了部署的设备配置要求,仅需1c1h即可正常部署使用。

  官方要求配置:

image

  优化后的实际占用情况:

  运行内存仅需370M(测试学习场景下)

image

  官方推荐部署容器:

  ​pg

  ​mongo

  ​sandbox

  ​fastgpt

  ​mysql

  ​oneapi

  优化后实际部署容器:

  ​fastgpt

  ​new-api

  ​mongo

  ​sandbox

  ​pg

  优化内容:

  删除mysql容器,降低内存占用。

  将oneapi更换为new-api,原使用的mysql数据库更换为pg数据库。

  使用pg容器作为公共数据库,存储FastGPT的向量数据和new-api的数据。

  ‍

  ‍

  并且优化后不会影响FastGPT的更新及使用。

  ‍

开始部署

  部署前,需要提前配置好docker环境

image

准备配置文件

  首先下载配置文件

curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

  这个暂时不用修改

  创建docker-compose.yml​编排文件,写入以下内容(可根据情况自行更改参数)

  默认对外开放端口:

  12002:FastGPT

  12003:new-api

  12004:pg数据库

# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 dockerhub 和 git,可以用阿里云(阿里云没有arm包)version: '3.3'
services:# dbpg:# image: pgvector/pgvector:0.7.0-pg15 # docker hubimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云container_name: pgrestart: alwaysports: # 生产环境建议不要暴露- 12005:5432networks:- fastgptenvironment:# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果- POSTGRES_USER=username- POSTGRES_PASSWORD=password- POSTGRES_DB=postgresvolumes:- ./pg/data:/var/lib/postgresql/datamongo:# image: mongo:5.0.18 # dockerhubimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云# image: mongo:4.4.29 # cpu不支持AVX时候使用container_name: mongorestart: alwaysports:- 27017:27017networks:- fastgptcommand: mongod --keyFile /data/mongodb.key --replSet rs0environment:- MONGO_INITDB_ROOT_USERNAME=myusername- MONGO_INITDB_ROOT_PASSWORD=mypasswordvolumes:- ./mongo/data:/data/dbentrypoint:- bash- -c- |openssl rand -base64 128 > /data/mongodb.keychmod 400 /data/mongodb.keychown 999:999 /data/mongodb.keyecho 'const isInited = rs.status().ok === 1if(!isInited){rs.initiate({_id: "rs0",members: [{ _id: 0, host: "mongo:27017" }]})}' > /data/initReplicaSet.js# 启动MongoDB服务exec docker-entrypoint.sh "$$@" &# 等待MongoDB服务启动until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; doecho "Waiting for MongoDB to start..."sleep 2done# 执行初始化副本集的脚本mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js# 等待docker-entrypoint.sh脚本执行的MongoDB服务进程wait $$!# fastgptsandbox:container_name: sandbox# image: ghcr.io/labring/fastgpt-sandbox:v4.8.17 # gitimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.17 # 阿里云networks:- fastgptrestart: alwaysfastgpt:container_name: fastgpt# image: ghcr.io/labring/fastgpt:v4.8.17 # gitimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.17 # 阿里云ports:- 12002:3000networks:- fastgptdepends_on:- mongo- pg- sandboxrestart: alwayscpus: '0.65'  # 限制最多使用 1 个 CPU 核心environment:# 前端访问地址: http://localhost:3000- FE_DOMAIN=http://localhost:12002# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。- DEFAULT_ROOT_PSW=1234# AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。- OPENAI_BASE_URL=http://new-api:3000/v1# AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)- CHAT_API_KEY=sk-fastgpt# 数据库最大连接数- DB_MAX_LINK=30# 登录凭证密钥- TOKEN_KEY=any# root的密钥,常用于升级时候的初始化请求- ROOT_KEY=root_key# 文件阅读加密- FILE_TOKEN_KEY=filetoken# MongoDB 连接参数. 用户名myusername,密码mypassword。- MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin# pg 连接参数- PG_URL=postgresql://username:password@pg:5432/postgres# sandbox 地址- SANDBOX_URL=http://sandbox:3000# 日志等级: debug, info, warn, error- LOG_LEVEL=info- STORE_LOG_LEVEL=warnvolumes:- ./config.json:/app/data/config.json# new-apinew-api:image: 1ms.run/calciumion/new-api:latestcontainer_name: new-apirestart: alwayscommand: --log-dir /app/logsports:- 12003:3000volumes:- ./newapi:/data- ./napi-logs:/app/logsnetworks:- fastgptenvironment:- SQL_DSN=postgres://username:password@pg:5432/new-api  # Point to the mysql service# - REDIS_CONN_STRING=redis://redis- TZ=Asia/Shanghai#      - SESSION_SECRET=random_string  # 多机部署时设置,必须修改这个随机字符串!!!!!!!#      - NODE_TYPE=slave  # Uncomment for slave node in multi-node deployment#      - SYNC_FREQUENCY=60  # Uncomment if regular database syncing is needed#      - FRONTEND_BASE_URL=https://openai.justsong.cn  # Uncomment for multi-node deployment with front-end URLhealthcheck:test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]interval: 30stimeout: 10sretries: 3
networks:fastgpt:

  需要重点修改的是fastgpt​容器的环境变量

FE_DOMAIN=  // 前端访问地址
DEFAULT_ROOT_PSW= // 登录密码
OPENAI_BASE_URL= // AI模型的API地址哦。务必加 /v1。编排文件这里默认填写了OneApi的访问地址。
CHAT_API_KEY= //  AI模型的API Key。

  其他内容不重要,按需修改即可

启动容器

  在 docker-compose.yml 同级目录下执行。请确保docker-compose​版本最好在2.17以上,否则可能无法执行自动化命令。

# 启动容器
docker-compose up -d

  打开 ip:12002​ 即可访问FastGPT页面

  后面会继续更新如何添加其他自定义模型

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869251.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LCT

1 概述 首先我们需要知道一类问题,在这类问题中我们需要维护一个森林,支持加边和删边操作,然后要求维护树上的一些信息。这类问题称为动态树问题。 而 LCT,即 Link-Cut Tree,就是用于解决动态树问题的一种数据结构。 学习 LCT 之前需要对 Splay 这种平衡树有一定了解,当然…

git整体使用流程

一、场景说明本地有文件 想在github创建一个远程仓库 在本地修改,同时同步到远端二、流程设置用户名和邮箱目的:标识每次提交者的身份 设置全局用户名:git config --global user.name "Your Name" 设置全局邮箱:git config --global user.email "your.email…

【Linux性能】Linux 下利用 Valgrind 进行内存调试

一、概述 Valgrind 是一个开源的内存调试和性能分析工具,用于帮助开发者找出程序中的内存错误,如内存泄漏、使用未初始化的内存、非法内存访问等问题。它在 Linux 平台上广泛使用,并且支持下多种处理器架构。 二、Valgrind 的使用 2.1 基本格式 valgrind --tool=memcheck -–…

C#/.NET/.NET Core技术前沿周刊 | 第 21 期(2025年1.6-1.12)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

26. 文件操作

一、数据读写在 PySide6 中对文件和文件夹的进行操作时,主要使用 QFile 类、QFileInfo 类和 QDir 类。我们可以在终端中使用 pip 安装 pyside6 模块。 pip install pyside6在 PySide6 窗口程序对文件或者文件夹进行操作时,不强制要求必须使用 PySide6 中提供的 QFile、QDir 等…

MySQL基础函数使用

DQL中的函数 # 官方函数链接 https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format4.1 单行函数函数都是数据库提前给我们准备好的,所以我们可以直接调用,使用函数可以让指定的列计算出我们需要的数据 单行函数 : 指的是操作一行数据…

【模拟电子技术】06-双极晶体管的结构与放大原理

【模拟电子技术】06-双极晶体管的结构与放大原理图(b)中我们可以看到三个区的分类,发射区之所以为发射区是因为掺杂浓度高,才能发射电子出去。而集电区掺杂浓度低,就好比我们想让一个房间当作仓库,那么它的空间肯定要大,里面原本不能是放了很多东西。下图NPN晶体管中发射…

地平线Vision Mamba:超越ViT,最具潜力的下一代通用视觉主干网络

• Vision Mamba 论文链接: https://arxiv.org/abs/2401.09417 • 项目主页: https://github.com/hustvl/Vim 简介 本文的工作Vision Mamba[1]发表在ICML 2024。研究的问题是如何设计新型神经网络来实现高效的视觉表示学习。该任务要求神经网络模型能够在处理高分辨率图像时既…

1.11日报

今天确定了外包杯的队友,但还没想好主题。阅读了开学测试的内容 一开始还没什么头绪

蔡磊:刘强东一直在为我兜底,纵使不胜也绝不屈服

时钟滑到了2025年,蔡磊患病的第五年。自从2024年5月那次感冒把他送进了重症监护室,他的身体机能开始断崖式下降。 但他仍在与生命抢时间,每天从早晨9点到晚上11点排满工作,并制定了2025年规划,虽然一切结果未知,但希望总是在一点点增加。 把冰洞凿得更大一些 如果不是蔡磊…