Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用 clash 作为HTTP代理中转方案,报Connection error. #3378

Open
6 of 7 tasks
chenzipeng1990 opened this issue Dec 12, 2024 · 14 comments
Open
6 of 7 tasks
Labels
bug Something isn't working

Comments

@chenzipeng1990
Copy link

chenzipeng1990 commented Dec 12, 2024

例行检查

  • 我已确认目前没有类似 issue
  • 我已完整查看过项目 README,以及项目文档
  • 我使用了自己的 key,并确认我的 key 是可正常使用的
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

你的版本

  • 公有云版本
  • 私有部署版本, 具体版本号: v4.8.11

问题描述, 日志截图,配置文件等
当前环境:采用docker-compose 方式部署,所有服务都部署在同一个宿主机下,然后采用clash作为http代理(也是同一台机器下)
当前物理机 192.168.43.171,58996为clash混合协议代理端口

参考文档使用docker-compose方式部署,而且fastgpt 容器下配置了

 - AXIOS_PROXY_HOST=192.168.43.171
 - AXIOS_PROXY_PORT=58996

请求后提示报Connection error. 下面是fastgpt容器下的日志
f

中转代理采用clash (部署在同一台宿主机下,clash采用原生部署)
clash规则配置
clash配置

同时查看过 使用fastgpt时clahs的日志,有请求的日志,规则应用信息(说明请求确实到了clash?)
clash日志

同时查看oneapi 相关日志,但是没有找到相关的请求日志(没到oneapi?)
oneapi

后在宿主机下自测curl链接clash能够代理访问到其他容器,如oneapi
下面是curl通过clash代理访问oneapi
WX20241212-093957@2x

附上docker-compose.yaml

# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 dockerhub 和 git,可以用阿里云(阿里云没有arm包)

