前段时间了解到了dify这个开源的 LLM 应用开发平台,通过这个平台可以很方便的部署自己的大模型。
尝试在本地电脑上通过docker部署,发现镜像无法拉取,不确定是不是受前段时间docker hub下架的影响。
放弃了dify转而投降了fastgpt,跟dify是同一类产品,虽然据说功能没有dify强大,但是作为个人体验还是不错的。
以下为本地部署步骤,本地电脑配置:rtx3060 12显存+32g内存。
准备 Docker 环境
下载安装docker-desktop
开始部署
1. 下载 docker-compose.yml
非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载配置文件和对应版本的docker-compose.yml
- config.json
- docker-compose.yml (注意,不同向量库版本的文件不一样)
所有 docker-compose.yml 配置文件中 MongoDB 为 5.x,需要用到AUX指令集,部分 CPU 不支持,需手动更改其镜像版本为 4.4.24**(需要自己在docker hub下载,阿里云镜像没做备份)
Linux 快速脚本
mkdir fastgpt\ncd fastgpt\ncurl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json\n\n# pgvector 版本(测试推荐,简单快捷)\ncurl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml\n# milvus 版本\n# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-milvus.yml\n# zilliz 版本\n# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-zilliz.yml\n2. 修改 docker-compose.yml 环境变量
这一步骤我下载的是docker-compose-pgvector 文件,修改后的配置内容如下:
\n# 数据库的默认账号和密码仅首次运行时设置有效\n# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~\n# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。\n# 如何无法访问 dockerhub 和 git,可以用阿里云(阿里云没有arm包)\n\nversion: '3.3'\nservices:\n # db\n pg:\n # image: pgvector/pgvector:latest # docker hub\n image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云\n container_name: pg\n restart: always\n ports: # 生产环境建议不要暴露\n - 5432:5432\n networks:\n - fastgpt\n environment:\n # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果\n - POSTGRES_USER=username\n - POSTGRES_PASSWORD=password\n - POSTGRES_DB=postgres\n volumes:\n - ./pg/data:/var/lib/postgresql/data\n mongo:\n image: mongo:latest # dockerhub\n # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云\n # image: mongo:4.4.29 # cpu不支持AVX时候使用\n container_name: mongo\n restart: always\n ports:\n - 27017:27017\n networks:\n - fastgpt\n command: mongod --keyFile /data/mongodb.key --replSet rs0\n environment:\n - MONGO_INITDB_ROOT_USERNAME=myusername\n - MONGO_INITDB_ROOT_PASSWORD=mypassword\n volumes:\n - ./mongo/data:/data/db\n entrypoint:\n - bash\n - -c\n - |\n openssl rand -base64 128 > /data/mongodb.key\n chmod 400 /data/mongodb.key\n chown 999:999 /data/mongodb.key\n echo 'const isInited = rs.status().ok === 1\n if(!isInited){\n rs.initiate({\n _id: "rs0",\n members: [\n { _id: 0, host: "mongo:27017" }\n ]\n })\n }' > /data/initReplicaSet.js\n # 启动MongoDB服务\n exec docker-entrypoint.sh "$$@" &\n\n # 等待MongoDB服务启动\n until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do\n echo "Waiting for MongoDB to start..."\n sleep 2\n done\n\n # 执行初始化副本集的脚本\n mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js\n\n # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程\n wait $$!\n\n # fastgpt\n sandbox:\n container_name: sandbox\n image: ghcr.io/labring/fastgpt-sandbox:v4.8.4 # git\n # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.4 # 阿里云\n networks:\n - fastgpt\n restart: always\n fastgpt:\n container_name: fastgpt\n image: ghcr.io/labring/fastgpt:v4.8.4 # git\n # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.4 # 阿里云\n ports:\n - 3060:3000\n networks:\n - fastgpt\n depends_on:\n - mongo\n - pg\n - sandbox\n restart: always\n environment:\n # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。\n - DEFAULT_ROOT_PSW=1234\n # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。\n - OPENAI_BASE_URL=http://host.docker.internal:3001/v1\n # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)\n - CHAT_API_KEY=sk-4RKe66ackr7v7iFxD0E58bDbF2104a92Af81A8De47C643F6\n # 数据库最大连接数\n - DB_MAX_LINK=30\n # 登录凭证密钥\n - TOKEN_KEY=any\n # root的密钥,常用于升级时候的初始化请求\n - ROOT_KEY=root_key\n # 文件阅读加密\n - FILE_TOKEN_KEY=filetoken\n # MongoDB 连接参数. 用户名myusername,密码mypassword。\n - MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin\n # pg 连接参数\n - PG_URL=postgresql://username:password@pg:5432/postgres\n # sandbox 地址\n - SANDBOX_URL=http://sandbox:3000\n # 日志等级: debug, info, warn, error\n - LOG_LEVEL=info\n volumes:\n - ./config.json:/app/data/config.json\n\n # oneapi\n mysql:\n image: mysql:latest\n container_name: mysql\n restart: always\n ports:\n - 3306:3306\n networks:\n - fastgpt\n command: --default-authentication-plugin=mysql_native_password\n environment:\n # 默认root密码,仅首次运行有效\n MYSQL_ROOT_PASSWORD: oneapimmysql\n MYSQL_DATABASE: oneapi\n volumes:\n - ./mysql:/var/lib/mysql\n oneapi:\n container_name: oneapi\n image: ghcr.io/songquanpeng/one-api:latest\n ports:\n - 3001:3000\n depends_on:\n - mysql\n networks:\n - fastgpt\n restart: always\n environment:\n # mysql 连接参数\n - SQL_DSN=root:oneapimmysql@tcp(host.docker.internal:3306)/oneapi\n # 登录凭证加密密钥\n - SESSION_SECRET=oneapikey\n # 内存缓存\n - MEMORY_CACHE_ENABLED=true\n # 启动聚合更新,减少数据交互频率\n - BATCH_UPDATE_ENABLED=true\n # 聚合更新时长\n - BATCH_UPDATE_INTERVAL=10\n # 初始化的 root 密钥(建议部署完后更改,否则容易泄露)\n - INITIAL_ROOT_TOKEN=fastgpt\n volumes:\n - ./oneapi:/data\nnetworks:\n fastgpt:\n主要改动:
1、fastgpt中的OPENAI_BASE_URLdocker地址:
http://host.docker.internal:3001/v12、mysql的地址改为:
SQL_DSN=root:oneapimmysql@tcp(host.docker.internal:3306)/oneapi3. 启动容器
在 docker-compose.yml 同级目录下执行。请确保docker-compose版本最好在2.17以上,否则可能无法执行自动化命令。
# 启动容器\ndocker-compose up -d\n# 等待10s,OneAPI第一次总是要重启几次才能连上Mysql\nsleep 10\n# 重启一次oneapi(由于OneAPI的默认Key有点问题,不重启的话会提示找不到渠道,临时手动重启一次解决,等待作者修复)\ndocker restart oneapi\n特别注意的是过十秒钟再重启oneapi服务。
4. 打开 OneAPI 添加模型
可以通过ip:3001访问OneAPI,默认账号为root密码为123456。
在OneApi中添加合适的AI模型渠道。点击查看相关教程
5. 访问 FastGPT
目前可以通过 ip:3000 直接访问(注意防火墙)。登录用户名为 root,密码为docker-compose.yml环境变量里设置的 DEFAULT_ROOT_PSW。
如果需要域名访问,请自行安装并配置 Nginx。
首次运行,会自动初始化 root 用户,密码为 1234(与环境变量中的DEFAULT_ROOT_PSW一致),日志里会提示一次MongoServerError: Unable to read from a snapshot due to pending collection catalog changes;可忽略。
开,,开源的 LLM 应用开发平台源的 LLM 应用开发平台源的 L开源的 LLM 应用开发平台LM 应用开发平台开源的 LLM 应用开发平台