version: '3.3'
services:

  # db
  pg:
    image: pgvector/pgvector:0.7.0-pg15 # docker hub
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云
    container_name: pg
    restart: always
    ports: # 生产环境建议不要暴露
      - 5432:5432
    networks:
      - fastgpt
    environment:
      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=postgres
    volumes:
      - ./pg/data:/var/lib/postgresql/data
  mongo:
    image: mongo:5.0.18 # dockerhub
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
    # image: mongo:4.4.29 # cpu不支持AVX时候使用
    container_name: mongo
    restart: always
    ports:
      - 27017:27017
    networks:
      - fastgpt
    command: mongod --keyFile /data/mongodb.key --replSet rs0
    environment:
      - MONGO_INITDB_ROOT_USERNAME=myusername
      - MONGO_INITDB_ROOT_PASSWORD=mypassword
    volumes:
      - ./mongo/data:/data/db
    entrypoint:
      - bash
      - -c
      - |
        openssl rand -base64 128 > /data/mongodb.key
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        echo 'const isInited = rs.status().ok === 1
        if(!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; do
          echo "Waiting for MongoDB to start..."
          sleep 2
        done

        # 执行初始化副本集的脚本
        mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js

        # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
        wait $$!

  # fastgpt
  sandbox:
    container_name: sandbox
    image: ghcr.io/labring/fastgpt-sandbox:v4.8.11 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.11 # 阿里云
    networks:
      - fastgpt
    restart: always
  fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:v4.8.11 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.11 # 阿里云
    ports:
      - 3000:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
      - sandbox
    restart: always
    environment:
      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
      - DEFAULT_ROOT_PSW=chenzipeng@1990
      # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
      - OPENAI_BASE_URL=http://192.168.43.171:3001/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
      # 前端地址: http://localhost:3000
      - FE_DOMAIN=
      # 日志等级: debug, info, warn, error
      - LOG_LEVEL=info
      - STORE_LOG_LEVEL=warn
      #代理
      - AXIOS_PROXY_HOST=192.168.43.171
      - AXIOS_PROXY_PORT=58996
    volumes:
      - ./config.json:/app/data/config.json

  # oneapi
  mysql:
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云
    image: mysql:8.0.36
    container_name: mysql
    restart: always
    ports:
      - 3306:3306
    networks:
      - fastgpt
    command: --default-authentication-plugin=mysql_native_password
    environment:
      # 默认root密码,仅首次运行有效
      MYSQL_ROOT_PASSWORD: oneapimmysql
      MYSQL_DATABASE: oneapi
    volumes:
      - ./mysql:/var/lib/mysql
  oneapi:
    container_name: oneapi
    image: ghcr.io/songquanpeng/one-api:v0.6.7
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云
    ports:
      - 3001:3000
    depends_on:
      - mysql
    networks:
      - fastgpt
    restart: always
    environment:
      # mysql 连接参数
      - SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi
      # 登录凭证加密密钥
      - SESSION_SECRET=oneapikey
      # 内存缓存
      - MEMORY_CACHE_ENABLED=true
      # 启动聚合更新,减少数据交互频率
      - BATCH_UPDATE_ENABLED=true
      # 聚合更新时长
      - BATCH_UPDATE_INTERVAL=10
      # 初始化的 root 密钥(建议部署完后更改,否则容易泄露)
      - INITIAL_ROOT_TOKEN=fastgpt
    volumes:
      - ./oneapi:/data
networks:
  fastgpt:
@chenzipeng1990 chenzipeng1990 added the bug Something isn't working label Dec 12, 2024
@c121914yu
Copy link
Collaborator

c121914yu commented Dec 16, 2024

oneapi 没日志,说明都没请求到oneapi。我看你是用ip 链接,不用容器网络,这本身就是个不规范写法,先检查ip 和端口是否正常访问

@chenzipeng1990
Copy link
Author

ip 跟端口验证过,在宿主机上通过 curl 访问代理,可以访问到oneapi去

在fastgpt容器也用通过 curl 做了测试也是可以通过(环境变更,当前代理端口改为7890)
WX20241218-141308@2x

奇怪在 fastgpt 中调用还是connection error
WX20241218-141442@2x

fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:v4.8.11 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.11 # 阿里云
    ports:
      - 3000:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
      - sandbox
    restart: always
    environment:
      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
      - DEFAULT_ROOT_PSW=chenzipeng@1990
      # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
      - OPENAI_BASE_URL=http://192.168.43.171:3001/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
      # 前端地址: http://localhost:3000
      - FE_DOMAIN=
      # 日志等级: debug, info, warn, error
      - LOG_LEVEL=info
      - STORE_LOG_LEVEL=warn
      #代理
      - AXIOS_PROXY_HOST=192.168.43.171
      - AXIOS_PROXY_PORT=7890
    volumes:
      - ./config.json:/app/data/config.json

也试过走容器网络,把clash 也部署在docker中并加入到fastgpt,但是发现也是同样情况

@piwawa
Copy link

piwawa commented Dec 24, 2024

他这个项目贼奇葩,我也是配置了 AXIOS_PROXY_HOST 和 http_proxy 都没法在调用GPT API的时候走代理,容器内部curl都能通google了,docker里编译后的文件还不好定位到源代码,真无语了,只能部署在国外服务器了

@c121914yu
Copy link
Collaborator

c121914yu commented Dec 25, 2024

ip 跟端口验证过,在宿主机上通过 curl 访问代理,可以访问到oneapi去

在fastgpt容器也用通过 curl 做了测试也是可以通过(环境变更,当前代理端口改为7890)
WX20241218-141308@2x

奇怪在 fastgpt 中调用还是connection error
WX20241218-141442@2x

fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:v4.8.11 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.11 # 阿里云
    ports:
      - 3000:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
      - sandbox
    restart: always
    environment:
      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
      - DEFAULT_ROOT_PSW=chenzipeng@1990
      # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
      - OPENAI_BASE_URL=http://192.168.43.171:3001/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
      # 前端地址: http://localhost:3000
      - FE_DOMAIN=
      # 日志等级: debug, info, warn, error
      - LOG_LEVEL=info
      - STORE_LOG_LEVEL=warn
      #代理
      - AXIOS_PROXY_HOST=192.168.43.171
      - AXIOS_PROXY_PORT=7890
    volumes:
      - ./config.json:/app/data/config.json

也试过走容器网络,把clash 也部署在docker中并加入到fastgpt,但是发现也是同样情况

容器网络怎么可能请求不到oneapi,都不需要任何代理。
不理解为什么oneapi已经在一个服务里直接还要代理。为什么不是直接给oneapi配置代理,而要给fastgpt做代理。
如果连oneapi都请求不到,代理有啥用。

@c121914yu
Copy link
Collaborator

ip 跟端口验证过,在宿主机上通过 curl 访问代理,可以访问到oneapi去

在fastgpt容器也用通过 curl 做了测试也是可以通过(环境变更,当前代理端口改为7890)
WX20241218-141308@2x

奇怪在 fastgpt 中调用还是connection error
WX20241218-141442@2x

fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:v4.8.11 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.11 # 阿里云
    ports:
      - 3000:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
      - sandbox
    restart: always
    environment:
      # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
      - DEFAULT_ROOT_PSW=chenzipeng@1990
      # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
      - OPENAI_BASE_URL=http://192.168.43.171:3001/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
      # 前端地址: http://localhost:3000
      - FE_DOMAIN=
      # 日志等级: debug, info, warn, error
      - LOG_LEVEL=info
      - STORE_LOG_LEVEL=warn
      #代理
      - AXIOS_PROXY_HOST=192.168.43.171
      - AXIOS_PROXY_PORT=7890
    volumes:
      - ./config.json:/app/data/config.json

也试过走容器网络,把clash 也部署在docker中并加入到fastgpt,但是发现也是同样情况

你这个测试很奇怪。
你的代理rule只有openai地址,所以请求oneapi时候,压根不会走代理。但是你curl又强制指定了代理地址。

@c121914yu
Copy link
Collaborator

他这个项目贼奇葩,我也是配置了 AXIOS_PROXY_HOST 和 http_proxy 都没法在调用GPT API的时候走代理,容器内部curl都能通google了,docker里编译后的文件还不好定位到源代码,真无语了,只能部署在国外服务器了

因为你自己搞不清那里需要代理

@piwawa
Copy link

piwawa commented Dec 25, 2024

他这个项目贼奇葩,我也是配置了 AXIOS_PROXY_HOST 和 http_proxy 都没法在调用GPT API的时候走代理,容器内部curl都能通google了,docker里编译后的文件还不好定位到源代码,真无语了,只能部署在国外服务器了

因为你自己搞不清那里需要代理

我又没在你这个docker compose里启动oneapi,我自己有另外部署的oneapi,不过服务器在国外,fastgpt在国内,你这小儿科的无聊揣测真可笑

@c121914yu
Copy link
Collaborator

c121914yu commented Dec 25, 2024

他这个项目贼奇葩,我也是配置了 AXIOS_PROXY_HOST 和 http_proxy 都没法在调用GPT API的时候走代理,容器内部curl都能通google了,docker里编译后的文件还不好定位到源代码,真无语了,只能部署在国外服务器了

因为你自己搞不清那里需要代理

我又没在你这个docker compose里启动oneapi,我自己有另外部署的oneapi,不过服务器在国外,fastgpt在国内,你这小儿科的无聊揣测真可笑

那就搞笑了,分离的代理都配不明白。

@piwawa
Copy link

piwawa commented Dec 25, 2024

他这个项目贼奇葩,我也是配置了 AXIOS_PROXY_HOST 和 http_proxy 都没法在调用GPT API的时候走代理,容器内部curl都能通google了,docker里编译后的文件还不好定位到源代码,真无语了,只能部署在国外服务器了

因为你自己搞不清那里需要代理

我又没在你这个docker compose里启动oneapi,我自己有另外部署的oneapi,不过服务器在国外,fastgpt在国内,你这小儿科的无聊揣测真可笑

那就搞笑了,分离的代理都配不明白。

呵呵 反正我已经在国内服务器解决了 只能说你这个代理配置就是奇葩 和正常项目不太一样 随你得瑟

@c121914yu
Copy link
Collaborator

他这个项目贼奇葩,我也是配置了 AXIOS_PROXY_HOST 和 http_proxy 都没法在调用GPT API的时候走代理,容器内部curl都能通google了,docker里编译后的文件还不好定位到源代码,真无语了,只能部署在国外服务器了

因为你自己搞不清那里需要代理

我又没在你这个docker compose里启动oneapi,我自己有另外部署的oneapi,不过服务器在国外,fastgpt在国内,你这小儿科的无聊揣测真可笑

还揣测真搞笑,也不看看自己问题描述有多垃圾,好好学学人家楼主。

@piwawa
Copy link

piwawa commented Dec 25, 2024

他这个项目贼奇葩,我也是配置了 AXIOS_PROXY_HOST 和 http_proxy 都没法在调用GPT API的时候走代理,容器内部curl都能通google了,docker里编译后的文件还不好定位到源代码,真无语了,只能部署在国外服务器了

因为你自己搞不清那里需要代理

我又没在你这个docker compose里启动oneapi,我自己有另外部署的oneapi,不过服务器在国外,fastgpt在国内,你这小儿科的无聊揣测真可笑

还揣测真搞笑,也不看看自己问题描述有多垃圾,好好学学人家楼主。

没必要 言简意赅才是重点 楼主也不差 但还轮不到你来教我

@c121914yu
Copy link
Collaborator

他这个项目贼奇葩,我也是配置了 AXIOS_PROXY_HOST 和 http_proxy 都没法在调用GPT API的时候走代理,容器内部curl都能通google了,docker里编译后的文件还不好定位到源代码,真无语了,只能部署在国外服务器了

因为你自己搞不清那里需要代理

我又没在你这个docker compose里启动oneapi,我自己有另外部署的oneapi,不过服务器在国外,fastgpt在国内,你这小儿科的无聊揣测真可笑

还揣测真搞笑,也不看看自己问题描述有多垃圾,好好学学人家楼主。

没必要 言简意赅才是重点 楼主也不差 但还轮不到你来教我

这话说的,搞得你比楼主牛逼一样。

@piwawa
Copy link

piwawa commented Dec 25, 2024

楼主很强 比你我都强 满足了吧 不和你浪费生命了 coding去咯

@c121914yu
Copy link
Collaborator

楼主很强 比你我都强 满足了吧 不和你浪费生命了 coding去咯

菜就多练,还牛逼哄哄,没见你给别人解决下,不知道得瑟个啥。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants